5.4. 红帽 JBoss 企业应用平台上 Web 应用程序的 SSO
此情景演示了 Web 应用如何利用 JBoss EAP 上的集群和非集群 SSO。创建四个 JBoss EAP 实例: EAP1、EAP2、EAP3 和 EAP4。EAP1 和 EAP2 作为单机服务器运行,EAP 3 和 EAP4 则作为双节点集群运行。已将 sampleAppA 和 sampleAppB 这两个 Web 应用部署到四个 JBoss EAP 实例中的每一个。
5.4.1. 安全性 复制链接链接已复制到粘贴板!
JBoss EAP 通过结合使用 security、undertow 和 infinispan 子系统的组合,支持集群和非集群 SSO 使用 Web 应用。security 子系统提供一个安全域来执行身份验证和授权,而 infinispan 和 undertow 子系统则帮助在 JBoss EAP 实例或 JBoss EAP 集群上的所有 Web 应用之间缓存和分发 SSO 信息。所有四个 EAP 实例都有一个安全域( sso-domain),配置为使用 IdentityLoginModule。sampleAppA 和 sampleAppB 已配置为使用 sso-domain 安全域来保护路径 /secure/*,并要求 示例 的角色来访问它。在 sso-domain 登录模块中配置了以下凭证:
| username | 密码 | 角色 |
|---|---|---|
| jane | samplePass | 示例 |
所有四个 JBoss EAP 实例也已配置为使用 standalone-full-ha 或 full-ha 配置文件 启动,它添加了 infinispan 子系统和在这种情况下启用 SSO 所需的其他功能。还添加了 Web cache-container 和 SSO replication-cache,并且 undertow 子系统已配置为同时使用它们。EAP1 和 EAP2 已将 undertow 子系统配置为非集群 SSO,而包含 EAP3 和 EAP4 的集群已配置为使用集群 SSO。
集群 Web 应用和集群的 SSO 之间有区别。集群 Web 应用是在集群节点上分布的,以分散托管该应用的负载。在标记为 distributable 的群集应用中,对现有会话的所有新会话和更改都将复制到群集的其他成员。集群 SSO 允许复制安全上下文和身份信息,无论应用本身是否集群。尽管这些技术可以一起使用,但它们是互斥的,可以独立使用。
5.4.2. 它如何工作 复制链接链接已复制到粘贴板!
在启动时,JBoss EAP 加载核心服务并启动管理 域 以及 SSO 信息的相关缓存 的安全性、undertow 和 infinispan 子系统。sampleAppA.war 和 sampleAppB.war 加载到所有四个 JBoss EAP 实例上,各自查找 sso-domain 来提供身份验证和授权。
如果 Jane 尝试访问 EAP1/sampleAppA/secure/hello.html,将要求她进行身份验证。在提供了正确的信息后,她将被允许查看 EAP1/sampleAppA/secure/hello.html。Jane 的会话将添加到 undertow 和 infinispan 子系统使用的 SSO 缓存中。如果她试图访问 EAP1/sampleAppB/secure/hello.html,则不会要求她重新进行身份验证。在 EAP1 上运行的 sampleAppB 将利用 undertow 子系统缓存和 infinispan 子系统查找她的会话,并授予她的访问权限,因为她已经过身份验证。如果 Jane 尝试访问 EAP2/sampleAppA/secure/hello.html 或 EAP2/sampleAppB/secure/hello.html,她将被要求再次进行身份验证,因为 EAP1 和 EAP2 不共享缓存。
如果 Jane 尝试访问 EAP3/sampleAppA/secure/hello.html,她将被要求进行身份验证,并且她的会话将存储在 SSO 缓存中。这些缓存存储在整个集群中;因此,如果 Jane 尝试登录 EAP3/sampleAppB/secure/hello.html、EAP4/sampleAppA/secure/hello.html 或 EAP4/sampleAppB/secure/hello.html,她就不必重新进行身份验证。如果 EAP3 或 EAP4 重新启动,Jane 的 SSO 信息将保留在缓存中,因为其他 JBoss EAP 实例和群集仍在运行,从而保留了缓存。同样,如果 Jane 的会话无效,它将在整个缓存中拔出,并且无论她尝试在群集中访问哪个应用或服务器,系统都会要求她重新进行身份验证。