名称标识符声明的目的是什么?


77

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

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

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name索赔有何不同?

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

是全局范围还是IdP范围?


你有没有找到答案,安东?
汤米·雅各布森

嗨,@ TommyJakobsen。抱歉不行。最后,我们没有在应用程序中使用此声明。
Anthony Serdyukov

Answers:


50

Name,就是那个名字。如果我们在说话,请考虑“ Eric”;服务器“ file01”。

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

根据这篇文章,名称标识符显然是SAML 1.1属性,并且NameID在SAML 2.0中已被取代。

独特与否?

我想发表@Jason的评论和@nzpcmad的帖子。我认为唯一性不是明确要求。问题被标记但所引用的架构归OASIS所有。这就是我们需要权衡的两方解释。

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

但是,从SAML 1.1规范来看,我没有这样的主张。我们在规范的2.4.2.2节中得到的最接近的是:

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

规范的文字告诉我,我需要能够使用这三个属性的组合来找到一个人,但是并不能断言其唯一性。我不能有两个指向同一用户的条目吗?似乎是这样。此外,NameQualifierNameIdentifier不足以唯一标识名称的情况下,规范是否会指出需要该属性?

那么,这一切将导致什么呢?

  • 请注意,不安全可能更安全。
  • 深入了解您的提供商关于该主题的立场。

1
我认为nzpcmad的答案在这里更加清晰。如果名称是唯一的,则名称不仅是名称。我对于应该使用Name还是NameIdentifier来存储用户名感到困惑。现在我知道了。
杰森

11

根据索赔的作用

名称用户的唯一名称

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

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

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

例如,当您使用ACS登录到Google时,“ nameidentifier”是Google与您的帐户关联的唯一GUID,而name是您的Google登录名,例如“ tim.smith@gmail.com”。


2
谢谢@nzpcmad,感谢您的关注。但是,对我来说,“名称标识符”是什么仍然不知道。“用户的SAML名称标识符”短语中没有解释。
Anthony Serdyukov

7

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 2015年

链接已断开
Padhraic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.