繁体   English   中英

使用 Azure B2C 自定义策略获取 userPrinciaplName

[英]Get userPrinciaplName using Azure B2C custom policy

我正在使用 Azure B2C 自定义策略使用 Azure AD 和 OpenId Connect 对用户进行身份验证。 为此,我已按照使用自定义策略 Azure AD 帐户设置登录中提到的步骤 - Azure AD B2C 文档中提供的所有信息似乎都可以正常工作。

除了 jwt 令牌中提供的信息外,我还需要 userPrincipalName (user@tenant.net)。 我需要 UPN,因为并非所有用户在租户中都有 email。 因此,当我在 output 声明中添加 userPrincipalName 时,我在令牌中低于 output。

“upn”:“cpim_xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx@mytenant.onmicrosoft.com”

我想知道是否可以将 userPrincipalName 的值获取为 user@tenant.net 而不是如上所述。

如果可行,如何实现?

否,因为目录中的用户具有您找到的 UPN,格式cpim_xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx@mytenant.onmicrosoft.com

这是因为您无法验证其他人的域名以便能够使用不是mytenant.onmicrosoft.com的域名填充 UPN。

要么存储 email,要么从 IdP 通过 email。 如果 IdP 提供不通过 email 的选项,例如 Facebook 同意流程,您可以在注册时强制收集/验证 email。
https://github.com/azure-ad-b2c/samples/tree/master/policies/social-idp-force-email

从 Azure AD 开始,所有用户都将返回 unique_name 声明,这是他们 Azure AD 中的 UPN。 你也可以依靠这个。 如果您依赖 AAD 的 email 声明,则仅当用户具有 Exchange Online 收件箱时才会出现。

通常 UPN 和 Email 在 Azure AD 中是相同的。 因此,在AAD 技术配置文件中,您可以添加此 output 声明以捕获 AAD UPN:

<OutputClaim ClaimTypeReferenceId="aadUPN" PartnerClaimType="unique_name"/>

然后在依赖方部分,添加此 output 声明:

<OutputClaim ClaimTypeReferenceId="aadUPN" PartnerClaimType="UPNfromAAD"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM