类型http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
的声明应该用于什么?
这是主要问题,以下是其他问题。
它与http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
声明有什么不同?
对于特定用户而言,它是永久性的,而不是名称声明吗?
是全局作用域还是IdP作用域?
答案 0 :(得分:34)
Name
,只是一个名字。如果我们在谈论人,那就想想“Eric”;服务器“file01”。
NameIdentifier
是对象的ID。回到我们的person对象,Eric的UserID可能在您的数据库中是435。对于服务器,标识符可以类似于FQDN或SID。
根据this post,显然名称标识符是SAML 1.1属性,并且在SAML 2.0中被NameID
取代。
我想解决@Jason的评论和@ nzpcmad的帖子。我不认为独特性是明确的要求。问题标记为adfs2.0,但引用的模式由OASIS拥有。所以这些是我们需要平衡的两方解释。
微软对ADFS的立场显然是有一个独特的要求。我们在“The Role of Claims”文章中看到了这一点。毫无疑问,ADFS会产生很大的影响,但这似乎是一个实现细节。
然而,看看SAML 1.1 spec,我看不到这样的断言。我们在规范2.4.2.2中得到的最接近的是:
元素通过组合a指定主题 名称限定符,名称和格式。元素有 以下属性:
...
NameQualifier [可选]安全或管理域 限定主题的名称。该属性提供了一种手段 联合来自不同用户商店的名称而不会发生冲突。
规范的文本告诉我,我需要能够使用这三个属性的组合找到一个人,但它没有对唯一性做出任何断言。我不能指向同一个用户的两个条目吗?似乎如此。此外,如果NameQualifier
不足以唯一标识名称,那么规范是否表明NameIdentifier
属性是否必需?
那么这一切导致了什么?
答案 1 :(得分:10)
名称 用户的唯一名称
名称标识符 用户的SAML名称标识符
这两项声明是AD FS 2.0默认配置的声明组的一部分。
这意味着它们是IP范围的。
e.g。当您使用ACS登录Google时,“nameidentifier”是Google与您的帐户相关联的唯一GUID,而name是您的Google登录信息,例如“tim.smith@gmail.com”。
答案 2 :(得分:4)
ClaimTypes.Name
用于UserName,ClaimTypes.NameIdentifier
用于指定用户的身份。如果您将其添加到ClaimIdentity
对象中,该对象可让您覆盖User.Identity
和GetUserName()
的{{1}}方法。
答案 3 :(得分:-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
也描述了名称和身份提供者。