【问题标题】:Where is the UPN claim for a guested user?来宾用户的 UPN 声明在哪里?
【发布时间】:2017-12-16 06:12:46
【问题描述】:

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

我了解来宾 Microsoft Live 帐户可能缺少 upn,但这些是完整的 AAD 帐户,只是在另一个 AAD 中。微软的文档还表明,unique_name 声明实际上可能不是唯一的!

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-token-and-claims

你能告诉我是什么决定了 unique_name 声明的价值吗?

如果 upn 声明不存在或者是外部访客用户,我们可以安全地使用此声明回退到吗?

访客用户令牌内容

{
    ..,...
    "tid": "xxxxxxxx-7ea7-413c-96bc-3f3aba133732",
    "unique_name": "testAdmin@xxxxxxxx.onmicrosoft.com",
    "ver": "1.0"
}

普通用户Token内容:

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

}

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

【问题讨论】:

  • 只想提一下,你是对的,unique_name 不是“唯一的”。阅读token claims page 上的说明。 Provides a human readable value that identifies the subject of the token. This value is not guaranteed to be unique within a tenant and is designed to be used only for display purposes.
  • 所以我的一个问题是如何在租户中计算或确定该值? AAD 管理员可以对用户记录做些什么来更改它?同样作为一名建筑师和喜欢干净命名的人,为什么这种说法被称为 unique_name?
  • 我们的情况完全相同。到目前为止,我们一直使用unique_name,但事实证明,此标识符在所有情况下都与 UPN 的值不匹配,例如对于租户来宾用户。我认为我们的解决方案是使用upn 并在unique_name 上进行回退,对于进一步的Graph API 用户查询,查询所有用户并检查userPrincipalNamemail 是否匹配。关于unique_name的命名,我个人看了微软的文档笑了。

标签: azure-active-directory


【解决方案1】:

代表 Azure AD 中来宾用户的令牌(好吧,ver==1.0 的令牌)确实会缺少 upn 声明,但会包含 unique_name 声明,正如您所发现的。这同样适用于来自其他 Azure AD 租户的来宾用户,以及来自外部身份提供者的来宾用户。

来自其他 Azure AD 租户的来宾用户的 unique_name 声明的值将是用户的 UPN(如果可用)或回退到用户的电子邮件地址。对于其他类型的访客用户,unique_name 将采用其他格式和值。这个想法是 unique_name 是访客用户的最佳人类可读标识符。

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

是的,同一个人的oid 在不同租户中会有所不同。但这就是 Azure AD 租户模型的重点。另一个租户中的来宾用户在应用程序中显示为与其“主”租户中的用户完全不同的用户。如果您想将这两个用户映射在一起,最好的办法是使用启发式算法,例如 unique_name

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多