Flowable 中文文档

Flowable 中文文档

  • 指南
  • Java文档
  • 博客
  • Flowable UI
  • 加入交流群
  • 英文文档

›BPMN 用户指南

Flowable 开源

  • 开源详情

BPMN 用户指南

  • 入门指南
  • 配置
  • Flowable API
  • Spring 集成
  • Spring Boot
  • 部署
  • BPMN 2.0 简介
  • BPMN 2.0 构件
  • 流程实例迁移
  • JPA
  • 历史
  • 身份管理
  • REST API
  • LDAP 集成
  • 工具

CMMN 用户指南

  • 配置
  • Flowable CMMN API
  • Spring 集成
  • 部署
  • CMMN 1.1
  • 架构
  • REST API

事件注册表用户指南

  • 配置
  • Flowable 事件注册表 API
  • Spring 集成
  • 部署
  • 事件注册表介绍
  • REST API

DMN 用户指南

  • 配置
  • Flowable DMN API
  • Spring 集成
  • 部署
  • DMN 1.1 介绍
  • REST API

应用指南

  • Flowable应用程序
  • Flowable 设计器

免责声明

  • 免责声明

LDAP 集成

公司通常已经以 LDAP 系统的形式拥有用户和组存储。Flowable 提供了一个开箱即用的解决方案,可以轻松配置 Flowable 应该如何连接 LDAP 系统。

在早期版本中,已经可以集成 LDAP,但从那时起,配置已经大大简化。然而,配置 LDAP 的"旧"方式仍然有效。更具体地说,简化的配置只是在"旧"基础设施之上的一个包装器。

使用方法

要将 LDAP 集成代码添加到你的项目中,只需在 pom.xml 中添加以下依赖项:

<dependency>
  <groupId>org.flowable</groupId>
  <artifactId>flowable-ldap-configurator</artifactId>
  <version>latest.version</version>
</dependency>

使用场景

LDAP 集成目前有两个主要使用场景:

  • 通过 IdentityService 进行身份验证。当通过 IdentityService 执行所有操作时,这可能很有用。

  • 获取用户的组。这在查询任务以查看某个用户可以看到哪些任务时很重要(即具有候选组的任务)。

配置

通过在流程引擎配置的 idmProcessEngineConfigurator 部分中注入 org.flowable.ldap.LDAPConfigurator 的实例来完成 LDAP 系统与 Flowable 的集成。这个类具有高度的可扩展性:方法可以轻松重写,如果默认实现不适合用例,许多依赖的 bean 都是可插拔的。

这是一个示例配置(注意:当然,以编程方式创建引擎时这是完全相似的)。现在不用担心所有属性,我们将在下一节中详细查看它们。

<bean id="processEngineConfiguration" class="...SomeProcessEngineConfigurationClass">
    ...
    <property name="idmProcessEngineConfigurator">
      <bean class="org.flowable.ldap.LDAPConfigurator">

        <property name="ldapConfiguration">
          <bean class="org.flowable.ldap.LDAPConfiguration">

            <!-- 服务器连接参数 -->
            <property name="server" value="ldap://localhost" />
            <property name="port" value="33389" />
            <property name="user" value="uid=admin, ou=users, o=flowable" />
            <property name="password" value="pass" />

            <!-- 查询参数 -->
            <property name="baseDn" value="o=flowable" />
            <property name="queryUserByUserId" value="(&(objectClass=inetOrgPerson)(uid={0}))" />
            <property name="queryUserByFullNameLike" value="(&(objectClass=inetOrgPerson)(|({0}=*{1}*)({2}=*{3}*)))" />
            <property name="queryAllUsers" value="(objectClass=inetOrgPerson)" />
            <property name="queryGroupsForUser" value="(&(objectClass=groupOfUniqueNames)(uniqueMember={0}))" />
            <property name="queryAllGroups" value="(objectClass=groupOfUniqueNames)" />

            <!-- 属性配置 -->
            <property name="userIdAttribute" value="uid" />
            <property name="userFirstNameAttribute" value="cn" />
            <property name="userLastNameAttribute" value="sn" />
            <property name="userEmailAttribute" value="mail" />

            <property name="groupIdAttribute" value="cn" />
            <property name="groupNameAttribute" value="cn" />

          </bean>
        </property>
      </bean>
    </property>
</bean>

属性

可以在 org.flowable.ldap.LDAPConfiguration 上设置以下属性:

.LDAP 配置属性
属性名 描述 类型 默认值

server

可以访问 LDAP 系统的服务器。例如 'ldap://localhost:33389'

String

port

LDAP 系统运行的端口

int

user

用于连接 LDAP 系统的用户 ID

String

password

用于连接 LDAP 系统的密码

String

initialContextFactory

用于连接 LDAP 系统的 InitialContextFactory 名称

String

com.sun.jndi.ldap.LdapCtxFactory

securityAuthentication

用于连接 LDAP 系统的 'java.naming.security.authentication' 属性的值

String

simple

customConnectionParameters

允许设置所有没有专用 setter 的 LDAP 连接参数。 参见 http://docs.oracle.com/javase/tutorial/jndi/ldap/jndi.html 了解自定义 属性。这些属性例如用于配置连接池、特定的 安全设置等。所有提供的参数都将在创建 LDAP 系统连接时使用。

Map<String, String>

baseDn

开始搜索用户和组的基础"专有名称"(DN)

String

userBaseDn

开始搜索用户的基础"专有名称"(DN)。如果未提供,将使用 baseDn(见上文)

String

groupBaseDn

开始搜索组的基础"专有名称"(DN)。如果未提供,将使用 baseDn(见上文)

