【问题标题】:What is the purpose of nameidentifier claim?nameidentifier 声明的目的是什么?
【发布时间】:2011-08-14 09:58:15
【问题描述】:

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

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

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

相对于名称声明,它对于特定用户是永久的吗?

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

【问题讨论】:

  • 你找到答案了吗,安东?
  • 嗨,@TommyJakobsen。很不幸的是,不行。最后,我们没有在我们的应用程序中使用这个声明。

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


【解决方案1】:

Name,就是这个名字。如果我们在谈论人,请想想“埃里克”;服务器“file01”。

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

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

独特与否?

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

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

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

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

规范的文本告诉我,我需要能够使用这三个属性的组合来找到一个人,但它没有断言唯一性。我不能有两个指向同一个用户的条目吗?似乎如此。此外,在NameIdentifier 不足以唯一标识名称的情况下,规范难道不会指出NameQualifier 属性是必需的吗?

那么这一切会导致什么?

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

【讨论】:

  • 我认为 nzpcmad 的回答在这里更加清晰。如果一个名称应该是唯一的,它就不仅仅是一个名称。我对是否应该使用 Name 或 NameIdentifier 来存储用户名感到困惑。现在我知道了。
【解决方案2】:

根据The Role of Claims

名称 用户的唯一名称

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

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

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

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

【讨论】:

  • 感谢@nzpcmad 的关注。然而,我仍然不清楚“名称标识符”是什么意思。 “用户的 SAML 名称标识符”短语中没有说明。
【解决方案3】:

ClaimTypes.Name 用于用户名ClaimTypes.NameIdentifier 将用户的身份 指定为对象透视图。如果您将它们添加到一种ClaimIdentity 对象中,该对象可让您访问User.Identity 方法(例如在dotnet 世界中),它们是GetUserName()GetUserId()

【讨论】:

    【解决方案4】:

    nameidentifier 声明应该用于获取唯一的用户名。

    对于 Windows 身份验证:

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier域\术士

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name0#.w|域\warlock

    domain\warlock 是 Windows 登录名

    对于基于声明的身份验证:

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifierwarlock@localhost.com

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name05.t|myidentityprovider|warlock@localhost.com

    电子邮件被指定为标识符声明

    如您所见,.../identity/claims/name 也描述了名称和身份提供者。

    【讨论】:

    • 这个例子不是很清楚,与其他两个答案背道而驰,没有支持证据。接受的答案说 nameidentifier 基本上应该是一个唯一的整数或 GUID,而 name 应该是唯一的用户名。
    • 链接已损坏
    猜你喜欢
    • 2019-03-02
    • 2016-11-28
    • 2012-07-13
    • 2013-05-17
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多