2.4. 配置 JBoss EAP 实例
您可以将部署到 JBoss EAP 的应用配置为使用 elytron 或 传统 安全 子系统,但您无法将它配置为使用两者。
2.4.1. 配置 Elytron 子系统 复制链接链接已复制到粘贴板!
以下步骤假定您已配置且正常工作的 KDC、Kerberos 域和浏览器。
配置
kerberos-security-factory。/subsystem=elytron/kerberos-security-factory=krbSF:add(principal="HTTP/host@REALM", path="/path/to/http.keytab", mechanism-oids=[1.2.840.113554.1.2.2, 1.3.6.1.5.5.2])配置 Kerberos 的系统属性.
根据您的环境配置方式,您需要设置以下部分系统属性。
Expand 系统属性 描述 java.security.krb5.kdc
KDC 的主机名。
java.security.krb5.realm
域的名称。
java.security.krb5.conf
配置
krb5.conf文件的路径。sun.security.krb5.debug
如果为
true,则会启用调试模式。使用管理 CLI 在 JBoss EAP 中配置系统属性:
/system-property=java.security.krb5.conf:add(value="/path/to/krb5.conf")配置 Elytron 安全域以分配角色。
客户端的 Kerberos 令牌将提供主体,但您需要设法将该主体映射到您的应用的角色。实现这一目标的方法有多种,但本例创建了
文件系统realm,将用户添加到与 Kerberos 令牌中主体匹配的域中,并将角色分配给该用户。
/subsystem=elytron/filesystem-realm=exampleFsRealm:add(path=fs-realm-users, relative-to=jboss.server.config.dir)
/subsystem=elytron/filesystem-realm=exampleFsRealm:add-identity(identity=user1@REALM)
/subsystem=elytron/filesystem-realm=exampleFsRealm:add-identity-attribute(identity=user1@REALM, name=Roles, value=["Admin","Guest"])
添加
simple-role-decoder。/subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles)此
simple-role-decoder从Roles属性解码主体的角色。如果您的角色在不同的属性中,您可以更改此值。配置
安全域./subsystem=elytron/security-domain=exampleFsSD:add(realms=[{realm=exampleFsRealm, role-decoder=from-roles-attribute}], default-realm=exampleFsRealm, permission-mapper=default-permission-mapper)配置
http-authentication-factory,它使用kerberos-security-factory。/subsystem=elytron/http-authentication-factory=example-krb-http-auth:add(http-server-mechanism-factory=global, security-domain=exampleFsSD, mechanism-configurations=[{mechanism-name=SPNEGO, mechanism-realm-configurations=[{realm-name=exampleFsSD}], credential-security-factory=krbSF}])在
undertow子系统中配置application-security-domain:/subsystem=undertow/application-security-domain=app-spnego:add(http-authentication-factory=example-krb-http-auth)