http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
类型的索赔应该用于什么?
这是主要问题,这里还有一些附加问题。
与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
取代。
是否唯一?
我想解决@Jason的评论和@nzpcmad的帖子。我不认为独特性是一个明确的要求。这个问题被标记为adfs2.0,但引用的模式属于OASIS。所以这是我们需要平衡的两方面的解释。
微软对ADFS的立场显然是有一个独特的要求。我们在"索赔的作用"一文中看到了这一点。毫无疑问,ADFS投下了很大的阴影,但这似乎是一个实现细节。
但是,查看SAML 1.1规范,我没有看到这样的断言。我们在规范的第2.4.2.2节中得到的最接近的是:元素通过a的组合指定主题名称限定符、名称和格式。元素有以下属性:
…NameQualifier[可选]安全域或管理域限定主题的名称。此属性提供了一种方法联合来自不同用户存储的名称而不发生冲突。
规范的文本告诉我,我需要能够使用三个属性的组合找到一个人,但它没有断言唯一性。不能有两个条目指向同一个用户吗?看来的确如此。此外,规范不是指出在NameIdentifier
不足以唯一标识名称的情况下需要NameQualifier
属性吗?
那么这一切导致了什么呢?
- 小心,独特可能更安全。
- 深入了解你的供应商在这个话题上的立场。
根据索赔的角色,
名称用户的唯一名称
名称标识符用户的SAML名称标识符
这两个声明是AD FS 2.0默认配置的声明组的一部分。
这意味着它们是IP作用域。
。当您使用ACS登录Google时,"名称标识符"是Google与您的帐户关联的唯一GUID,而名称是您的Google登录名,例如:"tim.smith@gmail.com"。
ClaimTypes.Name
用于用户名, ClaimTypes.NameIdentifier
指定用户的身份作为对象透视图。如果您将它们添加到一种ClaimIdentity
对象中,该对象为您提供了访问User.Identity
方法(例如在dotnet世界中),即GetUserName()
和GetUserId()
。
应该使用nameidentifier
声明来获取唯一的用户名。
For Windows Authentication:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier域术士
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name0 # .w |域术士
domainwarlock是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
也描述了名称和身份提供者