簡體   English   中英

2 openid connect in asp.net核心應用

[英]2 openid connect in asp.net core application

我一直在嘗試將第二個身份提供者添加到我的 web 應用程序,但配置有問題。

該應用程序具有以下配置

builder.Services.AddAuthentication(options =>
{
  options.DefaultScheme = "cookie";
  options.DefaultSignInScheme = "cookie";
  options.DefaultChallengeScheme = "oidc";
  options.DefaultSignOutScheme = "oidc";
})
    .AddCookie("cookie")
    .AddOpenIdConnect("oidc", options =>
    {
      options.Authority = AppConfig.AuthorizationServerAdress;
      options.ClientId = AppConfig.OpenidApp;
      options.ClientSecret = AppConfig.OpenidAppSecret;
      options.ResponseType = OpenIdConnectResponseType.Code;
      options.ResponseMode = OpenIdConnectResponseMode.Query;
      options.UsePkce = true;
      options.SaveTokens = true;
      options.GetClaimsFromUserInfoEndpoint = true;
    })

    .AddCookie("cookie2")
    .AddOpenIdConnect("oidc2", options =>
    {
        options.Authority = AppConfig.AuthorizationExternalServerAdress;
        options.ClientId = AppConfig.OpenidExternalApp;
        options.ClientSecret = AppConfig.OpenidExternalAppSecret;
        options.ResponseType = OpenIdConnectResponseType.Code;
        options.ResponseMode = OpenIdConnectResponseMode.Query;
        options.UsePkce = true;
        options.SaveTokens = true;
        options.GetClaimsFromUserInfoEndpoint = true;
    });

默認情況下,它適用於第一個 oidc 提供商,但如果我使用 oidc2 登錄然后導航到我的應用程序,我將 go 到我的默認 oidc 提供商。 這意味着第二個提供者將被忽略。 有人可以幫我配置嗎?

問題是兩個處理程序都會在 URL /signin-oidc上偵聽來自您的身份提供者的回調請求

因此,要解決它,您需要確保它們不同,例如:

.AddOpenIdConnect("oidc", options =>
{
  //other options
  options.CallbackPath = new PathString("/oidc/handler1");
}
.AddOpenIdConnect("oidc2", options =>
{
  //other options
  options.CallbackPath = new PathString("/oidc/handler2");
}

另請參閱OpenIdConnect:手動處理回調

但是,總的來說,我建議您的客戶和應用程序只應該信任一個提供商(令牌發行者),並讓用戶選擇如何通過您的主要提供商進行身份驗證,如下圖所示: 在此處輸入圖像描述

暫無
暫無

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

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