我们使用OAuth 2.0从Azure AD获取JWT令牌。在我们的应用程序中,我们使用“upn”声明的值来识别相关的内部用户名。
Azure AD Token Reference文件将upn声明称为“用户主体名称”,据我了解,这是遵循addr-spec格式的用户名(即user@domain)。对于在Azure AD租户中创建的用户,这很有效。然而,令我惊讶的是,如果认证用户从不同的AD同步,则upn声明似乎已经消失。这种行为似乎没有被记录在任何地方。
- 我在哪里可以找到有关令牌中 upn 保证存在的文档?
- 我可以使用哪些可靠的替代声明?最好保证声明的格式为“用户/域”,因为这与我们的模型最匹配。我已考虑了以下内容:
- unique_name :我只观察到它等于 upn ,但我不确定它来自哪里。令人困惑的是,token reference说:此值不保证在租户内唯一,并且仅设计用于显示目的。(我强调)
- email :这似乎也等于 upn ,但同样,它是从哪里获取的?在管理门户中,我尝试将不同的值放入与用户相关联的每个电子邮件字段中,但似乎没有一个传播到此声明。因此,该字段实际上并非电子邮件。
我希望能够确保我们的应用程序能够处理由Azure AD发出的所有令牌,因此我不确定是否使用上述任何声明,除非我有一些解释其实际语义的文档。