天天看點

IdentityServer Topics(1)- 啟動說明啟動密鑰記憶體存儲配置測試存儲額外服務緩存配置中間件

啟動

IdentityServer的啟動是中間件和服務的組合來實作的。 所有配置都在你的啟動類(Startup.cs)中完成。

配置服務

通過以下方式調用将IdentityServer服務添加到DI系統:

public void ConfigureServices(IServiceCollection services)
{
    var builder = services.AddIdentityServer();
}           

複制

這将傳回一個生成器對象,而這個對象又有一些友善的方法來連接配接其他的服務。

密鑰

  • AddSigningCredential

    添加一個簽名密鑰服務,該服務将指定的密鑰提供給各種令牌建立/驗證服務。 您可以傳入

    X509Certificate2

    SigningCredential

    或對證書存儲區中證書的引用。
  • AddDeveloperSigningCredential

    在啟動時建立臨時密鑰。 這是僅用于開發場景,當您沒有證書使用。 生成的密鑰将被儲存到檔案系統,以便在伺服器重新啟動之間保持穩定(可以通過傳遞false來禁用)。 這解決了在開發期間client / api中繼資料緩存不同步的問題。
  • AddValidationKey

    添加驗證令牌的密鑰。 它們将被内部令牌驗證器使用,并将顯示在發現文檔中。 您可以傳入

    X509Certificate2

    SigningCredential

    或對證書存儲區中證書的引用。 這對于關鍵的轉換場景很有用。

記憶體存儲配置

各種“in-memory“配置API允許從配置對象的記憶體清單配置IdentityServer。 這些“in-memory”的集合可以在宿主應用程式中進行寫死,也可以從配置檔案或資料庫動态加載。 但是,在設計時,隻有托管應用程式啟動時才會建立這些集合。

使用這些配置API可用于原型設計,開發和/或測試時不需要在運作時動态查詢配置資料的資料庫。 如果配置很少改變,這種配置方式也可能适用于生産方案,或者如果必須更改值,則需要重新啟動應用程式并不友善。

  • AddInMemoryClients

    添加基于

    IClientStore

    ICorsPolicyService

    的記憶體集合注冊實作,以注冊用戶端配置對象。
  • AddInMemoryIdentityResources

    添加基于

    IResourceStore

    IdentityResource

    的記憶體集合注冊實作,以注冊身份驗證資源。
  • AddInMemoryApiResources

    添加基于

    IResourceStore

    ApiResource

    的記憶體集合注冊實作,以注冊API資源。

測試存儲

TestUser

類在IdentityServer中模拟使用者,憑據和聲明。

TestUser

的使用與使用“in-memory”存儲類似,因為它适用于原型開發和/或測試。 生産中不推薦使用

TestUser

  • AddTestUsers

    基于

    TestUserStore

    TestUser

    對象的集合注冊實作。 還注冊

    IProfileService

    IResourceOwnerPasswordValidator

    的實作。

額外服務

  • AddExtensionGrantValidator

    添加用于擴充授權的

    IExtensionGrantValidator

    實作。
  • AddSecretParser

    添加用于解析用戶端或API資源憑證的

    ISecretParser

    實作。
  • AddSecretValidator

    添加

    ISecretValidator

    實作,以針對憑證存儲驗證用戶端或API資源憑證。
  • AddResourceOwnerValidator 添加

    IResourceOwnerPasswordValidator`實作,用于驗證資源所有者密碼憑據授權類型的使用者憑證。
  • AddProfileService 添加

    IProfileService

    以實作連接配接到您的自定義使用者配置檔案存儲。

    DefaultProfileService`類提供了預設實作,它依靠身份驗證cookie作為唯一的令牌發放源。
  • AddAuthorizeInteractionResponseGenerator

    添加

    IAuthorizeInteractionResponseGenerator

    實作來在授權端點定制邏輯,以便顯示使用者錯誤,登入,同意或任何其他自定義頁面的UI。 AuthorizeInteractionResponseGenerator類提供了一個預設的實作,是以如果需要增加現有的行為,可以考慮從這個現有的類派生。
  • AddCustomAuthorizeRequestValidator

    添加

    ICustomAuthorizeRequestValidator

    實作,以在授權端點定制請求參數驗證。
  • AddCustomTokenRequestValidator

    添加

    ICustomTokenRequestValidator

    實作來定制令牌端點處的請求參數驗證。
  • AddRedirectUriValidator

    添加

    IRedirectUriValidator

    實作來自定義重定向URI驗證。
  • AddAppAuthRedirectUriValidator

    添加一個“AppAuth”(OAuth 2.0 for Native Apps)相容的重定向URI驗證器(進行嚴格的驗證,但也允許随機端口為http://127.0.0.1)。
  • AddJwtBearerClientAuthentication

    使用JWT對客戶機認證的支援。

緩存

用戶端和資源配置資料經常被IdentityServer使用。 如果從資料庫或其他外部存儲裝載此資料,那麼頻繁地重新加載相同的資料代價可能是昂貴的。

  • AddInMemoryCaching

    要使用下面描述的任何緩存,必須在DI中注冊ICache的實作。 此API注冊基于ASP.NET Core的ICache 的MemoryCache預設記憶體緩存實作。
  • AddClientStoreCache

    注冊一個

    IClientStore

    裝飾器實作,它将維護用戶端配置對象的記憶體緩存。 緩存持續時間可以在

    IdentityServerOptions

    上的緩存配置選項上配置。
  • AddResourceStoreCache

    注冊一個

    IResourceStore

    裝飾器實作,它将維護

    IdentityResource

    ApiResource

    配置對象的記憶體緩存。 緩存持續時間可以在

    IdentityServerOptions

    上的緩存配置選項上配置。
  • AddCorsPolicyCache

    注冊一個

    ICorsPolicyService

    裝飾器實作,它将維護一個CORS政策服務評估結果的記憶體緩存。 緩存持續時間可以在IdentityServerOptions上的緩存配置選項上配置。

可以進一步定制緩存:

預設緩存依賴于ICache實作。 如果您希望自定義特定配置對象的緩存行為,則可以在依賴注入系統中替換此實作。

ICache<T>

的預設實作依賴于.NET提供的

IMemoryCache

接口(和

MemoryCache

實作)。 如果您希望自定義記憶體中的緩存行為,則可以替換依賴注入系統中的

IMemoryCache

實作。

配置中間件

您需要通過以下方式調用将IdentityServer添加到管道中:

public void Configure(IApplicationBuilder app)
{
    app.UseIdentityServer();
}           

複制

UseIdentityServer

包含對

UseAuthentication

的調用,是以沒有必要同時調用這兩個。

中間件沒有額外的配置。

請注意,添加順序在管道配置中很重要。 例如,您需要在添加MVC中間件之前添加IdentitySever。