2.4.2. 配置传统安全子系统
JBoss EAP 附带了将 Kerberos(使用 SPNEGO 和 JBoss Negotiation)用于已部署应用的 SSO 所需的所有组件,但需要进行以下配置更改:
显示的管理 CLI 命令假定您在运行 JBoss EAP 单机服务器。有关将管理 CLI 用于 JBoss EAP 受管域的更多详细信息,请参见 JBoss EAP管理 CLI 指南。
配置服务器身份或主机安全域。
此安全域将容器本身身份验证到 KDC。它需要使用登录模块,该模块接受静态登录机制,因为实际用户不参与此连接。以下示例使用静态主体并引用包含凭据的 keytab 文件。
示例:创建服务器身份安全域
/subsystem=security/security-domain=host:add(cache-type=default) /subsystem=security/security-domain=host/authentication=classic:add() /subsystem=security/security-domain=host/authentication=classic/login-module=Kerberos:add(code=Kerberos, flag=required, module-options=[storeKey=true, refreshKrb5Config=true, useKeyTab=true, principal=host/testserver@MY_REALM, keyTab=/home/username/service.keytab, doNotPrompt=true, debug=false]) reload如果使用 IBM JDK,Kerberos 模块的选项会有所不同。
jboss.security.disable.secdomain.option系统属性必须设置为true。如需更多信息,请参阅配置相关系统属性。此外,登录模块应配置如下:示例:IBM JDK
/subsystem=security/security-domain=host:add(cache-type=default) /subsystem=security/security-domain=host/authentication=classic:add() /subsystem=security/security-domain=host/authentication=classic/login-module=Kerberos:add(code=Kerberos, flag=required, module-options=[principal=host/testserver@MY_REALM, keyTab="file:///root/keytab", credsType=acceptor]) reload有关配置
Kerberos登录模块的完整选项列表,请参阅 JBoss EAP 登录模块参考。配置 Web 应用安全域。
Web 应用安全域用于验证单个用户到 KDC。需要至少有一个登录模块来验证用户身份。还必须有办法搜索要应用到用户的角色。这可以通过许多不同的方式来实现,例如添加
<mapping> 来手动将用户映射到角色,添加第二个登录模块来映射用户到角色,等等。以下显示了一个 Web 应用安全域示例:
示例:创建服务器身份安全域
/subsystem=security/security-domain=app-spnego:add(cache-type=default) /subsystem=security/security-domain=app-spnego/authentication=classic:add() /subsystem=security/security-domain=app-spnego/authentication=classic/login-module=SPNEGO:add(code=SPNEGO, flag=required, module-options=[serverSecurityDomain=host]) reload有关配置
SPNEGO登录模块的完整选项列表,请参阅 JBoss EAP 登录模块参考。配置相关系统属性.
JBoss EAP 提供配置与连接 Kerberos 服务器相关的系统属性的功能。根据 KDC、Kerberos 域和网络配置,以下系统属性可能也可能不是必需的:
<system-properties> <property name="java.security.krb5.kdc" value="mykdc.mydomain"/> <property name="java.security.krb5.realm" value="MY_REALM"/> <property name="java.security.krb5.conf" value="/path/to/krb5.conf"/> <property name="jboss.security.disable.secdomain.option" value="true"/> <property name="sun.security.krb5.debug" value="false"/> </system-properties>Expand 属性 描述 java.security.krb5.kdc
KDC 的主机名。
java.security.krb5.realm
域的名称。
java.security.krb5.conf
配置
krb5.conf文件的路径。jboss.security.disable.secdomain.option
当设置为
true时,将禁用自动添加jboss.security.security_domain登录模块选项,以登录安全域中声明的模块。使用 IBM JDK 时必须设置为true。sun.security.krb5.debug
如果为
true,则会启用调试模式。注意默认情况下,安全域中定义的每个登录模块都自动添加
jboss.security.security_domain模块选项。此选项会导致登录模块出现问题,这些模块检查以确保只定义了已知的选项。IBM Kerberos 登录模块com.ibm.security.auth.module.Krb5LoginModule是其中一个模块。在启动 JBoss EAP 时,可以通过将jboss.security.disable.secdomain.option系统属性设置为true 来禁用添加此模块选项的行为。这可以通过配置<system-properties>、使用管理 CLI 或管理控制台,或者将-Djboss.security.disable.secdomain.option=true添加到启动参数来实现。有关配置系统属性的更多信息,请参阅 JBoss EAP管理 CLI 指南。