第 3 章 红帽 JBoss 企业应用平台 SSO 的其他用例
除了开箱即用功能外,JBoss EAP 还支持 SSO 的其他用例,包括 SAML(适用于浏览器的 SSO)、基于桌面的 SSO 和 SSO(通过安全令牌服务)。
3.1. 使用 SAML 基于浏览器的 SSO 复制链接链接已复制到粘贴板!
在基于浏览器的 SSO 场景中,一个或多个 Web 应用(称为服务提供商)在中心式架构中连接到集中式身份提供程序。身份提供商(IDP)充当中央来源或 hub,用于所有服务提供商或 spoke 的身份和角色信息。当未经身份验证的用户尝试访问其中一个服务提供商时,该用户会被重定向到 IDP 来执行身份验证。IDP 验证用户,发布 SAML 令牌指定主体的角色,并将它们重定向到请求的服务提供商。从那里,SAML 令牌在所有关联的服务提供商上使用,以确定用户身份和访问权限。这种从服务提供商开始使用 SSO 的具体方法称为服务提供商发起的流。
与许多 SSO 系统一样,JBoss EAP 也使用 IDP 和 SP。这两个组件都启用在 JBoss EAP 实例中运行,并与 JBoss EAP security 子系统配合工作。SAML v2、基于 FORM 的 Web 应用安全性和 HTTP/POST 和 HTTP/Redirect 绑定也用于实施 SSO。
若要创建身份提供程序,可在 JBoss EAP 实例中创建安全域(如 idp-domain ),它定义身份验证和授权机制(如 LDAP 或数据库)以充当身份存储。Web 应用(如 IDP.war )配置为使用额外的模块( org.picketlink )以结合使用 IDP 和 idp-domain 并部署到相同的 JBoss EAP 实例。IDP.war 将充当身份提供程序。要创建服务提供商,将创建一个使用 SAML2LoginModule 作为身份验证机制的安全域,如 sp-domain。Web 应用(如 SP.war )配置为使用其他模块( org.picketlink ),并且包含使用 sp-domain 的服务提供商 valve。SP.war 已部署到配置了 sp-domain 的 JBoss EAP 实例,并且现在是服务供应商。此过程可以复制到一个或多个 SP,如 SP2.war、SP3.war 等,也可在一个或多个 JBoss EAP 实例之间复制。
3.1.1. 身份提供商启动流 复制链接链接已复制到粘贴板!
在大多数 SSO 场景中,SP 通过向 IDP 发送身份验证请求来启动流,后者将 SAML 响应发送到具有有效断言的 SP。这称为 SP 启动流。SAML 2.0 规范定义了另一个流,称为 IDP 启动或非请求的 Response 流。在这种情况下,服务提供商不会启动身份验证流来接收来自 IDP 的 SAML 响应。流程从 IDP 方面开始。旦通过身份验证,用户可以从列表中选择特定的 SP,并重定向到 SP 的 URL。不需要特殊配置来启用此流。
演练
- 用户 访问 IDP.
- IDP 认为没有 SAML 请求或响应,假设使用 SAML 的 IDP 启动流场景。
- IDP 要求用户进行身份验证。
- 身份验证后,IDP 会显示托管部分,用户通过此部分获得链接到所有 SP 应用程序的页面。
- 用户选择一个 SP 应用程序。
- IDP 在查询参数 SAML 响应中,使用 SAML 断言将用户重定向到 SP。
- SP 检查 SAML 断言并提供访问权限。
3.1.2. 全局注销 复制链接链接已复制到粘贴板!
在一个 SP 中启动的全局注销会从 IDP 和所有 SP 注销用户。如果用户在执行全局注销后试图访问任何 SP 或 IDP 的安全部分,则必须重新进行身份验证。