如何在 SAML 2.0 Web 浏览器 SSO 的 AuthnRequest 中标识主体



我是SAML的新手,在完全理解完整的SAML2 SSO过程时遇到了一些麻烦。

具体来说,当服务提供商使用元素响应资源请求时,元素中的哪条数据标识了身份提供商要验证的委托人(即用户(?

例如,在以下 AuthnRequest 中似乎没有任何内容可以标识主体:

<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="identifier_1"
Version="2.0"
IssueInstant="2004-12-05T09:21:59"
AssertionConsumerServiceIndex="0">
<saml:Issuer>https://sp.example.com/SAML2</saml:Issuer>
<samlp:NameIDPolicy
  AllowCreate="true"
  Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/></samlp:AuthnRequest>

标识主体的信息是在 AuthnRequest 到达浏览器后添加的(可能来自 cookie?(,还是标识特定用户的信息根本不会发送到身份提供者?

该规范在身份验证请求(SAML 配置文件,http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf,第 4.1.4.1 节(上说了以下内容:

请注意,服务提供商可能会<Subject>在 请求命名它希望提供的实际身份 接收断言。

然而,这很少使用,也没有在不同的提供商/堆栈中广泛实施,因此您的里程可能会有所不同。事实上,有些部署配置文件明确禁止使用该<Subject>,例如 http://saml2int.org/profile/current/8.2节说:

<saml2p:AuthnRequest>消息不得包含<saml2:Subject> 元素。

通常的交互是服务提供商确定身份提供程序,而不是用户。后者留给身份提供程序,包括标识和身份验证。这是一个更干净的界面,可以避免两者之间在标识符和帐户方面发生潜在冲突。

相关内容

  • 没有找到相关文章

最新更新