nameidentifier索赔的目的是什么?

应该使用http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifiertypes的声明吗?

这是主要的问题,这里还有其他的。

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

对于特定的用户来说,它是永久的,而不是名称索赔?

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

Name ,就是那个名字。 如果我们在说话的人,请想想“埃里克”; 一个服务器“file01”。

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

根据这篇文章 ,显然名称标识符是一个SAML 1.1属性,并被SAML 2.0中的NameID所取代。

独特还是不是?

我想解决@贾森的评论和@ nzpcmad的职位。 我不认为唯一性是一个明确的要求。 这个问题被标记为adfs2.0,但被引用的模式由OASIS拥有。 所以这些是我们需要平衡的双方解释。

微软对ADFS的立场显然是有一个独特的要求。 我们看到在“ 索赔的作用 ”一文中。 毫无疑问,ADFS投下了很大的阴影,但这似乎是一个实现细节。

看看SAML 1.1规范 ,但是,我没有看到这样的断言。 我们在2.4.2.2节中最接近的是:

元素通过名称限定符,名称和格式的组合来指定主题。 该元素具有以下属性:

NameQualifier [可选]限定主题名称的安全或pipe理域。 此属性提供了一种方法,可以在不发生冲突的情况下联合不同用户存储中的名称。

该规范的文本告诉我,我需要能够使用三个属性的组合来find一个人,但它没有断言唯一性。 我能不能有两个指向同一用户的条目? 似乎如此。 而且,如果NameIdentifier不足以唯一标识名称,那么规范是不是表明NameQualifier属性是必需的?

那么这是什么导致?

  • 要小心,独赢可能会更安全。
  • 深入了解您的提供者在这个话题上的立场。

根据索赔的作用 ,

名称用户的唯一名称

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

这两个索赔是AD FS 2.0默认configuration的一组索赔的一部分。

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

例如,当您使用ACSloginGoogle时,“nameidentifier”是Google与您的帐户关联的唯一GUID,而名称是您的Googlelogin名,例如“tim.smith@gmail.com”。

ClaimTypes.Name用于UserName, ClaimTypes.NameIdentifier指定用户的标识。 如果您将它们添加到ClaimIdentity对象中,该对象提供您访问GetUserName()GetUserId() User.Identity方法。

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

对于Windows身份validation:

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

域\术士是一个Windowslogin名

基于声明的身份validation:

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描述了名字和身份提供者。