65

在 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>

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

4

4 回答 4

68

请参阅oasis SAML 规范的此SAML 核心 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

是名称标识符的格式。

SAML 1 中瞬态 ID 的名称格式为 urn:mace:shibboleth:1.0:nameIdentifier,在 SAML 2 中为 urn:oasis:names:tc:SAML:2.0:nameid-format:transient

Transient 适用于 [ SAML Core的第 8.3.8 节]

指示元素的内容是具有瞬态语义的标识符,并且应该被依赖方视为不透明的临时值。

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

于 2014-02-10T16:35:34.003 回答
23

关于这一点,我认为您可以参考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”。

于 2017-06-12T08:29:01.117 回答
13

它只是提示服务提供者对身份提供者返回的 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– 不透明的标识符,应被视为临时的。
于 2018-07-29T14:56:57.690 回答
4

1 和 2 是 SAML 1.1,因为这些 URI 是 OASIS SAML 1.1 标准的一部分。OASIS SAML 2.0 标准的链接 PDF 的第 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:
于 2015-07-31T15:25:03.870 回答