nameidentifier索赔的目的是什么?
应该使用http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
types的声明吗?
这是主要的问题,这里还有其他的。
它与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
描述了名字和身份提供者。