搜索

10.2. SAML

download PDF

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 请求而不是使用 GET 请求来交换 XML 文档。在交换文档时,POST Binding 使用 JavaScript 将 POST 请求发送到红帽构建的 Keycloak 服务器或应用程序。HTTP 以 HTML 文档响应,其中包含嵌入式 JavaScript 的 HTML 表单。当页面加载时,JavaScript 会自动调用表单。

建议因为两个限制而发布 POST 绑定:

  • security wagon-categoriesWith 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 Endpoints

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

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

所有绑定都使用此端点。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.