1.2. 如何使用单点登录进行 SAML v2 工作


JBoss EAP 安全架构指南介绍了基于浏览器的单点登录 (使用 SAML 和多个红帽 JBoss 企业应用平台实例)以及多个基于浏览器的单点登录指南,以及使用基于浏览器的单点登录和 SAML 部分的多应用程序。本节更加深入地阐述 SAML 配置集和与基于浏览器的单点登录与 SAML v2 相关的绑定。

1.2.1. Web 浏览器单点登录配置文件

Web 浏览器单点登录 配置文件以浏览器代理的形式指定 IDP、SP 和主体,处理基于浏览器的单点登录。SP 和 IDP 都具有多个绑定,每个绑定都可以在 Web 浏览器单点登录配置文件中使用,从而允许许多可能的流。另外,这个配置集还支持从 IDP 或 SP 启动的消息流。此配置集还支持 IDP 将 SAML 断言推送到 SP 或从 IDP 中拉取断言的 SP。从 SP 或 IDP 开始的流程将在 JBoss EAP 安全架构指南 的高级别加以说明。从 IDP 推送的 SAML 断言利用 HTTP POST 消息或 HTTP 重定向。由 SP 拉取的 SAML 断言涉及将工件发送到接收方,然后被解引用来获取断言。

Web 浏览器单点登录配置集的基本流如下:

  1. 对 SP 的主要 HTTP 请求.

    主体首先尝试使用 HTTP 用户代理(如浏览器)在 SP 访问受保护的资源。如果主体已签发了具有有效安全性上下文的 SAML 令牌,SP 将允许或拒绝主体。这是最后一步。否则,SP 将尝试查找用于身份验证请求的 IDP。

  2. SP 确定 IDP.

    SP 查找支持 SP 的首选绑定的 IDP 及其端点。这允许 SP 向 IDP 发送身份验证请求。此过程的具体方式可能因实施而异。

  3. 使用主体从 SP 向 IDP 发出身份验证请求.

    SP 确定 IDP 位置和端点后,SP 以 <AuthnRequest> 消息的形式发出身份验证请求,该消息将由用户代理向 IDP 主体发送。HTTP 重定向、HTTP POST 或 HTTP 工件 SAML 绑定可用于使用用户代理将消息传输到 IDP。

  4. IDP 标识主体.

    身份验证请求通过主体发送到 IDP 后,主体将由 IDP 标识。识别方法不是通过 Web 浏览器单点配置文件具体定义,可以通过多种方式完成,例如使用 FORM 进行身份验证,使用现有的 会话信息、kerberos 身份验证等。

  5. IDP 问题响应 SP.

    确定了主体后,IDP 以 <Response> 信息的形式发出一个响应,以返回 SP,以便使用用户代理授予或拒绝主体访问。此消息将至少包含一个身份验证断言,也可用于指示错误。HTTP POST 或 HTTP 工件可用于传输此消息,但由于大多数用户代理的 URL 长度限制而无法使用 HTTP 重定向。如果用户代理发起基于 IDP 的流(例如,尝试直接访问 IDP 而不是 SP),则此过程从这一步开始。如果成功,HTTP POST 或 HTTP Artifact 将发送到一个位置,该位置在 IDP 中预先配置。

  6. SP 允许或拒绝访问主体.

    SP 收到 Response 后,可以通过创建安全上下文或拒绝访问或执行自己的错误处理,向主体授予所请求资源的访问权限。

注意

JBoss EAP 不支持 SAML 工件绑定。

HTTP 重定向与.POST Bindings

HTTP 重定向绑定利用 HTTP GET 请求 和 URL 查询参数来传输协议消息。以这种方式发送的消息也在接收方发送和解码前 URL 和 Base-64 编码。HTTP POST 绑定使用表单数据发送消息,并在消息上执行 base-64 编码/decode。SP 和 IDP 都可以使用重定向或 POST 绑定来传输和接收消息。由于某些情况下 URL 长度的限制,通常在传递短消息时使用 HTTP 重定向,并在传递较长的消息时使用 HTTP POST

