Azure AD B2C声明不包括映射的自定义IdP声明。

3
我有Azure AD B2C目录,并在其中添加了我们另一个独立的Azure AD(AAD)作为身份提供者(作为Open ID Connect提供者)。 我能够使用链接到AAD的自定义IdP成功登录。
我还将身份提供者声明映射设置为“用户ID”到oid,“显示名称”到name,“名字”到given_name,“姓氏”到family_name和“电子邮件”到preferred_name(根据以下链接)。 但是,当我获取令牌并使用https://jwt.ms/检查它时,它没有这些声明。 当我检查“idp_access_token”声明时,它具有由AAD返回的oid,given_name,family_name等。 我不确定我错过了哪里。 我希望这些声明出现在B2C发出的令牌中。
感谢任何帮助。

https://learn.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-single-tenant?pivots=b2c-user-flow

我在用户流程中选择了所有这些“应用程序声明” 输入图像描述

在用户流程中,您是否选择将那些索赔归类为“申请索赔”? - Jas Suri - MSFT
是的,我已经更新了问题并提供了详细信息。 - Vivek N
1
感谢@Vivek,您能否请按照文档操作 - https://learn.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-generic-openid-connect - Jit_MSFT
更多信息... 当我修改Signup_Signin用户流以收集用户属性,例如电子邮件地址,名字时,然后在用户注册期间,B2C会提示用户提供这些值。在这种情况下,B2C令牌包含这些声明,但这些值可能与AAD存储中的值不同。我希望这些值来自AAD存储。 - Vivek N
1个回答

4

我现在能够获取名字和姓氏的声明,但仍然无法获取电子邮件。顺便说一下..在 AAD 方面的电子邮件也是 UPN。 - Vivek N
@VivekN 不,这不是AAD方面的问题。idp_access_token是访问令牌。但声明应该来自ID令牌。我可以确认preferred_username存在于ID令牌中,但奇怪的是它没有返回到Azure B2C方面。我将“Email”设置为family_name,但我仍然看不到B2C ID令牌中包含family_name的“email”声明。不确定这是否是内置用户流程中的错误。我认为这是另一个问题。也许您可以开启一个新帖子与更多人进行进一步讨论。顺便说一下,如果我的回答有帮助,您可以将其标记为已接受。谢谢。 - Allen Wu
谢谢。这很有帮助。那么,我们可以在客户端应用程序端解码'idp_access_token'并从中获取电子邮件吗?这是推荐的做法吗? - Vivek N
@VivekN 不确定它是否是一个推荐的做法,但我认为这应该是可行的。或者您可以使用用户对象 ID 使用 Microsoft Graph 查询用户的电子邮件。 - Allen Wu
我将把这个答案标记为已接受,因为它让我朝着正确的方向前进。我会为电子邮件认证提出单独的问题。 - Vivek N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接