10.2. SAML
SAML 2.0 与 OIDC 类似,但更成熟。它从 SOAP 和 Web 服务消息传递规格中分离,因此通常比 OIDC 更详细。SAML 2.0 是一个身份验证协议,可在身份验证服务器和应用程序间交换 XML 文档。XML 签名和加密用于验证请求和响应。
通常,SAML 实施两个用例。
第一个用例是请求 Red Hat Single Sign-On 服务器验证用户的应用程序。成功登录后,应用程序将收到 XML 文档。本文档包含指定用户属性的 SAML 断言。域对文档进行数字签名,该文档包含应用用于访问应用的访问信息(如用户角色映射)。
第二个用例是访问远程服务的客户端。客户端请求来自 Red Hat Single Sign-On 的 SAML 断言,以代表用户调用远程服务。
10.2.1. SAML 绑定
红帽单点登录支持三种绑定类型:
10.2.1.1. 重定向绑定
重定向 绑定使用一系列浏览器重定向 URI 来交换信息。
- 用户使用浏览器连接至应用。应用程序检测到用户没有通过身份验证。
- 应用程序生成 XML 身份验证请求文档,并将其编码为 URI 中的查询参数。URI 用于重定向到 Red Hat Single Sign-On 服务器。根据您的设置,应用程序也可以对 XML 文档进行数字签名,并将签名作为查询参数包含在重定向 URI 到 Red Hat Single Sign-On 中。此签名用于验证发送请求的客户端。
- 浏览器重定向到 Red Hat Single Sign-On。
- 如果需要,服务器提取 XML 身份验证请求文档并验证数字签名。
- 用户输入其身份验证凭据。
- 身份验证后,服务器会生成 XML 身份验证响应文档。本文档包含包含用户的 SAML 断言,其中包含有关用户名、地址、电子邮件以及用户所拥有的角色映射的元数据。文档通常使用 XML 签名进行数字签名,也可以加密。
- XML 身份验证响应文档在重定向 URI 中以查询参数形式编码。URI 使浏览器返回到应用程序。数字签名还包含为查询参数。
- 应用程序接收重定向 URI,并提取 XML 文档。
- 应用程序会验证 realm 的签名,以确保它收到有效的身份验证响应。SAML 断言内的信息用于做出访问决策或显示用户数据。
10.2.1.2. POST 绑定
POST 绑定与 Redirect 绑定类似,但 POST 绑定使用 POST 请求交换 XML 文档,而不是使用 GET 请求。POST Binding 使用 JavaScript 使浏览器在交换文档时向 Red Hat Single Sign-On 服务器或应用程序发送 POST 请求。HTTP 使用 HTML 文档响应,其中包含有嵌入式 JavaScript 的 HTML 表单。当页面加载时,JavaScript 会自动调用表单。
建议因为两个限制而使用 POST 绑定:
- 安全 baseDomain-sandboxedWith Redirect 绑定,SAML 响应是 URL 的一部分。不太安全,因为可以在日志中捕获响应。
- 在 HTTP 有效负载中调整文档的大小提供了比在有限 URL 中大量数据的范围。
10.2.1.3. ECP
增强的客户端或代理(ECP)是一个 SAML v.2.0 配置集,它允许在 Web 浏览器上下文外交换 SAML 属性。它通常由 REST 或 SOAP 的客户端使用。