1.2.2. 全局注销配置集

Global Logout Profile 允许一个通过一组 I/P 和 SP 进行身份验证的主体注销,并将该断言传播到一个或多个关联的 Is 和 SP。

当主体通过 IDP 验证时,主体和 IDP 建立了身份验证会话。然后,IDP 根据该身份验证向各个 SP 或依赖方发出断言。如果主体试图访问那些 SP 中的安全资源,SP 可以根据 IDP 发布的该断言(从而依赖于 IDP)与主体建立额外的会话。

旦创建了某一会话或一组会话,则一个主体可能会通过不同的方式单独注销会话,也可以使用全局注销配置文件注销所有会话、所有 SP 和 IDP。Global Logout Profile 可以在其流中使用 HTTP 重定向、HTTP POST 或 HTTP Artifact 绑定。在某些情况下,它还可以使用 SOAP 绑定,这些情况并不属于本文档的范围。

注意

单注销配置文件可用作全局注销配置文件的代号。

注意

JBoss EAP 不支持 SAML 工件绑定。

与 Web 浏览器单点登录配置文件流一样,Global Logout Profile 流可以在 IDP 或 SP 上启动。

Global Logout Profile 的基本流程如下:

  1. 由会话参与者发布到 IDP 的注销.

    会议参与者,如服务提供商或其他依赖方,终止其自身与主体的会话,并以 <LogoutRequest> 信息的形式向 IDP 发送一个最初为主体发布安全断言的 IDP。此请求可以直接在 IDP 和依赖方之间发送,或者通过使用主体的用户代理作为传递间接发送。

  2. IDP 标识会话参与者.

    旦 IDP 收到注销请求,它将使用该请求来确定哪些会话要终止依赖方,包括作为会话授权或会话参与者 IDP 拥有的任何会话。对于每个会话,IDP 向依赖方发出注销请求,并等待来自双方的注销响应,然后再向原始会话参与者发出新的注销响应。如果在 IDP 上启动全局 Logout Profile 流,则流程从此步骤开始,其他一些机制则用于确定会话和 SP。

  3. IDP 发布的注销.

    在 IDP 确定所有会话和相关的依赖方后,它会以 <LogoutRequest> 信息的形式向每个依赖方发送 Logout 请求,并等待 Logout Response。这些请求可以在 IDP 和依赖方之间直接发送,或者间接通过主体的用户代理发送。

  4. 注销会议参与者或授权机构发出的回复.

    每个依赖方(包括 IDP 本身)会尝试根据 Logout Request 中的 IDP 指示终止会话,并以 <LogoutResponse> 消息的形式返回 Logout Response,返回 IDP。与注销请求一样,可以将响应直接在依赖方和 IDP 之间发出,或者间接通过主体的用户代理发出。

  5. IDP 发布对原始会话参与者的注销响应.

    从依赖方收到所有注销响应后,IDP 会以 <LogoutResponse> 信息的形式发送一个新的注销响应,返回请求注销的原始会话参与者。如同此流程的其他部分一样,此响应可直接在 IDP 和会话参与者之间传递,或者间接通过主体的用户代理进行传递。如果在 IDP 上发起 Logout Request,则省略这一步。

注意

JBoss EAP 不支持在 JBoss EAP 中支持 IDP 和 SP 部分的全球注销配置文件之间的直接通信。

1.2.3. 多个 IDP 和 Identity Discovery Profile

使用 SAML v2 基于浏览器的单点登录也支持有多个 IDP,并可用于 Web 浏览器单点登录配置文件和全局注销配置集。如果配置了多个 IDP,则会使用 Identity Discovery SAML 配置集来确定主体使用的 IDP。这可以通过读取和写入带有域信息和 IDP 列表的 Cookie 来实现。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部