IdentityServer Topics(1)- 启动说明
啟動
IdentityServer的啟動是中間件和服務(wù)的組合來實現(xiàn)的。 所有配置都在你的啟動類(Startup.cs)中完成。
配置服務(wù)
通過以下方式調(diào)用將IdentityServer服務(wù)添加到DI系統(tǒng):
public void ConfigureServices(IServiceCollection services) {var builder = services.AddIdentityServer(); }這將返回一個生成器對象,而這個對象又有一些方便的方法來連接其他的服務(wù)。
密鑰
AddSigningCredential
添加一個簽名密鑰服務(wù),該服務(wù)將指定的密鑰提供給各種令牌創(chuàng)建/驗證服務(wù)。 您可以傳入X509Certificate2,SigningCredential或?qū)ψC書存儲區(qū)中證書的引用。AddDeveloperSigningCredential
在啟動時創(chuàng)建臨時密鑰。 這是僅用于開發(fā)場景,當(dāng)您沒有證書使用。 生成的密鑰將被保存到文件系統(tǒng),以便在服務(wù)器重新啟動之間保持穩(wěn)定(可以通過傳遞false來禁用)。 這解決了在開發(fā)期間client / api元數(shù)據(jù)緩存不同步的問題。AddValidationKey
添加驗證令牌的密鑰。 它們將被內(nèi)部令牌驗證器使用,并將顯示在發(fā)現(xiàn)文檔中。 您可以傳入X509Certificate2,SigningCredential或?qū)ψC書存儲區(qū)中證書的引用。 這對于關(guān)鍵的轉(zhuǎn)換場景很有用。
內(nèi)存存儲配置
各種“in-memory“配置API允許從配置對象的內(nèi)存列表配置IdentityServer。 這些“in-memory”的集合可以在宿主應(yīng)用程序中進(jìn)行硬編碼,也可以從配置文件或數(shù)據(jù)庫動態(tài)加載。 但是,在設(shè)計時,只有托管應(yīng)用程序啟動時才會創(chuàng)建這些集合。
使用這些配置API可用于原型設(shè)計,開發(fā)和/或測試時不需要在運行時動態(tài)查詢配置數(shù)據(jù)的數(shù)據(jù)庫。 如果配置很少改變,這種配置方式也可能適用于生產(chǎn)方案,或者如果必須更改值,則需要重新啟動應(yīng)用程序并不方便。
AddInMemoryClients
添加基于IClientStore和ICorsPolicyService的內(nèi)存集合注冊實現(xiàn),以注冊客戶端配置對象。AddInMemoryIdentityResources
添加基于IResourceStore的IdentityResource的內(nèi)存集合注冊實現(xiàn),以注冊身份驗證資源。AddInMemoryApiResources
添加基于IResourceStore的ApiResource的內(nèi)存集合注冊實現(xiàn),以注冊API資源。
測試存儲
TestUser類在IdentityServer中模擬用戶,憑據(jù)和聲明。 TestUser的使用與使用“in-memory”存儲類似,因為它適用于原型開發(fā)和/或測試。 生產(chǎn)中不推薦使用TestUser。
- AddTestUsers
基于TestUserStore的TestUser對象的集合注冊實現(xiàn)。 還注冊IProfileService和IResourceOwnerPasswordValidator的實現(xiàn)。
額外服務(wù)
AddExtensionGrantValidator
添加用于擴(kuò)展授權(quán)的IExtensionGrantValidator實現(xiàn)。AddSecretParser
添加用于解析客戶端或API資源憑證的ISecretParser實現(xiàn)。AddSecretValidator
添加ISecretValidator實現(xiàn),以針對憑證存儲驗證客戶端或API資源憑證。AddResourceOwnerValidator 添加IResourceOwnerPasswordValidator`實現(xiàn),用于驗證資源所有者密碼憑據(jù)授權(quán)類型的用戶憑證。
AddProfileService 添加IProfileService以實現(xiàn)連接到您的自定義用戶配置文件存儲。DefaultProfileService`類提供了默認(rèn)實現(xiàn),它依靠身份驗證cookie作為唯一的令牌發(fā)放源。
AddAuthorizeInteractionResponseGenerator
添加IAuthorizeInteractionResponseGenerator實現(xiàn)來在授權(quán)端點定制邏輯,以便顯示用戶錯誤,登錄,同意或任何其他自定義頁面的UI。 AuthorizeInteractionResponseGenerator類提供了一個默認(rèn)的實現(xiàn),因此如果需要增加現(xiàn)有的行為,可以考慮從這個現(xiàn)有的類派生。AddCustomAuthorizeRequestValidator
添加ICustomAuthorizeRequestValidator實現(xiàn),以在授權(quán)端點定制請求參數(shù)驗證。AddCustomTokenRequestValidator
添加ICustomTokenRequestValidator實現(xiàn)來定制令牌端點處的請求參數(shù)驗證。AddRedirectUriValidator
添加IRedirectUriValidator實現(xiàn)來自定義重定向URI驗證。AddAppAuthRedirectUriValidator
添加一個“AppAuth”(OAuth 2.0 for Native Apps)兼容的重定向URI驗證器(進(jìn)行嚴(yán)格的驗證,但也允許隨機(jī)端口為http://127.0.0.1)。AddJwtBearerClientAuthentication
使用JWT對客戶機(jī)認(rèn)證的支持。
緩存
客戶端和資源配置數(shù)據(jù)經(jīng)常被IdentityServer使用。 如果從數(shù)據(jù)庫或其他外部存儲裝載此數(shù)據(jù),那么頻繁地重新加載相同的數(shù)據(jù)代價可能是昂貴的。
AddInMemoryCaching
要使用下面描述的任何緩存,必須在DI中注冊ICache的實現(xiàn)。 此API注冊基于ASP.NET Core的ICache 的MemoryCache默認(rèn)內(nèi)存緩存實現(xiàn)。AddClientStoreCache
注冊一個IClientStore裝飾器實現(xiàn),它將維護(hù)客戶端配置對象的內(nèi)存緩存。 緩存持續(xù)時間可以在IdentityServerOptions上的緩存配置選項上配置。AddResourceStoreCache
注冊一個IResourceStore裝飾器實現(xiàn),它將維護(hù)IdentityResource和ApiResource配置對象的內(nèi)存緩存。 緩存持續(xù)時間可以在IdentityServerOptions上的緩存配置選項上配置。AddCorsPolicyCache
注冊一個ICorsPolicyService裝飾器實現(xiàn),它將維護(hù)一個CORS策略服務(wù)評估結(jié)果的內(nèi)存緩存。 緩存持續(xù)時間可以在IdentityServerOptions上的緩存配置選項上配置。
可以進(jìn)一步定制緩存:
默認(rèn)緩存依賴于ICache實現(xiàn)。 如果您希望自定義特定配置對象的緩存行為,則可以在依賴注入系統(tǒng)中替換此實現(xiàn)。
ICache<T>的默認(rèn)實現(xiàn)依賴于.NET提供的IMemoryCache接口(和MemoryCache實現(xiàn))。 如果您希望自定義內(nèi)存中的緩存行為,則可以替換依賴注入系統(tǒng)中的IMemoryCache實現(xiàn)。
配置中間件
您需要通過以下方式調(diào)用將IdentityServer添加到管道中:
public void Configure(IApplicationBuilder app) {app.UseIdentityServer(); }UseIdentityServer包含對UseAuthentication的調(diào)用,所以沒有必要同時調(diào)用這兩個。
中間件沒有額外的配置。
請注意,添加順序在管道配置中很重要。 例如,您需要在添加MVC中間件之前添加IdentitySever。
總結(jié)
以上是生活随笔為你收集整理的IdentityServer Topics(1)- 启动说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lua os.date函数定义和示例
- 下一篇: .NET Core微服务之路:基于Con