B2C ID 令牌中缺少电话号码声明
Posted
技术标签:
【中文标题】B2C ID 令牌中缺少电话号码声明【英文标题】:Missing phone number claim in B2C ID token 【发布时间】:2021-09-23 15:42:00 【问题描述】:我们让 Azure ADB2C 通过自定义策略连接到外部 IDP,例如 Azure AD。我可以在 B2C 令牌中包含来自 Azure AD 的 given_name、family_name、preferred_username 自定义声明,但是我找不到添加电话号码声明的方法。它不在 Azure AD 服务主体的令牌配置中的自定义声明列表中,就像上面提到的其他三个一样,我也没有在 TrustFrameworkBase.xml 中看到它的声明类型。我们需要在用户的个人资料页面上显示用户的电话号码。
【问题讨论】:
【参考方案1】:在 Azure AD B2C 入门包中,电话号码存储在名为 strongAuthenticationPhoneNumber
的声明中。
要为您的令牌添加声明,请参阅link。
将此添加到您的依赖方部分,在 outputClaims 下:
<OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />
【讨论】:
这似乎是用于多因素身份验证的声明。将其添加到自定义策略不会从目录中提取常规的 Office 或 Mobile 电话号码。 你把电话号码写到什么属性了?您可以使用AAD-UserReadUsingObjectId
技术配置文件读取属性,只需在此处添加outputClaim
。最后在依赖方部分添加outputClaim
以将声明放入令牌中。这可以通过你喜欢的任何属性来实现。
电话号码属性的名称是什么?我在基本政策的任何地方都看不到它。 PartnerClaimType 是什么?
您需要使用Graph API返回用户并检查您存储数字的属性名称。可能在名为mobile
或strongAuthenticationPhoneNumber
的属性中。 partnerClaimType 是返回用户对象时通过 Graph API 返回的属性名称。在这种情况下,mobile
或 strongAuthenticationPhoneNumber
。
从外部 IDP(尤其是 Azure AD)读取电话号码时,这些都不起作用。不过,我们可以从 Okta 那里得到它。我们刚刚向 MS 提出了一个支持案例,他们建议向 Azure AD 团队提出支持请求。以上是关于B2C ID 令牌中缺少电话号码声明的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure AD B2C 中请求令牌时缺少范围“scp”
如何使用 B2C 和 Blazor 获取 JWT 不记名令牌