繁体   English   中英

AAD B2C - 访问令牌中缺少 upn 声明

[英]AAD B2C - Missing upn claim in access token

我有一个使用 AAD B2C 进行身份验证的 Angular 应用程序。 这使用访问令牌与 .Net Core API 对话。

我的问题是我的访问令牌中没有收到用户主体名称 (upn)。

我一直在添加额外的“应用程序声明”,如“名字”和“姓氏”,这些出现在我的访问令牌中就好了! 因此,我相信我的范围(openid、profile、email)设置正确,并且理论上这是有效的。

我相信由于我使用的是 1.0 版的令牌,因此我不需要在我的应用程序清单中配置任何额外的声明。 我的用户是标准 AD 用户而不是访客。

以下文档指出 upn 声明应包含在 v1.0 令牌中: https : //docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims

我究竟做错了什么?!

解码访问令牌:

{
  "iss": "https://(my-tenant-name).b2clogin.com/(guid)/v2.0/",
  "exp": (number),
  "nbf": (number),
  "aud": "(guid)",
  "oid": "(guid)",
  "sub": "(guid)",
  "name": "My Name",
  "given_name": "Given name",
  "family_name": "Surname",
  "country": "Norge",
  "tfp": "B2C_1_signupsignin2",
  "nonce": "(guid)",
  "scp": "basic",
  "azp": "(guid)",
  "ver": "1.0",
  "iat": (number)
}

UPN 不会在 AAD B2C 令牌中返回,因为它是设置的不相关的随机字符串。

相反,AAD B2C 的唯一名称存储在 signInNames 属性中,并在您的令牌中作为电子邮件或用户名返回。

您链接的文档适用于 AAD,与 AAD B2C 无关。 这是两个单独的令牌发行者服务。 在您的用户流应用程序声明中选择返回“电子邮件地址”。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview#email-address-storage

目前,同时支持个人帐户和 Azure AD(通过应用注册门户注册)的应用无法使用可选声明。 但是,使用 v2.0 终结点仅为 Azure AD 注册的应用程序可以获得它们在清单中请求的可选声明。

要在令牌中实现 UPN 声明,请使用 B2C 自定义策略。 请参阅此链接以获取入门包: https : //github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack

将以下声明添加到 TechnicalProfile AAD-UserReadUsingObjectId和依赖方策略(例如: SignUpOrSignin.xml ):

<OutputClaim ClaimTypeReferenceId="userPrincipalName" />

根据您提供的代码,我们观察到您正在使用 v2 端点(“iss”:“https://(my-tenant-name).b2clogin.com/(guid)/v2.0/”)根据文档如果您看到iss:If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.

在 V2 端点中,您需要为 UPN 声明明确发出请求。

在 v1.0 端点中,它们默认返回,但 v2.0 制作了较小的令牌,因此它们是可选的。

请浏览以下链接以获得更多理解。 https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims如何在应用程序清单中添加可选声明https://docs.microsoft.com/en-us /azure/active-directory/develop/reference-app-manifest

暂无
暂无

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

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