首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Duende标识服务器添加多个外部oidc提供

向Duende标识服务器添加多个外部oidc提供
EN

Stack Overflow用户
提问于 2022-08-01 15:23:10
回答 1查看 372关注 0票数 0

我通过了教程:https://docs.duendesoftware.com/identityserver/v6/quickstarts/2_interactive/

在附件中,我尝试添加身份服务器的另一个实例作为另一个外部身份提供程序。在这之后,它刚开始就停止工作了。没有错误没有警告..。

每个都是分开工作的。

到底是谁面对的?

以下是我如何注册了几个身份提供者:

代码语言:javascript
复制
        builder.Services.AddAuthentication()
         .AddOpenIdConnect("oidc", "Demo IdentityServer", options =>
         {
             options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
             options.SignOutScheme = IdentityServerConstants.SignoutScheme;
             options.SaveTokens = true;

             options.Authority = "https://demo.duendesoftware.com";
             options.ClientId = "interactive.confidential";
             options.ClientSecret = "secret";
             options.ResponseType = "code";

             options.TokenValidationParameters = new TokenValidationParameters
             {
                 NameClaimType = "name",
                 RoleClaimType = "role"
             };

         })
         .AddOpenIdConnect("oidc", "My IdentityServer", options =>
         {
             options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
             options.SignOutScheme = IdentityServerConstants.SignoutScheme;
             options.SaveTokens = true;

             options.Authority = "https://localhost:5004";
             options.ClientId = "myprovider";
             options.ClientSecret = "secret";
             options.ResponseType = "code";

             options.TokenValidationParameters = new TokenValidationParameters
             {
                 NameClaimType = "name",
                 RoleClaimType = "role"
             };

         });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 06:53:57

一个问题是,两个处理程序都在侦听同一个回调URL(URL的IdentityServer向客户端发送请求)

默认情况下,它们被设置为

代码语言:javascript
复制
CallbackPath = new PathString("/signin-oidc");
SignedOutCallbackPath = new PathString("/signout-callback-oidc");
RemoteSignOutPath = new PathString("/signout-oidc");

您需要在每个处理程序中将它们设置为不同的路径。

另外,架构名称应该是不同的"oidc“。

但总的来说,我认为让你的客户信任两个不同的身份提供者是个坏主意,我认为最好只信任一个。

另一种方法是在本地拥有自己的身份提供者,然后信任各种外部提供者,如下所示:

通常,如果每个服务只需要信任一个提供者,您的复杂性就会降低。特别是对于使用JwtBearer的API,他们更愿意只有一个可信的提供者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73196043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档