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 - keytool -genkeypair -alias localhost -keyalg RSA -keysize 1024 -validity 365 -keystore keystore.jks -dname "CN=localhost" -keypass secret -storepass secret- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 创建 - 密钥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)- /subsystem=elytron/key-store=example-keystore:add(path=keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=secret}, type=JKS)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 添加安全域。 - 使用以下管理 CLI 命令创建文件系统 - 域,这是用户在本地文件系统中存储的身份存储:- /subsystem=elytron/filesystem-realm=example-realm:add(path=/tmp/example-realm) - /subsystem=elytron/filesystem-realm=example-realm:add(path=/tmp/example-realm)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下管理 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}]- /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}]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 使用 SSO 的应用应当使用 - HTTP FORM 身份验证,因为它们通常需要为用户提供登录页面。
- 在 - undertow子系统中创建应用安全域。注意- 如果您已在 - undertow子系统中定义了- application-security-domain,只需将它用于为您的应用启用单点登录,您可以跳过这一步。- /subsystem=undertow/application-security-domain=other:add(security-domain=example-domain) - /subsystem=undertow/application-security-domain=other:add(security-domain=example-domain)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 默认情况下,如果您的应用未在 - 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})- /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})- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 可以通过导航到 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 提供开箱即用的支持。