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 的会话无效,它将在整个缓存中拔出,并且无论她尝试在群集中访问哪个应用或服务器,系统都会要求她重新进行身份验证。