ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Flowable 身份管理:IDM 与 LDAP/Active Directory 集成完整指南

2026/8/17 17:37:51 拓冰建站 浏览量
Flowable 身份管理:IDM 与 LDAP/Active Directory 集成完整指南 Flowable 身份管理IDM 与 LDAP/Active Directory 集成完整指南【免费下载链接】flowable-userguideFlowable最新中文文档,ai自动生成BPM体验地址http://flow.je4.cn/#/login项目地址: https://gitcode.com/gh_mirrors/fl/flowable-userguideFlowable 身份管理是工作流引擎中至关重要的一环它决定了谁能登录系统、谁能办理任务、谁能看到哪些数据。Flowable 官方中文文档对身份管理IDM模块与 LDAP 集成方案有非常详细的讲解本文就为你梳理一份从入门到落地配置的完整指南帮助新手快速理解 Flowable 身份认证体系并一步步完成与公司现有 LDAP 或 Active DirectoryAD目录服务的对接让流程引擎无缝复用企业已有的用户与组织架构。什么是 Flowable 身份管理IDM从 Flowable V6 开始身份管理组件从流程引擎核心模块中独立出来拆分为flowable-idm-api、flowable-idm-engine、flowable-idm-spring以及flowable-idm-engine-configurator等多个模块。这样做的原因是身份管理并非流程引擎的核心在很多将 Flowable 嵌入业务系统的场景中并不需要这份额外的身份逻辑。默认情况下IDM 引擎会在 Flowable 流程引擎启动时自动初始化并且复用引擎同一个数据源因此你无需额外配置就能使用它。IDM 引擎管理着自己的数据库表结构核心实体包括User / UserEntity用户信息Group / GroupEntity组信息MembershipEntity组与用户的成员关系Privilege / PrivilegeEntity权限定义例如控制 Flowable Modeler 与 Task 应用界面的访问Token / TokenEntity应用界面使用的认证令牌上图就是 Flowable 用户界面中的用户管理页面可以看到用户详情ID、姓名、邮箱以及所属组如 accountancy 组这正是 IDM 引擎管理用户与组关系的最直观体现。如果你想深入了解身份管理的全部细节可以直接查阅官方文档的身份管理章节。什么时候需要 LDAP 集成很多公司已经使用 LDAP轻量级目录访问协议或 Active Directory 来统一管理企业内部的用户与组织架构。如果 Flowable 仍然使用自己独立的用户表就会造成两套用户体系用户信息重复维护、密码不同步非常痛苦。Flowable 提供了开箱即用的 LDAP 集成方案目前主要有两大用途通过 IdentityService 进行认证所有登录认证逻辑都由 IdentityService 统一处理直接对接 LDAP。获取用户所在组用于按候选组查询任务例如判断某个用户能看到哪些待办任务。简单说集成 LDAP 后用户登录 Flowable 时不再校验本地 IDM 表而是直接去企业 LDAP/AD 里验证身份并同步拉取用户所属的组信息。LDAP 集成三步走从依赖到配置 第一步添加 Maven 依赖在项目的pom.xml中加入flowable-ldap-configurator依赖即可获得 LDAP 集成代码dependency groupIdorg.flowable/groupId artifactIdflowable-ldap-configurator/artifactId version你的版本号/version /dependency第二步注入 LDAPConfigurator集成 LDAP 的核心是在流程引擎配置的idmProcessEngineConfigurator参数中注入org.flowable.ldap.LDAPConfigurator实例。这是一个高度可扩展的类如果默认实现不满足场景你可以轻松覆盖方法很多依赖的 Bean 也都是可插拔的。bean idprocessEngineConfiguration class...SomeProcessEngineConfigurationClass property nameidmProcessEngineConfigurator bean classorg.flowable.ldap.LDAPConfigurator property nameldapConfiguration bean classorg.flowable.ldap.LDAPConfiguration !-- 服务器连接参数 -- property nameserver valueldap://localhost / property nameport value33389 / property nameuser valueuidadmin, ouusers, oflowable / property namepassword valuepass / !-- 查询参数 -- property namebaseDn valueoflowable / property namequeryUserByUserId value((objectClassinetOrgPerson)(uid{0})) / property namequeryUserByFullNameLike value((objectClassinetOrgPerson)(|({0}*{1}*)({2}*{3}*))) / property namequeryAllUsers value(objectClassinetOrgPerson) / property namequeryGroupsForUser value((objectClassgroupOfUniqueNames)(uniqueMember{0})) / property namequeryAllGroups value(objectClassgroupOfUniqueNames) / !-- 属性映射配置 -- property nameuserIdAttribute valueuid / property nameuserFirstNameAttribute valuecn / property nameuserLastNameAttribute valuesn / property nameuserEmailAttribute valuemail / property namegroupIdAttribute valuecn / property namegroupNameAttribute valuecn / /bean /property /bean /property /bean第三步理解关键配置参数上面的配置可以分为三组掌握它们你就能应对 90% 的 LDAP 对接场景① 服务器连接参数参数说明serverLDAP 服务器地址如ldap://localhost:33389portLDAP 服务端口user/password连接 LDAP 使用的管理员账号与密码initialContextFactory连接工厂默认com.sun.jndi.ldap.LdapCtxFactory② 查询参数参数说明baseDn查询用户和组的基准 DN也可分别用userBaseDn、groupBaseDn覆盖queryUserByUserId按用户 ID 查询的 LDAP 语句{0}为注入的用户 IDqueryGroupsForUser查询用户所在组的语句{0}为注入的用户 DNqueryAllUsers/queryAllGroups无过滤条件查询全部用户 / 组的语句searchTimeLimit查询超时时间毫秒默认一小时③ 属性映射参数参数说明userIdAttribute/groupNameAttributeLDAP 属性与 Flowable 用户/组对象的映射字段userFirstNameAttribute/userLastNameAttribute用户姓、名对应的 LDAP 属性如cn、snuserEmailAttribute邮箱对应的 LDAP 属性如mail 如果默认查询语句无法满足你的目录结构还可以实现自定义的org.flowable.ldap.LDAPQueryBuilder来定制查询逻辑。完整参数说明可参考官方文档中的LDAP 集成章节与LDAP 参数详解章节。对接 Active Directory 的注意事项 ⚠️Active Directory 是微软的目录服务本质上也遵循 LDAP 协议因此上述配置基本通用。但社区用户反馈有一个关键坑对接 AD 时需要将InitialDirContext设置为Context.REFERRAL允许引用跟随否则查询可能失败。这个参数可以通过customConnectionParameters这个 Map 参数传入它允许你设置所有没有专属 setter 的 LDAP 连接参数例如连接池、特殊安全设置等property namecustomConnectionParameters map entry keyjava.naming.referral valuefollow / /map /property此外对接 AD 时通常还需要把queryUserByUserId中的用户类从inetOrgPerson调整为user属性映射改为sAMAccountName登录名、displayName显示名等 AD 专有属性具体取决于你们域的 schema 设计。身份管理进阶密码加密与组缓存 密码加密杜绝明文存储默认情况下IDM 数据库表中的用户密码是明文保存的。生产环境务必配置密码加密器。在流程引擎配置中注入加密器即可bean idbCryptEncoder classorg.springframework.security.crypto.bcrypt.BCryptPasswordEncoder/ bean idpasswordEncoder classorg.flowable.idm.spring.authentication.SpringEncoder constructor-arg refbCryptEncoder/ /bean bean idprocessEngineConfiguration class...SomeProcessEngineConfigurationClass property namepasswordEncoder refpasswordEncoder / /bean如果不使用 Spring也可以改用org.flowable.idm.engine.impl.authentication.ApacheDigester。开启组缓存减少 LDAP 访问压力每次查询用户所在组都会访问一次 LDAP 系统在高并发场景下压力不小。Flowable 提供了基于 LRU 的用户组缓存groupCacheSize缓存尺寸设置为大于 0 的值才启用缓存默认-1不缓存groupCacheExpirationTime缓存过期时间毫秒默认一小时例如缓存 500 个用户组、过期 30 分钟可以这样配置property namegroupCacheSize value500 / property namegroupCacheExpirationTime value1800000 /启用后30 分钟内同一用户的组查询会直接命中缓存显著降低 LDAP 服务器的查询压力。上图是 Flowable Admin 中的系统配置界面可以看到 Process API、Form API 等端点配置。在实际部署中LDAP 集成后的身份认证服务也通过类似的 REST 端点对外提供能力方便前后端应用统一调用。总结 Flowable 身份管理为流程引擎提供了完整的用户、组与权限体系而通过LDAPConfigurator可以非常优雅地将企业已有的 LDAP / Active Directory 目录服务接入其中实现统一的身份认证与组织架构复用。回顾本文的核心要点IDM 引擎开箱即用默认复用引擎数据源也可通过disableIdmEngine关闭LDAP 集成只需三步加依赖、配LDAPConfigurator、调属性映射对接 AD 记得处理 REFERRAL 跟随和sAMAccountName属性生产环境务必开启密码加密并按需启用用户组缓存提升性能。掌握了这些你就能在企业内网快速搭建一套与现有账号体系无缝衔接的 Flowable 流程平台让用户一次登录走遍流程。【免费下载链接】flowable-userguideFlowable最新中文文档,ai自动生成BPM体验地址http://flow.je4.cn/#/login项目地址: https://gitcode.com/gh_mirrors/fl/flowable-userguide创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考