首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从IdentityServer4中自动选择默认的AzureAD身份验证提供程序?

如何从IdentityServer4中自动选择默认的AzureAD身份验证提供程序?
EN

Stack Overflow用户
提问于 2019-04-09 03:07:36
回答 1查看 410关注 0票数 1

要针对IdentityServer4中的AzureAD启用多身份验证提供程序。(类似于reference:Enable multiple AzureAd in Identityserver4 .NET Core)

此行为的原因取决于web客户端应用程序,每个web客户端应用程序都需要针对不同的AzureAD客户端应用程序进行身份验证,并使用AzureAD中的清单设置定义不同的应用程序内角色。

(所以这已经完成了。)

另一个问题是,在通过IdentityServer4登录时,不是为用户提供多个身份验证选项,而是希望根据每个web客户端应用程序的配置设置自动选择多个AzureAD身份验证选项之一。

这是通过IdentityServer4很容易实现的,还是已经可用的?

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 04:47:27

authorize端点有一个接受idp:name_of_idp格式的IDP值的acr_values属性(参见页面最底部) http://docs.identityserver.io/en/latest/endpoints/authorize.html

假设您的IdentityServer启动中包含以下内容

代码语言:javascript
复制
.AddOpenIdConnect("oidc", "OpenID Connect", options =>
{
    // ..
    // Your serverside configuration here
    // ..
});

这是您的Mvc核心客户端启动

代码语言:javascript
复制
.AddOpenIdConnect("oidc", options =>
{
    // ..
    // Your client side configuration here
    // ..
    options.Events.OnRedirectToIdentityProvider = n =>
    {
        n.ProtocolMessage.AcrValues = "idp:oidc"; // Refers to the oidc scheme in Server's startup

        return Task.FromResult(0);
    };
});

现在,如果您想通过客户端访问受保护的端点,授权重定向将生成一个类似以下内容的url:

https://...?client_id=...&redirect_uri=...&response_type=...&scope=...&response_mode=...&nonce=...&acr_values=idp:oidc&state=...&x-client-SKU=...&x-client-ver=...

这将跳过IdentityServer的登录页面,并重定向到选定的外部Idp。

如果客户端应用程序不是由您编写的,并且您必须基于客户端在服务器端指定外部身份提供者,那么这可能会有点棘手,而且我不记得IdentityServer本身就支持此功能。我认为在客户端验证成功之后,您必须自己实现这种逻辑。我会去与附加的acr_values解决方案重定向到登录页面,以最大限度地减少我的代码和最大化内置的IdentityServer功能。

不能重定向,但您可以通过IdentityProviderRestrictions缩小服务器端客户端的可用Idp列表

IdentityServer端上的客户端配置

代码语言:javascript
复制
new Client
{
    // serverside client configuration

    // ..

    IdentityProviderRestrictions = new string[]{"oidc"},

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

https://stackoverflow.com/questions/55580187

复制
相关文章

相似问题

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