Single sign on 不同的NameID格式用于什么?

Single sign on 不同的NameID格式用于什么?,single-sign-on,saml,opensaml,Single Sign On,Saml,Opensaml,在SAML元数据文件中定义了几种名称ID格式,例如: <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.

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

<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>
urn:mace:shibboleth:1.0:nameIdentifier
urn:oasis:names:tc:SAML:1.1:nameid格式:未指定
urn:oasis:names:tc:SAML:2.0:nameid格式:transient

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

请参阅本oasis SAML规范第8.3节

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

所有这些

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
是名称标识符的格式

瞬态适用于[本规范第8.3.8节]

指示元素的内容是具有 瞬态语义,应被视为不透明和临时的 依赖方的价值


可以使用Unspecified,这完全取决于实体根据自己的意愿实现。

1和2是SAML 1.1,因为这些URI是OASIS SAML 1.1标准的一部分。链接PDF的第8.3节对此进行了解释:

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

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

关于这一点,我想你可以参考

这是我对这件事的理解, 使用身份联合用例提供这些概念的详细信息:

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

  • 瞬时标识符-
瞬时标识符是指IdP告诉SP会话中的用户已被授权访问SP上的资源,但用户的身份实际上并不提供给SP。例如,类似于“匿名(Idp不告诉SP他是谁)有权访问SP上的资源”的断言。SP得到了它并允许浏览器访问它,但仍然不知道匿名者的真实姓名

  • 未指定标识符-

规范中对此的解释是“元素内容的解释留给各个实现”。这意味着IdP定义了它的实际格式,并且假设SP知道如何解析IdP响应的格式数据。例如,IdP提供一个格式数据“UserName=XXXXX Country=US”,SP获取断言,并可以对其进行解析并提取用户名“XXXXX”

它只是一个提示,提示服务提供者从身份提供者返回的NameID中可以得到什么。它可以是:

  • 未指定
  • 电子邮件地址
    –例如
    john@company.com
  • X509SubjectName
    –例如
    CN=john,O=Company Ltd.,C=US
  • WindowsDomainQualifiedName
    –例如
    CompanyDomain\John
  • kerberos
    –例如
    john@realm
  • 实体
    –该实体用于标识提供基于SAML的服务的实体,看起来像URI
  • persistent
    –这是一个不透明的特定于服务的标识符,必须包含伪随机值,并且不能追踪到实际用户,因此这是一个隐私功能
  • 暂时的
    –不透明的标识符,应视为临时的

  • 如果您正在返回您的用户ID,并且它是公共的,并且您不打算在短期内更改它们,那么我相信您需要“持久性”。我在规范中看不到任何说明“未指定”格式应被视为[默认]格式的内容。我很有兴趣找到这方面的参考资料。还记得从哪里得到的吗?@alxgomz-请参见中的第455行和第455行,特别是
    ,除非基于此类型的元素另有规定,否则如果未提供格式值,则值urn:oasis:names:tc:SAML:1.0:nameid Format:unspecified(请参见第8.3.1节)有效。
    Transient表示NameID将是随机的,例如MfJkZue5tTB0mSqfUMe4iPqLd4e。如果完全相同的人删除他们的cookie并完全重新验证,则id将更改。但是,有时默认值是“暂时的”,并且没有更改,但NameID实际上配置为其他固定值,如电子邮件或用户名。请注意,saml响应中的临时名称id只应在主题条件中的NOTONORFERT中设置的时间之前被使用,如果有一个的话。对于“我对此的理解”我感到非常荣幸。有时候,一个综合了规范中信息的人的思考比规范本身更有价值。感谢您的评论。当您说“这只是一个提示”时,IDP是否可以提供所要求的内容以外的内容?如果是这样的话,它还能工作吗?规范中没有这方面的内容。