UPN和Azure AD中的名称之间有什么区别?

12
在System.IdentityModel.Claims中有三个条目:UPN、Name和NameIdentifier。 "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
在使用AzureAD、OpenIdConnect和Office365进行身份验证后调试时,我发现名称和upn始终相同,类似于给定用户的“电子邮件”:例如johndoe@contoso.com或johdoe@contoso.onmicrosoft.com,而nameidentifier是一个不可读的标识符。
然后,我有几个问题:
1)在我的上下文中,“name”和“upn”是否总是相同的?
2)它们是否可变?我们看到名称(或upn)中存在域名,这是否意味着如果contoso.com被rototo.com收购,则可以修改名称和upn?或者类似地,如果公司开始订阅Office365但没有自定义域名,但稍后决定购买一个自定义域名呢?这些索赔的值可能会改变吗?
3)它与2)相关,但是NameIdentifier是否是获取特定用户引用的唯一安全方式?例如,在数据库中保存作为外键?
1个回答

17
  1. UPN是用户主体名称(User Principal Name)。它的格式通常类似于电子邮件地址,可以分为3个部分:用户账户名、分隔符(即@符号)和UPN后缀或域名。其主要目的是在身份验证过程中使用。而“名称(Name)”通常用于显示目的。名称和UPN可以相同也可以不同。根据您的目标,应该使用其中之一。

参考用户名称格式

  1. 第一个问题的答案部分解决了第二个问题。UPN将根据域而改变。域就是UPN后缀。名称是显示名称,并且可能不会更改,除非在从一个域迁移AD用户时指定规则。

  2. NameIdentifier(名称标识符)是用户的唯一"SAML名称标识符"。换句话说,它只是用户对象的ID。目的:当试图唯一地识别用户时,这应该是您的首选。

参考:


我看到了之前的问题,但不清楚UPN是否是“可变的”...谢谢。 - Benoit Patra
我创建了另一个相关的问题https://dev59.com/Y1oV5IYBdhLWcg3wEbS9 - Benoit Patra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接