类型为http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
的声明应该用于什么?
这是主要问题,以下是其他问题。
它与http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
声明有何不同?
它是否对特定用户永久有效,与名称声明相反?
它是全局范围还是 IdP 范围?
类型为http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
的声明应该用于什么?
这是主要问题,以下是其他问题。
它与http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
声明有何不同?
它是否对特定用户永久有效,与名称声明相反?
它是全局范围还是 IdP 范围?
Name
是指名称。如果涉及到人,可以考虑“Eric”;如果是服务器,则可能是“file01”。
NameIdentifier
是对象的ID。以人为例,Eric的UserID在您的数据库中可能是435。对于服务器,标识符可能是FQDN或SID之类的内容。
根据这篇文章,似乎Name Identifier是SAML 1.1的属性,并被SAML 2.0中的NameID
所取代。
我想回应@Jason的评论和@nzpcmad的帖子。我不认为唯一性是一个明确的要求。问题标记了adfs2.0,但引用的模式是由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
属性是必需的?
那么这一切都导致了什么呢?
- 要小心,唯一性可能更安全。
- 深入了解您的服务提供商对该主题的立场。
根据声明的角色,以下内容需要翻译:
名称 用户的唯一名称
名称标识符 用户的SAML名称标识符
这两个声明是AD FS 2.0默认配置的声明之一。
这意味着它们是IP范围的。
例如,当您使用ACS登录谷歌时,“nameidentifier”是由谷歌分配给您的帐户的唯一GUID,而“name”则是您的谷歌登录名,例如“tim.smith@gmail.com”。
ClaimTypes.Name
是用于表示用户名,而 ClaimTypes.NameIdentifier
则指定了用户的标识作为对象视角。如果将它们添加到一种ClaimIdentity
对象中,这将使您能够访问User.Identity
方法(例如在dotnet世界中的GetUserName()
和GetUserId()
)。
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
,它描述了名称和身份提供者。