【问题标题】:What are the different NameID format used for?用于什么不同的 NameID 格式?
【发布时间】:2012-07-26 10:57:03
【问题描述】:

在 SAML 元数据文件中定义了几种 NameID 格式,例如:

<NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>

<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</NameIDFormat>

<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat>

谁能解释一下这些是干什么用的?有什么区别?

【问题讨论】:

    标签: single-sign-on saml opensaml


    【解决方案1】:

    请参阅 oasis SAML 规范SAML core pdf 的第 8.3 节。

    SP 和 IdP 通常就某个主题相互交流。 该主题应通过 NAME-IDentifier 进行标识,该名称应采用某种格式,以便对方根据该格式轻松识别。

    所有这些

    1.urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified [default]
    
    2.urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    
    3.urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
    
    4.urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    

    是名称标识符的格式。

    The name format for a transient ID in SAML 1 is urn:mace:shibboleth:1.0:nameIdentifier and in SAML 2 is urn:oasis:names:tc:SAML:2.0:nameid-format:transient

    瞬态适用于 [SAML Core 的第 8.3.8 节]

    表示元素的内容是一个标识符 瞬态语义,应该被视为不透明和临时的 依赖方的价值。

    可以使用未指定的,它完全取决于实体的实现。

    【讨论】:

    • 如果您要返回您的 userId 并且它是公开的并且您不打算很快更改它们,那么我相信您想要“持久”。
    • 我在规范中看不到任何说明“未指定”格式应被视为 [默认] 的内容。我会非常有兴趣找到参考。你还记得你从哪里得到的吗?
    • @alxgomz - 见第 455 行及the spec,特别是Unless otherwise specified by an element based on this type, if no Format value is provided, then the value urn:oasis:names:tc:SAML:1.0:nameid-format:unspecified (see Section 8.3.1) is in effect.
    • Transient 表示 NameID 将是随机的,例如 MfJkZue5tTB0mSqfUMe4iPqLd4e。如果完全相同的人删除了他们的 cookie 并完全重新验证,则 id 将更改。然而,有时默认值是“transient”并且它没有改变,但 NameID 实际上被配置为其他固定的东西,比如电子邮件或用户名。请注意,saml 响应中的瞬态 name-id 应该只在主题条件中 NotOnOrAfter 设置的时间之前被消耗,如果有的话。
    【解决方案2】:

    关于这个我想你可以参考http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html

    这是我对此的理解, 与身份联合用例一起提供这些概念的详细信息:

    • 永久标识符-

    IdP 提供持久标识符,它们用于链接到 SP 中的本地帐户,但它们单独标识为特定服务的用户配置文件。例如,持久标识符有点像:johnForAir、jonhForCar、johnForHotel,它们都只针对一个指定的服务,因为它需要链接到服务中的本地标识。

    • 瞬态标识符-

    临时标识符是IdP告诉SP会话中的用户已被授权访问SP上的资源,但用户的身份实际上并不提供给SP。例如,断言就像“匿名(Idp 不告诉 SP 他是谁)有权访问 SP 上的 /resource”。 SP 得到它并让浏览器访问它,但仍然不知道 Anonymity 的真实姓名。

    • 未指定的标识符-

    规范中对它的解释是“元素内容的解释留给单独的实现”。这意味着 IdP 为其定义了真正的格式,并假设 SP 知道如何解析来自 IdP 的格式数据响应。例如,IdP给出一个格式数据“UserName=XXXXX Country=US”,SP得到断言,可以解析提取出UserName为“XXXXX”。

    【讨论】:

    • 感谢“我对此的理解”。有时,在规范中综合信息的人的思考比规范本身更有价值。欣赏评论。
    【解决方案3】:

    这只是对服务提供者关于身份提供者返回的 NameID 的期望的提示。可以是:

    1. unspecified
    2. emailAddress - 例如john@company.com
    3. X509SubjectName - 例如CN=john,O=Company Ltd.,C=US
    4. WindowsDomainQualifiedName - 例如CompanyDomain\John
    5. kerberos– 例如john@realm
    6. entity - 这个用于识别提供基于 SAML 的服务的实体,看起来像一个 URI
    7. persistent - 这是一个不透明的特定于服务的标识符,必须包含一个伪随机值,并且不能追踪到实际用户,因此这是一项隐私功能。
    8. transient – 应视为临时的不透明标识符。

    【讨论】:

    • 当您说“这只是一个提示”时,IDP 是否可以提供与请求不同的内容?如果是这样,那还能用吗?
    • 规范中没有这方面的内容。
    【解决方案4】:

    1 和 2 是 SAML 1.1,因为这些 URI 是 OASIS SAML 1.1 标准的一部分。链接的 PDF for the OASIS SAML 2.0 standard 的第 8.3 节解释了这一点:

    在可能的情况下,现有的 URN 用于指定协议。对于 IETF 协议,使用指定协议的最新 RFC 的 URN。根据首次引入它们的规范集版本,专为 SAML 创建的 URI 引用具有以下词干之一:

    urn:oasis:names:tc:SAML:1.0:
    urn:oasis:names:tc:SAML:1.1:
    urn:oasis:names:tc:SAML:2.0:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2021-05-14
      • 2021-09-12
      • 1970-01-01
      • 2020-02-24
      相关资源
      最近更新 更多