10.2. SAML


SAML 2.0 与 OIDC 类似,但更加成熟。它从 SOAP 和 Web 服务规格分离,因此通常比 OIDC 更详细。SAML 2.0 是一种身份验证协议,可在身份验证服务器和应用程序之间交换 XML 文档。XML 签名和加密用于验证请求和响应。

通常,SAML 实现了两个用例。

第一个用例是请求红帽构建的 Keycloak 服务器的应用程序来验证用户。成功登录后,应用程序将收到 XML 文档。本文档包含一个指定用户属性的 SAML 断言。域数字签名了包含访问信息(如用户角色映射)的文档,用于确定允许用户在应用程序中访问的资源。

第二个用例是访问远程服务的客户端。客户端从红帽构建的 Keycloak 请求 SAML 断言,以代表用户调用远程服务。

10.2.1. SAML 绑定

红帽构建的 Keycloak 支持三种绑定类型。

10.2.1.1. 重定向绑定

重定向 绑定使用一系列浏览器重定向 URI 来交换信息。

  1. 用户使用浏览器连接到应用程序。应用程序检测到用户没有通过身份验证。
  2. 应用程序生成 XML 身份验证请求文档,并将其编码为 URI 中的查询参数。URI 用于重定向到红帽构建的 Keycloak 服务器。根据您的设置,应用程序也可以以数字方式签署 XML 文档,并将签名作为查询参数包含在重定向 URI 到红帽构建的 Keycloak 中。此签名用于验证发送请求的客户端。
  3. 浏览器会重定向到红帽构建的 Keycloak。
  4. 服务器提取 XML 身份验证请求文档,并验证数字签名(如果需要)。
  5. 用户输入其身份验证凭据。
  6. 身份验证后,服务器会生成 XML 身份验证响应文档。文档包含一个 SAML 断言,其中包含有关用户的元数据,包括用户具有的名称、地址、电子邮件和任何角色映射。文档通常使用 XML 签名进行数字签名,也可以加密。
  7. XML 身份验证响应文档以重定向 URI 中的查询参数的形式编码。URI 将浏览器切回到应用。数字签名也作为查询参数包含在内。
  8. 应用程序接收重定向 URI,并提取 XML 文档。
  9. 应用程序会验证域的签名,以确保它收到有效的身份验证响应。SAML 断言中的信息用于做出访问决策或显示用户数据。

10.2.1.2. POST 绑定

POST 绑定与 Redirect 绑定 类似,但 POST 绑定使用 POST 请求交换 XML 文档,而不使用 GET 请求。POST 绑定使用 JavaScript 在交换文档时向红帽构建的 Keycloak 服务器或应用程序发送 POST 请求。HTTP 使用 HTML 文档进行响应,其中包含包含嵌入式 JavaScript 的 HTML 表单。当页面加载时,JavaScript 会自动调用表单。

建议使用 POST 绑定,因为存在两个限制:

  • Security HEKETI- swigWith Redirect 绑定,SAML 响应是 URL 的一部分。的安全性较低,因为可以在日志中捕获响应。
  • HTTP 有效负载中的说明文档比在有限 URL 中提供更多对大量数据的范围。

10.2.1.3. ECP

增强的客户端或代理(ECP)是一个 SAML v.2.0 配置集,它允许在 Web 浏览器上下文外交换 SAML 属性。它通常由 REST 或基于 SOAP 的客户端使用。

10.2.2. Red Hat build of Keycloak Server SAML URI 端点

红帽构建的 Keycloak 为所有 SAML 请求都有一个端点。

http(s)://authserver.host/realms/{realm-name}/protocol/saml

所有绑定都使用此端点。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.