AAD B2C-访问令牌中缺少UPN声明 [英] AAD B2C - Missing upn claim in access token
本文介绍了AAD B2C-访问令牌中缺少UPN声明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个使用AAD B2C进行身份验证的角度应用程序。它使用访问令牌与.Net Core API通信。
我的问题是我在访问令牌中未收到用户主体名称(UPN)。
我一直在添加其他";应用程序声明,如";名字&和";姓氏&,这些在我的访问令牌中显示得很好!因此,我相信我的作用域(OpenID、个人资料、电子邮件)设置正确,理论上这是可行的。我相信,因为我使用的是令牌的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)
}
推荐答案
在AAD B2C令牌中不返回UPn,因为它是设置的不相关的随机字符串。
相反,AAD B2C的唯一名称存储在signInNames属性中,并在令牌中以电子邮件或用户名的形式返回。
您链接的单据是针对AAD的,与AAD B2C无关。这是两个独立的令牌颁发者服务。在您的用户流应用程序声明中选择返回"电子邮件地址"。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview#email-address-storage
这篇关于AAD B2C-访问令牌中缺少UPN声明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文