Azure active directory 访客用户的UPN索赔在哪里?

Azure active directory 访客用户的UPN索赔在哪里?,azure-active-directory,Azure Active Directory,我们有一个辅助AAD,其中有来自主AAD的访客用户。为来宾用户生成的令牌似乎缺少upn声明,但我们依赖upn声明的存在这一事实,因为我们正在使用upn声明跨系统映射用户 我知道,对于访客Microsoft Live帐户,upn可能缺失,但这些是完整的AAD帐户,仅在另一个AAD中。微软的文档还表明,唯一的名称声明实际上可能不是唯一的 您能告诉我是什么决定了唯一名称声明的价值吗 如果upn声明不存在或是外部访客用户,我们使用此声明回退是否安全 来宾用户令牌内容 { ..,...

我们有一个辅助AAD,其中有来自主AAD的访客用户。为来宾用户生成的令牌似乎缺少upn声明,但我们依赖upn声明的存在这一事实,因为我们正在使用upn声明跨系统映射用户

我知道,对于访客Microsoft Live帐户,upn可能缺失,但这些是完整的AAD帐户,仅在另一个AAD中。微软的文档还表明,唯一的名称声明实际上可能不是唯一的

您能告诉我是什么决定了唯一名称声明的价值吗

如果upn声明不存在或是外部访客用户,我们使用此声明回退是否安全

来宾用户令牌内容

{
    ..,...
    "tid": "xxxxxxxx-7ea7-413c-96bc-3f3aba133732",
    "unique_name": "testAdmin@xxxxxxxx.onmicrosoft.com",
    "ver": "1.0"
}
常规用户令牌内容:

{
    ......
    "tid": "xxxxxxxx-72d8-4715-b14f-990c93843416",
    "unique_name": "testAdmin@xxxxxxx.onmicrosoft.com",
    "upn": "testAdmin@xxxxxxx.onmicrosoft.com",
    "ver": "1.0"
}

我知道您可能希望我们使用“oid”,但这会导致我们在不同环境之间出现问题,因为同一用户在每个AAD中的值不同。

在Azure AD中代表来宾用户的令牌(其中,
ver==1.0
)确实会丢失
upn
声明,但是将包含
唯一的\u名称
声明,正如您所发现的。这同样适用于来自其他Azure AD租户的来宾用户,以及来自外部身份提供商的来宾用户

来自其他Azure AD租户的来宾用户的
unique\u name
声明的值将是该用户的UPN(如果可用),或者返回到该用户的电子邮件地址。对于其他类型的来宾用户,
unique_name
将采用其他格式和值。其思想是,
unique_name
是来宾用户最好的可读标识符

在任何情况下,
unique\u name
值都可以更改,在极少数情况下,可能会发生冲突。这就是为什么文档建议不要将其用作主要用户标识符的原因。Azure AD系统中推荐的用户标识符是对象ID,或
oid

是的,
oid
对于不同租户的同一个人将是不同的。但这正是Azure广告租赁模式的要点。另一个租户中的来宾用户与其“主”租户中的用户是完全不同的应用程序用户。如果您想将这两个用户映射到一起,最好使用试探法,如
unique\u name

我建议您在feedback.azure.com上提交一些请求:

  • 一个可靠的用户标识符,可以跨租户识别用户
  • 关于如何在AAD中处理客户帐户的更好文档

  • 我只想说你是对的,唯一的名字不是“唯一的”。请阅读屏幕上的说明<代码>提供标识令牌主题的人类可读值。此值不保证在租户中是唯一的,仅用于显示目的。因此,我的问题之一是如何在租户中计算或确定该值?AAD管理员如何更改用户记录?作为一名建筑师和喜欢干净命名的人,为什么这种说法被称为独特的名称?我们的情况完全相同。到目前为止,我们已经使用了
    unique\u name
    ,但事实证明,该标识符在所有情况下都与UPN的值不匹配,例如,对于租户来宾用户。我认为我们的解决方案将是使用
    upn
    和回退
    unique\u name
    ,对于进一步的Graph API用户查询,查询所有用户并检查
    userPrincipalName
    mail
    是否匹配。关于
    unique\u name
    的命名,我个人在阅读微软的文档时笑了。