如何将身份提供者声明值映射到Azure ACS中注册的身份提供者?

Azure允许我们通过获取以下内容来检索已注册的身份提供者列表:

https://YourNamespace.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?
    protocol=wsfederation&
    realm=YourAppRealm&
    reply_to=YourAppReturnURL&
    version=1.0

当用户登录时,我们会获得一个身份提供者声明,用于标识用于身份验证的提供者.

问题是IdentityProvider.js资源没有告诉我们将使用哪个身份提供者声明.

例如:

> Windows Live ID使用声明值uri:WindowsLiveID
>谷歌使用索赔价值谷歌
> ADFS身份提供程序可以使用索赔值,如http://adfs.mycompany.com/adfs/services/trust

我需要能够映射到身份提供者声明值和IdentityProviders.js列出的身份提供者.

这样做的原因是我需要允许将权限分配给由特定身份提供者标识的用户.为了方便用户,我想给他们一个可供选择的身份提供者列表(即通过呈现从IdentityProviders.js获取的数据).但是,必须使用身份提供者声明值进行实际分配,因为这是标识提供者的内容.

这可能吗?有没有解决方法?

任何帮助,将不胜感激!

最佳答案 IdentityProviders.js不适用于此目的,这就是您遇到此问题的原因.最简单的解决方案是在您的应用中对这些值进行硬编码.如果您不想这样做,可以通过OData Management Service获取这些值.对于通过管理服务找到的每个身份提供程序,IdentityProvider声明值将为idp.Issuer.Name,而IdentityProviders.js中列出的值将为idp.LoginLinkName(如果未指定LoginLinkName,则为idp.DisplayName).

点赞