Azure AD 令牌中的哪些 JWT 声明可以安全地用于用户映射?

Ulr*_*sen 9 oauth-2.0 jwt azure-active-directory openid-connect

我们使用 OAuth 2.0 从 Azure AD 获取 JWT 令牌。在我们的应用程序中,我们使用“upn”声明的值来识别关联的内部用户名。

Azure AD 令牌参考将upn声明记录为“用户主体名称”,据我所知,这是遵循 addr-spec 格式的用户名(即 user@domain)。这对于在 Azure AD 租户中创建的用户非常有效。然而,令我惊讶的是,如果经过身份验证的用户从不同的 AD 同步,则upn声明似乎消失了。这种行为似乎没有在任何地方记录。

  1. 在哪里可以找到有关何时保证upn位于令牌中的文档?
  2. 我可以使用哪些可靠的替代声明?最好保证声明采用“用户/域”的形式,因为它最符合我们的模型。我考虑过以下几点:
    • unique_name:我只观察到它等于upn,但我不确定它来自哪里。令人困惑的是,令牌参考说:该值不能保证在租户内是唯一的,并且设计为仅用于显示目的。(强调我的)
    • email:这似乎也等于upn,但同样,它来自哪里?在管理门户中,我尝试在与用户关联的每个电子邮件相关字段中放置不同的值,但它们似乎都没有传播到此声明。因此看来该字段实际上并不是电子邮件

我想绝对确定我们的应用程序能够处理 Azure AD 颁发的所有令牌,因此我对于使用上述任何声明都犹豫不决,除非我有一些文档可以解释其实际语义。

Fei*_*SFT 2

  1. 在哪里可以找到有关何时保证 upn 位于令牌中的文档?

没有这样的文件说明如何保证这一索赔。根据测试,正如您提到的,只有当用户不是外部用户时才会发出。

我可以使用哪些可靠的替代声明?最好保证声明采用“用户/域”的形式,因为它最符合我们的模型。我考虑过以下几点:

我们可以使用oid声明来映射用户。此声明包含 Azure AD 中对象的唯一标识符。该值是不可变的,不能重新分配或重用。使用对象 ID 来标识 Azure AD 查询中的对象。

如果您对 Azure 文档有任何反馈,可以尝试从此页面是否有帮助?提交反馈。位于右下页,以帮助改进文档。 在此输入图像描述