String

searchTimeLimit

在 LDAP 中执行搜索时使用的超时时间(毫秒)

long

一小时

queryUserByUserId

按用户 ID 搜索用户时执行的查询。 例如:(&(objectClass=inetOrgPerson)(uid={0})) 这里,将返回 LDAP 中所有类为 'inetOrgPerson' 且 具有匹配的 'uid' 属性值的对象。 如示例所示,用户 ID 通过使用 {0} 注入。 如果仅设置查询对你的特定 LDAP 设置不够, 你可以选择插入不同的 LDAPQueryBuilder, 它允许比仅查询更多的自定义。

string

queryUserByFullNameLike

按全名搜索用户时执行的查询。 例如:(&(objectClass=inetOrgPerson)(

({0}={1})({2}={3})) ) 这里,将返回 LDAP 中所有类为 'inetOrgPerson' 且 具有匹配的名字和姓氏值的对象。 注意 {0} 注入 firstNameAttribute(如上所定义),{1} 和 {3} 是搜索文本, {2} 是 lastNameAttribute。如果仅设置查询对你的特定 LDAP 设置不够, 你可以选择插入不同的 LDAPQueryBuilder,它允许比仅查询更多的自定义。

string

queryAllUsers

在没有过滤器的情况下搜索用户时执行的查询。 例如:(objectClass=inetOrgPerson) 这里,将返回 LDAP 中所有类为 'inetOrgPerson' 的对象。

string

queryGroupsForUser

搜索特定用户的组时执行的查询。 例如:(&(objectClass=groupOfUniqueNames)(uniqueMember={0})) 这里,将返回 LDAP 中所有类为 'groupOfUniqueNames' 且 提供的 DN(匹配用户的 DN)是 'uniqueMember' 的对象。 如示例所示,用户 ID 通过使用 {0} 注入。 如果仅设置查询对你的特定 LDAP 设置不够, 你可以选择插入不同的 LDAPQueryBuilder,它允许比仅查询更多的自定义。

string

queryAllGroups

在没有过滤器的情况下搜索组时执行的查询。 例如:(objectClass=groupOfUniqueNames) 这里,将返回 LDAP 中所有类为 'groupOfUniqueNames' 的对象。

string

userIdAttribute

匹配用户 ID 的属性名称。 当查找 User 对象并在 LDAP 对象和 Flowable User 对象之间 进行映射时使用此属性。

string

userFirstNameAttribute

匹配用户名字的属性名称。 当查找 User 对象并在 LDAP 对象和 Flowable User 对象之间 进行映射时使用此属性。

string

userLastNameAttribute

匹配用户姓氏的属性名称。 当查找 User 对象并在 LDAP 对象和 Flowable User 对象之间 进行映射时使用此属性。

string

groupIdAttribute

匹配组 ID 的属性名称。 当查找 Group 对象并在 LDAP 对象和 Flowable Group 对象之间 进行映射时使用此属性。

string

groupNameAttribute

匹配组名称的属性名称。 当查找 Group 对象并在 LDAP 对象和 Flowable Group 对象之间 进行映射时使用此属性。

String

groupTypeAttribute

匹配组类型的属性名称。 当查找 Group 对象并在 LDAP 对象和 Flowable Group 对象之间 进行映射时使用此属性。

String

以下属性用于自定义默认行为或引入组缓存:

高级属性
属性名 描述 类型 默认值

ldapUserManagerFactory

如果默认实现不适用,设置 LDAPUserManagerFactory 的自定义实现。

LDAPUserManagerFactory 实例

ldapGroupManagerFactory

如果默认实现不适用,设置 LDAPGroupManagerFactory 的自定义实现。

LDAPGroupManagerFactory 实例

ldapMemberShipManagerFactory

如果默认实现不适用,设置 LDAPMembershipManagerFactory 的自定义实现。 注意这种情况很少见,因为成员关系通常在 LDAP 系统本身中管理。

LDAPMembershipManagerFactory 实例

ldapQueryBuilder

如果默认实现不适用,设置自定义查询构建器。 当 LDAPUserManager 或 LDAPGroupManager 对 LDAP 系统执行实际查询时, 会使用 LDAPQueryBuilder 实例。 默认实现使用在此实例上设置的属性, 如 queryGroupsForUser 和 queryUserById

org.flowable.ldap.LDAPQueryBuilder 实例

groupCacheSize

允许设置组缓存的大小。 这是一个 LRU 缓存,用于缓存用户的组,从而 避免每次需要知道用户的组时都访问 LDAP 系统。

如果值小于零,则不会实例化缓存。 默认设置为 -1,因此不进行缓存。

int

-1

groupCacheExpirationTime

设置组缓存的过期时间(毫秒)。 当获取特定用户的组时,如果组缓存存在, 这些组将在此属性设置的时间内存储在此缓存中。 例如,当在 00:00 获取组且过期时间为 30 分钟时, 在 00:30 之后获取该用户的组将不会从缓存中获取, 而是再次从 LDAP 系统获取。同样,在 00:00 - 00:30 之间 对该用户进行的所有组获取都将从缓存中获取。

long

一小时

注意使用 Active Directory 时:有人报告说对于 Active Directory,需要将 'InitialDirContext' 设置为 Context.REFERRAL。这可以通过上述的 customConnectionParameters 映射传递。

← PreviousNext →
  • 使用方法
  • 使用场景
  • 配置
  • 属性
Flowable 中文文档
文档
指南Java文档
法律
免责声明政策开源协议
联系方式
邮箱: [email protected]
版权 © 2025 Flowable AG. 中文文档基于 Apache License 2.0 协议翻译