2016-12-05 28 views
2

我们使用OAuth 2.0从Azure AD获取JWT令牌。在我们的应用程序中,我们使用'upn'声明的值来确定关联的内部用户名。JWT声称来自Azure AD令牌的东西可以安全地用于用户映射吗?

Azure AD Token Reference记录了UPN权利要求作为“用户主体名称”,这据我明白的是以下的地址规格的格式(即,用户@域)用户名。这对在Azure AD租户内创建的用户很有效。但令我惊讶的是,upn索赔似乎已经消失,如果认证的用户从一个不同的AD同步。这种行为似乎没有记录在任何地方。

  1. 我在哪里可以找到当UPN是保证在令牌上的文件?
  2. 什么是我可以使用的可靠替代索赔?最好声明保证为“用户/域名”形式,因为这与我们的模型最匹配。我已经考虑了以下几点:
    • UNIQUE_NAME:我只看到这等于UPN,但我不知道它从何而来。令人困惑的是,token reference说:这个值是而不是保证在租户内是唯一的,并被设计为仅用于显示目的。(重点煤矿)
    • 电子邮件:这似乎太等于UPN,但同样,它在哪儿从来源?在管理门户中,我曾尝试在与用户相关的每个电子邮件相关字段中放入不同的值,但似乎没有一个值得传播到此声明中。因此它看起来这个字段是实际上不是电子邮件

我想绝对确保我们的应用程序将能够处理由Azure的AD发布的所有令牌,所以我很犹豫使用任何上述权利的,除非我有一些文件,说明其实际语义。

回答

1
  1. 我在哪里可以找到upn保证在令牌中的文档?

没有关于如何保证索赔的文件。根据测试,正如您所提到的,只有在用户不是外部用户时才会发布。

什么是我可以使用的可靠替代索赔?最好声明保证为“用户/域名”形式,因为这与我们的模型最匹配。我已考虑以下内容:

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

如果您对Azure文档有任何反馈,可以尝试提交反馈意见此页面有帮助吗?位于右下角页面以帮助改进文档。 enter image description here

+0

谢谢你的回答。我认为没有关于** unique_name **和** email **的语义的文档,那么?缺乏唯一性不一定是问题(多个AD主体仍然可以在我们的应用程序中识别相同的用户)。 –

0

虽然用户的UPN和主要电子邮件地址是相同的事情是相当普遍的,但不能保证(UPN的存在与您注意到的一样)。所以你应该在假设UPN!=电子邮件地址的情况下运行。如果您需要知道电子邮件地址,则应该使用oid进行图形调用和搜索。

相关问题