啟動
IdentityServer的啟動是中間件和服務的組合來實作的。 所有配置都在你的啟動類(Startup.cs)中完成。
配置服務
通過以下方式調用将IdentityServer服務添加到DI系統:
public void ConfigureServices(IServiceCollection services)
{
var builder = services.AddIdentityServer();
}
複制
這将傳回一個生成器對象,而這個對象又有一些友善的方法來連接配接其他的服務。
密鑰
-
添加一個簽名密鑰服務,該服務将指定的密鑰提供給各種令牌建立/驗證服務。 您可以傳入AddSigningCredential
,X509Certificate2
或對證書存儲區中證書的引用。SigningCredential
-
在啟動時建立臨時密鑰。 這是僅用于開發場景,當您沒有證書使用。 生成的密鑰将被儲存到檔案系統,以便在伺服器重新啟動之間保持穩定(可以通過傳遞false來禁用)。 這解決了在開發期間client / api中繼資料緩存不同步的問題。AddDeveloperSigningCredential
-
添加驗證令牌的密鑰。 它們将被内部令牌驗證器使用,并将顯示在發現文檔中。 您可以傳入AddValidationKey
,X509Certificate2
或對證書存儲區中證書的引用。 這對于關鍵的轉換場景很有用。SigningCredential
記憶體存儲配置
各種“in-memory“配置API允許從配置對象的記憶體清單配置IdentityServer。 這些“in-memory”的集合可以在宿主應用程式中進行寫死,也可以從配置檔案或資料庫動态加載。 但是,在設計時,隻有托管應用程式啟動時才會建立這些集合。
使用這些配置API可用于原型設計,開發和/或測試時不需要在運作時動态查詢配置資料的資料庫。 如果配置很少改變,這種配置方式也可能适用于生産方案,或者如果必須更改值,則需要重新啟動應用程式并不友善。
-
添加基于AddInMemoryClients
和IClientStore
的記憶體集合注冊實作,以注冊用戶端配置對象。ICorsPolicyService
-
添加基于AddInMemoryIdentityResources
的IResourceStore
的記憶體集合注冊實作,以注冊身份驗證資源。IdentityResource
-
添加基于AddInMemoryApiResources
的IResourceStore
的記憶體集合注冊實作,以注冊API資源。ApiResource
測試存儲
TestUser
類在IdentityServer中模拟使用者,憑據和聲明。
TestUser
的使用與使用“in-memory”存儲類似,因為它适用于原型開發和/或測試。 生産中不推薦使用
TestUser
。
-
基于AddTestUsers
的TestUserStore
對象的集合注冊實作。 還注冊TestUser
和IProfileService
的實作。IResourceOwnerPasswordValidator
額外服務
-
添加用于擴充授權的AddExtensionGrantValidator
實作。IExtensionGrantValidator
-
添加用于解析用戶端或API資源憑證的AddSecretParser
實作。ISecretParser
-
添加AddSecretValidator
實作,以針對憑證存儲驗證用戶端或API資源憑證。ISecretValidator
-
IResourceOwnerPasswordValidator`實作,用于驗證資源所有者密碼憑據授權類型的使用者憑證。AddResourceOwnerValidator 添加
-
IProfileServiceAddProfileService 添加
DefaultProfileService`類提供了預設實作,它依靠身份驗證cookie作為唯一的令牌發放源。以實作連接配接到您的自定義使用者配置檔案存儲。
-
添加AddAuthorizeInteractionResponseGenerator
實作來在授權端點定制邏輯,以便顯示使用者錯誤,登入,同意或任何其他自定義頁面的UI。 AuthorizeInteractionResponseGenerator類提供了一個預設的實作,是以如果需要增加現有的行為,可以考慮從這個現有的類派生。IAuthorizeInteractionResponseGenerator
-
添加AddCustomAuthorizeRequestValidator
實作,以在授權端點定制請求參數驗證。ICustomAuthorizeRequestValidator
-
添加AddCustomTokenRequestValidator
實作來定制令牌端點處的請求參數驗證。ICustomTokenRequestValidator
-
添加AddRedirectUriValidator
實作來自定義重定向URI驗證。IRedirectUriValidator
-
添加一個“AppAuth”(OAuth 2.0 for Native Apps)相容的重定向URI驗證器(進行嚴格的驗證,但也允許随機端口為http://127.0.0.1)。AddAppAuthRedirectUriValidator
-
使用JWT對客戶機認證的支援。AddJwtBearerClientAuthentication
緩存
用戶端和資源配置資料經常被IdentityServer使用。 如果從資料庫或其他外部存儲裝載此資料,那麼頻繁地重新加載相同的資料代價可能是昂貴的。
-
要使用下面描述的任何緩存,必須在DI中注冊ICache的實作。 此API注冊基于ASP.NET Core的ICache 的MemoryCache預設記憶體緩存實作。AddInMemoryCaching
-
注冊一個AddClientStoreCache
裝飾器實作,它将維護用戶端配置對象的記憶體緩存。 緩存持續時間可以在IClientStore
上的緩存配置選項上配置。IdentityServerOptions
-
注冊一個AddResourceStoreCache
裝飾器實作,它将維護IResourceStore
和IdentityResource
配置對象的記憶體緩存。 緩存持續時間可以在ApiResource
上的緩存配置選項上配置。IdentityServerOptions
-
注冊一個AddCorsPolicyCache
裝飾器實作,它将維護一個CORS政策服務評估結果的記憶體緩存。 緩存持續時間可以在IdentityServerOptions上的緩存配置選項上配置。ICorsPolicyService
可以進一步定制緩存:
預設緩存依賴于ICache實作。 如果您希望自定義特定配置對象的緩存行為,則可以在依賴注入系統中替換此實作。
ICache<T>
的預設實作依賴于.NET提供的
IMemoryCache
接口(和
MemoryCache
實作)。 如果您希望自定義記憶體中的緩存行為,則可以替換依賴注入系統中的
IMemoryCache
實作。
配置中間件
您需要通過以下方式調用将IdentityServer添加到管道中:
public void Configure(IApplicationBuilder app)
{
app.UseIdentityServer();
}
複制
包含對
UseIdentityServer
的調用,是以沒有必要同時調用這兩個。
UseAuthentication
中間件沒有額外的配置。
請注意,添加順序在管道配置中很重要。 例如,您需要在添加MVC中間件之前添加IdentitySever。