IdentityServer4 .net核心2身份验证使用OpenIDConnect的多个实例

时间:2018-04-15 12:00:48

标签: c# asp.net-core identityserver4 oidc

我正在使用IdenitityServer4 Hybrid,如下所示 - https://github.com/elanderson/Angular-Core-IdentityServer

问题 - 我需要添加其他项目才能访问。另一个.net核心2 web api。

我正在尝试 -

   services.AddAuthentication(options =>
          {
              options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
              options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
          })
          .AddCookie()
           .AddOpenIdConnect(options =>
            {
                options.Authority = Configuration["IdentityServerAddress"];
                options.RequireHttpsMetadata = false;

                options.ClientId = "mvc";
                options.ClientSecret = "secret";

                options.ResponseType = "code id_token";
                options.Scope.Clear();
                options.Scope.Add("apiApp");
                options.Scope.Add("offline_access");

                options.GetClaimsFromUserInfoEndpoint = true;
                options.SaveTokens = true;
            }).AddOpenIdConnect(options =>
          {
              options.Authority = Configuration["IdentityServerAddress"];
              options.RequireHttpsMetadata = false;

              options.ClientId = "abiApp";
              options.ClientSecret = "secret";

              options.ResponseType = "code id_token";
              options.Scope.Clear();
              options.Scope.Add("abiApp");
              options.Scope.Add("offline_access");

              options.GetClaimsFromUserInfoEndpoint = true;
              options.SaveTokens = true;
          });

我正在 -

  

InvalidOperationException:Scheme已存在:OpenIdConnect

没有它 -

  

抱歉,发生错误:unauthorized_client   范围无效

我需要创建两个不同项目的两个入口。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

为每个配置指定不同的名称。您还可以将这些名称与ASP.NET Core身份验证系统的其他部分一起使用,例如ChallengeAsync

.AddOpenIdConnect("scheme1", options => {...})
.AddOpenIdConnect("scheme2", options => {...});