JBPM 7.61.0与LDAP集成示例求助(Docker环境)
JBPM 7.61.0 与 LDAP 集成配置(Docker 部署适用)
由于新版本JBPM已移除KieLoginModule,现在直接基于Wildfly原生LDAP登录模块实现集成,以下是适配7.61.0版本的CLI配置步骤,以及对应的standalone.xml参考片段:
一、Docker环境下连接Wildfly CLI
先进入容器执行CLI命令:
docker exec -it <你的wildfly容器名称> ./bin/jboss-cli.sh --connect
二、创建LDAP安全域
执行以下CLI命令(替换占位符为你的LDAP实际参数):
# 创建安全域 /subsystem=security/security-domain=jbpm-ldap:add(cache-type=default) # 配置经典认证模式 /subsystem=security/security-domain=jbpm-ldap/authentication=classic:add() # 添加LDAP登录模块 /subsystem=security/security-domain=jbpm-ldap/authentication=classic/login-module=LDAP:add( code=org.jboss.security.auth.spi.LdapExtLoginModule, flag=required, module-options={ "java.naming.factory.initial" => "com.sun.jndi.ldap.LdapCtxFactory", "java.naming.provider.url" => "ldap://你的LDAP服务器地址:389", "java.naming.security.authentication" => "simple", "bindDN" => "cn=admin,dc=example,dc=com", # LDAP管理员账号DN "bindCredential" => "你的LDAP管理员密码", "baseCtxDN" => "ou=Users,dc=example,dc=com", # 用户所在的根DN "baseFilter" => "(uid={0})", # 匹配用户的过滤规则,{0}是登录用户名 "rolesCtxDN" => "ou=Groups,dc=example,dc=com", # 组所在的根DN "roleFilter" => "(member={1})", # 匹配用户所属组的规则,{1}是用户DN "roleAttributeID" => "cn", # 作为角色名的LDAP属性 "roleAttributeIsDN" => "false", "searchScope" => "SUBTREE_SCOPE", "allowEmptyPasswords" => "false" } )
三、让JBPM应用关联安全域
将jbpm.war和kie-server.war(如果用到)绑定到这个安全域:
# 注册应用安全域 /subsystem=undertow/application-security-domain=jbpm-ldap:add(security-domain=jbpm-ldap) # 绑定到jbpm应用 /deployment=jbpm.war/subsystem=undertow/security-domain=jbpm-ldap:add # 绑定到kie-server应用(可选) /deployment=kie-server.war/subsystem=undertow/security-domain=jbpm-ldap:add
四、LDAP角色到JBPM权限映射(可选)
JBPM需要特定角色(如admin、process-admin、user),可以通过角色映射模块将LDAP组转换为JBPM角色:
- 添加角色映射登录模块:
/subsystem=security/security-domain=jbpm-ldap/authentication=classic/login-module=RoleMapping:add( code=org.jboss.security.auth.spi.RoleMappingLoginModule, flag=optional, module-options={ "rolesProperties" => "file:${jboss.server.config.dir}/jbpm-roles.properties", "replaceRole" => "false" } )
- 创建
jbpm-roles.properties文件,内容示例:
# 格式:LDAP组名=JBPM角色1,JBPM角色2 ldap-admin-group=admin,process-admin ldap-user-group=user
- Docker部署时,将该文件挂载到Wildfly配置目录:
docker run -v ./jbpm-roles.properties:/opt/jboss/wildfly/standalone/configuration/jbpm-roles.properties ...
五、保存配置并重启
执行CLI命令生效配置:
:reload
对应的standalone.xml配置片段参考
如果需要直接修改standalone.xml,可参考以下片段:
<!-- 安全域配置 --> <security-domain name="jbpm-ldap" cache-type="default"> <authentication> <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required"> <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/> <module-option name="java.naming.provider.url" value="ldap://你的LDAP服务器地址:389"/> <module-option name="java.naming.security.authentication" value="simple"/> <module-option name="bindDN" value="cn=admin,dc=example,dc=com"/> <module-option name="bindCredential" value="你的LDAP管理员密码"/> <module-option name="baseCtxDN" value="ou=Users,dc=example,dc=com"/> <module-option name="baseFilter" value="(uid={0})"/> <module-option name="rolesCtxDN" value="ou=Groups,dc=example,dc=com"/> <module-option name="roleFilter" value="(member={1})"/> <module-option name="roleAttributeID" value="cn"/> <module-option name="roleAttributeIsDN" value="false"/> <module-option name="searchScope" value="SUBTREE_SCOPE"/> <module-option name="allowEmptyPasswords" value="false"/> </login-module> <login-module code="org.jboss.security.auth.spi.RoleMappingLoginModule" flag="optional"> <module-option name="rolesProperties" value="file:${jboss.server.config.dir}/jbpm-roles.properties"/> <module-option name="replaceRole" value="false"/> </login-module> </authentication> </security-domain> <!-- Undertow应用安全域 --> <subsystem xmlns="urn:jboss:domain:undertow:12.0"> <!-- 其他配置 --> <application-security-domains> <application-security-domain name="jbpm-ldap" security-domain="jbpm-ldap"/> </application-security-domains> <!-- 部署绑定 --> <deployments> <deployment name="jbpm.war"> <security-domain name="jbpm-ldap"/> </deployment> <deployment name="kie-server.war"> <security-domain name="jbpm-ldap"/> </deployment> </deployments> </subsystem>
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

