簡體   English   中英

Identity Server調用是它自己的配置終結點

[英]Identity Server Calling It's own configuration endpoint

我有兩個需要身份驗證的客戶端。

一個客戶端是使用隱式流的spa,另一個客戶端是使用客戶端憑據流進行登錄的直接系統集成。

出於某種原因,當我的客戶端憑據客戶端調用我的API時,我的Identity Server應用程序會嘗試.well_known/openid-configuration調用.well_known/openid-configuration端點。

該調用沒有任何意義,因為首先看到的是服務器在服務於配置本身試圖調用端點。

有沒有一種方法可以填充此配置而無需身份服務器調用其自己的端點?

以下是我的身份服務器配置的代碼片段。

services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = "Bearer";
            options.DefaultChallengeScheme = "oidc";
        }).AddOpenIdConnect("oidc", options =>
        {
            options.SignInScheme = openIdConnectConfig.SignInScheme;
            options.SignOutScheme = IdentityServerConstants.SignoutScheme;

            options.Authority = openIdConnectConfig.Authority;
            options.RequireHttpsMetadata = false;

            options.ClientId = clientConfig.First(x => x.ClientId == "spa_app").ClientId;

            options.SaveTokens = true;
            options.SignedOutRedirectUri = "http://localhost:8080";
        }).AddIdentityServerAuthentication(options =>
        {
            options.Authority = openIdConnectConfig.Authority;
            options.RequireHttpsMetadata = false;

            options.ApiName = "api_client";
        });

無法避免此行為(至少除非您嘗試實現IConfigurationManager<OpenIdConnectOptions>否則否則)。 這實際上是一種預期的行為,因為您將Web應用程序和身份服務器托管在同一應用程序上。 對其端點的調用歸因於AddOpenIdConnect身份驗證方案,該方案在啟動應用程序時將獲取身份提供者元數據信息以進行JWT驗證。

從理論上講,您可以實現不調用MetadataAddress端點的IConfigurationManager<OpenIdConnectOptions> ,並在身份驗證方案構建器中進行設置。

.AddOpenIdConnect("oidc", options =>
        {
            ...
            ConfigurationManager = myCustomConfigurationManager,  //You would need to implement this
            ...
        })

這是導致對MetadataAddress端點的調用的罪魁禍首,默認情況下,該端點是authorityUri + /.well_known/openid-configuration

我建議不要這樣做,因為最終您仍然需要身份提供者元數據信息,因此必須快照並將其存儲在本地或類似的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM