"NameIdentifier声明的目的是什么?"

97

类型为http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier的声明应该用于什么?

这是主要问题,以下是其他问题。

它与http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name声明有何不同?

它是否对特定用户永久有效,与名称声明相反?

它是全局范围还是 IdP 范围?


你有没有找到答案,Anton? - Tommy Jakobsen
抱歉,@TommyJakobsen。最终我们没有在应用程序中使用这个声明。 - Anthony Serdyukov
4个回答

63

Name是指名称。如果涉及到人,可以考虑“Eric”;如果是服务器,则可能是“file01”。

NameIdentifier是对象的ID。以人为例,Eric的UserID在您的数据库中可能是435。对于服务器,标识符可能是FQDN或SID之类的内容。

根据这篇文章,似乎Name Identifier是SAML 1.1的属性,并被SAML 2.0中的NameID所取代。

唯一还是非唯一?

我想回应@Jason的评论和@nzpcmad的帖子。我不认为唯一性是一个明确的要求。问题标记了,但引用的模式是由OASIS拥有的。因此,我们需要平衡这两个方面的解释。

对于ADFS,Microsoft的立场很明显,存在唯一性的要求。我们可以在“声明的作用”文章中看到。毫无疑问,ADFS影响很大,但这似乎只是一个实现细节。

然而,在SAML 1.1规范中,我并没有看到这样的断言。在规范的第2.4.2.2节中,我们可以看到:

The element specifies a subject by a combination of a name qualifier, a name, and a format. The element has the following attributes:
...
NameQualifier[optional] The security or administrative domain that 该属性限定了主体名称,提供了一种将来自不同用户存储的名称联合起来而不会发生冲突的方法。

规范文本告诉我需要使用三个属性的组合查找一个人,但它并没有断言唯一性。是否可能存在两个指向同一用户的条目?似乎是这样。此外,在NameIdentifier无法唯一标识名称的情况下,规范是否表明NameQualifier属性是必需的?
那么这一切都导致了什么呢?
  • 要小心,唯一性可能更安全。
  • 深入了解您的服务提供商对该主题的立场。

2
我认为nzpcmad的答案在这里增加了更多的清晰度。如果一个名称应该是唯一的,那么它不仅仅是一个名称。我曾经困惑是否应该使用Name或NameIdentifier来存储用户名。现在我知道了。 - Jason

14

根据声明的角色,以下内容需要翻译:

名称 用户的唯一名称

名称标识符 用户的SAML名称标识符

这两个声明是AD FS 2.0默认配置的声明之一。

这意味着它们是IP范围的。

例如,当您使用ACS登录谷歌时,“nameidentifier”是由谷歌分配给您的帐户的唯一GUID,而“name”则是您的谷歌登录名,例如“tim.smith@gmail.com”。


2
谢谢您的关注,@nzpcmad。然而,“名称标识符”是什么意思我仍不清楚。在“用户的SAML名称标识符”短语中没有解释。 - Anthony Serdyukov

12

ClaimTypes.Name 是用于表示用户名,而 ClaimTypes.NameIdentifier 则指定了用户的标识作为对象视角。如果将它们添加到一种ClaimIdentity对象中,这将使您能够访问User.Identity方法(例如在dotnet世界中的GetUserName()GetUserId())。


-1

nameidentifier声明应用于获取唯一的用户名。

对于Windows身份验证:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier domain\warlock

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 0#.w|domain\warlock

domain\warlock是一个Windows登录名。

对于基于声明的身份验证:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier warlock@localhost.com

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 05.t|myidentityprovider|warlock@localhost.com

电子邮件被指定为标识声明。

正如您所看到的.../identity/claims/name,它描述了名称和身份提供者。


5
这个例子不是很清晰,与其他两个答案相矛盾,并且没有支持证据。 接受的答案说,nameidentifier应该基本上是唯一的整数或GUID,而name应该是唯一的用户名。 - cchamberlain
链接已经失效。 - Padhraic

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