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返回用户并检查您存储数字的属性名称。可能在名为mobilestrongAuthenticationPhoneNumber的属性中。 partnerClaimType 是返回用户对象时通过 Graph API 返回的属性名称。在这种情况下,mobilestrongAuthenticationPhoneNumber 从外部 IDP(尤其是 Azure AD)读取电话号码时,这些都不起作用。不过,我们可以从 Okta 那里得到它。我们刚刚向 MS 提出了一个支持案例,他们建议向 Azure AD 团队提出支持请求。

以上是关于B2C ID 令牌中缺少电话号码声明的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure AD B2C 中请求令牌时缺少范围“scp”

将声明添加到令牌 Azure B2C

如何使用 B2C 和 Blazor 获取 JWT 不记名令牌

Azure B2C:如何在 JWT 令牌中获得“组”声明

JWT 令牌嵌套在 B2C 令牌的“idp_access_token”声明中

ASP.NET 核心策略检查中缺少“aud”声明会阻止授权,但它位于 id 令牌中