Oauth 2.0 JWT从Azure AD令牌中声明的内容可以安全地用于用户映射?
我们使用OAuth 2.0从Azure广告中获取JWT令牌。在我们的应用程序中,我们使用了“upn”声明的值来标识相关的内部用户名 文件将upn声明记录为“用户主体名称”,据我所知,该名称是遵循addr规范格式的用户名(即。user@domain). 这对于在Azure AD租户中创建的用户非常有效。然而,令我惊讶的是,如果认证用户是从不同的广告同步的,upn声明似乎消失了。这种行为似乎没有任何记录Oauth 2.0 JWT从Azure AD令牌中声明的内容可以安全地用于用户映射?,oauth-2.0,jwt,azure-active-directory,openid-connect,Oauth 2.0,Jwt,Azure Active Directory,Openid Connect,我们使用OAuth 2.0从Azure广告中获取JWT令牌。在我们的应用程序中,我们使用了“upn”声明的值来标识相关的内部用户名 文件将upn声明记录为“用户主体名称”,据我所知,该名称是遵循addr规范格式的用户名(即。user@domain). 这对于在Azure AD租户中创建的用户非常有效。然而,令我惊讶的是,如果认证用户是从不同的广告同步的,upn声明似乎消失了。这种行为似乎没有任何记录 在哪里可以找到有关upn何时保证在令牌中的文档 我可以使用哪些可靠的替代声明?最好保证声明的形式
- unique\u name:我只观察到它等于upn,但我不确定它来自哪里。令人困惑的是,该值表示:该值在租户中不保证唯一,且仅用于显示目的。(强调矿山)
- 电子邮件:这似乎也等同于upn,但同样,它的来源是什么?在管理门户中,我尝试在与用户关联的每个电子邮件相关字段中添加不同的值,但它们似乎都没有传播到该声明中。因此,似乎该字段实际上不是电子邮件
oid
声明来映射用户。此声明包含Azure AD中对象的唯一标识符。此值不可变,无法重新分配或重用。使用对象ID标识Azure AD查询中的对象
如果您对Azure文档有任何反馈,您可以尝试从右下页的提交反馈,以帮助改进文档。
虽然用户的UPN和主电子邮件地址通常是相同的,但这并不能保证(正如您所注意到的,UPN也不存在)。因此,您应该假设UPN!=电子邮件地址。如果您需要知道电子邮件地址,您应该拨打图形电话,并使用oid进行搜索。谢谢您的回答。我认为没有关于unique_名称和电子邮件语义的文档,那么?缺乏唯一性并不一定是个问题(多个广告主体仍然可以在我们的应用程序中识别同一个用户)。