要针对IdentityServer4中的AzureAD启用多身份验证提供程序。(类似于reference:Enable multiple AzureAd in Identityserver4 .NET Core)
此行为的原因取决于web客户端应用程序,每个web客户端应用程序都需要针对不同的AzureAD客户端应用程序进行身份验证,并使用AzureAD中的清单设置定义不同的应用程序内角色。
(所以这已经完成了。)
另一个问题是,在通过IdentityServer4登录时,不是为用户提供多个身份验证选项,而是希望根据每个web客户端应用程序的配置设置自动选择多个AzureAD身份验证选项之一。
这是通过IdentityServer4很容易实现的,还是已经可用的?
发布于 2019-04-11 04:47:27
authorize端点有一个接受idp:name_of_idp格式的IDP值的acr_values属性(参见页面最底部) http://docs.identityserver.io/en/latest/endpoints/authorize.html
假设您的IdentityServer启动中包含以下内容
.AddOpenIdConnect("oidc", "OpenID Connect", options =>
{
// ..
// Your serverside configuration here
// ..
});这是您的Mvc核心客户端启动
.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端上的客户端配置
new Client
{
// serverside client configuration
// ..
IdentityProviderRestrictions = new string[]{"oidc"},
// ...
}https://stackoverflow.com/questions/55580187
复制相似问题