nameidentifier声明的目的是什么?

时间:2011-04-28 05:27:31

标签: claims-based-identity adfs2.0 federated-identity

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

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

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

对于特定用户而言,它是永久性的,而不是名称声明吗?

是全局作用域还是IdP作用域?

4 个答案:

答案 0 :(得分:34)

Name,只是一个名字。如果我们在谈论人,那就想想“Eric”;服务器“file01”。

NameIdentifier是对象的ID。回到我们的person对象,Eric的UserID可能在您的数据库中是435。对于服务器,标识符可以类似于FQDN或SID。

根据this post,显然名称标识符是SAML 1.1属性,并且在SAML 2.0中被NameID取代。

独特与否?

我想解决@Jason的评论和@ nzpcmad的帖子。我不认为独特性是明确的要求。问题标记为,但引用的模式由OASIS拥有。所以这些是我们需要平衡的两方解释。

微软对ADFS的立场显然是有一个独特的要求。我们在“The Role of Claims”文章中看到了这一点。毫无疑问,ADFS会产生很大的影响,但这似乎是一个实现细节。

然而,看看SAML 1.1 spec,我看不到这样的断言。我们在规范2.4.2.2中得到的最接近的是:

  

元素通过组合a指定主题   名称限定符,名称和格式。元素有   以下属性:
     ...
   NameQualifier [可选]安全或管理域   限定主题的名称。该属性提供了一种手段   联合来自不同用户商店的名称而不会发生冲突。

规范的文本告诉我,我需要能够使用这三个属性的组合找到一个人,但它没有对唯一性做出任何断言。我不能指向同一个用户的两个条目吗?似乎如此。此外,如果NameQualifier不足以唯一标识名称,那么规范是否表明NameIdentifier属性是否必需?

那么这一切导致了什么?

  • 小心,unqiue可能更安全。
  • 深入了解供应商对该主题的立场。

答案 1 :(得分:10)

The Role of Claims

名称  用户的唯一名称

名称标识符  用户的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.IdentityGetUserName()的{​​{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也描述了名称和身份提供者。