声明:UPN与Azure AD

时间:2016-04-19 14:54:39

标签: office365 azure-active-directory claims-based-identity

在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 个答案:

答案 0 :(得分:3)

  1. UPN是用户主要名称。它始终采用看起来像电子邮件地址的格式。基本上它有3个部分。用户帐户名称,分隔符(即@符号)和UPN后缀或域名。其主要用途是在身份验证期间使用。而名称应该用于显示目的。名称和UPN可以相同或不同。根据您的目标,您应该使用一个与另一个。
  2. 参考User Name Formats

    1. 第一个回答第二个问题。 UPN将根据域名进行更改。域是UPN后缀。名称是显示名称,除非您在将AD用户从一个域迁移到另一个域时指定规则,否则不会更改。

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

    3. 参考: