You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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角色:

  1. 添加角色映射登录模块:
/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"
    }
)
  1. 创建jbpm-roles.properties文件,内容示例:
# 格式:LDAP组名=JBPM角色1,JBPM角色2
ldap-admin-group=admin,process-admin
ldap-user-group=user
  1. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:24:44