2.9. 配置应用程序以使用容器管理的单点登录
您可以通过 Elytron FORM 身份验证
方法将 JBoss EAP 配置为将容器管理的单点登录用于应用。这允许用户进行身份验证一次,并访问 FORM 身份验证
方法保护的其他资源,而无需重新进行身份验证。
在以下情况下,相关的单点登录会话无效:
- 没有有效的本地会话。
- 从应用注销。
只要这些实例在集群中,就可以在不同的 JBoss EAP 实例上部署的应用之间使用单点登录。
创建
密钥存储
。需要
密钥存储
以在参与 SSO 的不同服务器之间配置安全通信通道。此通道用于交换创建或销毁单点登录会话时发生的事件的消息,分别登录和注销。要在
elytron
子系统中创建密钥
存储,请首先创建一个 Java KeyStore,如下所示:keytool -genkeypair -alias localhost -keyalg RSA -keysize 1024 -validity 365 -keystore keystore.jks -dname "CN=localhost" -keypass secret -storepass secret
创建
密钥store.jks
文件后,执行以下管理 CLI 命令在 Elytron 中创建密钥存储
定义:/subsystem=elytron/key-store=example-keystore:add(path=keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=secret}, type=JKS)
添加安全域。
使用以下管理 CLI 命令创建文件系统
域
,这是用户在本地文件系统中存储的身份存储:/subsystem=elytron/filesystem-realm=example-realm:add(path=/tmp/example-realm)
使用以下管理 CLI 命令创建
安全域
:/subsystem=elytron/security-domain=example-domain:add(default-realm=example-realm,permission-mapper=default-permission-mapper,realms=[{realm=example-realm,role-decoder=groups-to-roles}]
注意使用 SSO 的应用应当使用
HTTP FORM 身份验证
,因为它们通常需要为用户提供登录页面。在
undertow
子系统中创建应用安全域。注意如果您已在
undertow
子系统中定义了application-security-domain
,只需将它用于为您的应用启用单点登录,您可以跳过这一步。/subsystem=undertow/application-security-domain=other:add(security-domain=example-domain)
注意默认情况下,如果您的应用未在
jboss-web.xml
文件中定义任何特定的安全域,应用服务器将以其他
名称选择一个。更新
undertow
子系统,以启用单点登录并使用密钥存储:单点登录启用到
undertow
子系统中的特定application-security-domain
定义。您用于部署应用的服务器必须使用相同的配置。要启用单点登录,只需更改
undertow
子系统中的现有application-security-domain
,如下所示:/subsystem=undertow/application-security-domain=other/setting=single-sign-on:add(key-store=example-keystore, key-alias=localhost, domain=localhost, credential-reference={clear-text=secret})
注意可以通过导航到 Configuration
Subsystems Web(Under tow
)→ Application Security Domain,使用管理控制台配置 undertow 子系统中的application-security-domain
。如需有关 SSO 属性及其定义的更多信息,请参阅单点登录属性参考。
配置应用的
web.xml
和jboss-web.xml
文件。您的
web.xml
和jboss-web.xml
必须更新为使用您在 JBoss EAP 中配置的application-security-domain
。例如,将 Web 应用程序配置为使用 Elytron 或传统安全性进行身份验证。
JBoss EAP 为 使用 undertow
和 infinispan
子系统的集群和非集群 SSO 提供开箱即用的支持。