写点什么

详细解析工作流 Activiti 框架中的 LDAP 组件!实现对工作流信息的访问控制和维护

发布于: 2021 年 06 月 12 日
详细解析工作流Activiti框架中的LDAP组件!实现对工作流信息的访问控制和维护

Activiti 集成 LDAP 简介

  • 企业在 LDAP 系统中保存了用户和群组信息,Activiti 提供了一种解决方案,通过简单的配置就可以让 activit 连接 LDAP

用法

  • 要想在项目中集成 LDAP,需要在 pom.xml 中添加 activiti-ldap 依赖:


<dependency>  <groupId>org.activiti</groupId>  <artifactId>activiti-ldap</artifactId>  <version>latest.version</version></dependency>
复制代码

用例

  • 集成 LDAP 有两大用例:

  • 通过 IdentityService 进行认证: 使用 Activiti Explorer 通过 LDAP 登录

  • 获得用户的组: 在查询用户可以看到哪些任务时非常重要,比如任务分配给一个候选组

配置

  • 集成 LDAP 是通过向流程引擎配置中的 configurators 注入 org.activiti.ldap.LDAPConfigurator 的实例来实现的

  • 这个类是高度可扩展的: 如果默认的实现不符合用例的话,可以很容易的重写方法,很多依赖的 bean 都是可插拔的


<bean id="processEngineConfiguration" class="...SomeProcessEngineConfigurationClass">        ...        <property name="configurators">          <list>              <bean class="org.activiti.ldap.LDAPConfigurator">
<!-- Server connection params --> <property name="server" value="ldap://localhost" /> <property name="port" value="33389" /> <property name="user" value="uid=admin, ou=users, o=activiti" /> <property name="password" value="pass" />
<!-- Query params --> <property name="baseDn" value="o=activiti" /> <property name="queryUserByUserId" value="(&(objectClass=inetOrgPerson)(uid={0}))" /> <property name="queryUserByFullNameLike" value="(&(objectClass=inetOrgPerson)(|({0}=*{1}*)({2}=*{3}*)))" /> <property name="queryGroupsForUser" value="(&(objectClass=groupOfUniqueNames)(uniqueMember={0}))" />
<!-- Attribute config --> <property name="userIdAttribute" value="uid" /> <property name="userFirstNameAttribute" value="cn" /> <property name="userLastNameAttribute" value="sn" />
<property name="groupIdAttribute" value="cn" /> <property name="groupNameAttribute" value="cn" />
</bean> </list> </property> </bean>'
复制代码

属性

  • org.activiti.ldap.LDAPConfigurator 可配置的属性:



  • 高级属性: 希望修改默认行为或修改组缓存时使用



  • ==注意:== 在使用活动目录 AD ,InitialDirContext 需要设置为 Context.REFERRAL 可以通过 customConnectionParameters 传递

Explorer 集成 LDAP

  • LDAP 配置添加到 activiti-standalone-context.xml

  • activiti-ldap-jar 放到 WEB-INF/lib 目录

  • 删除 demoDataGenerator bean, 否则会尝试插入数据,集成 LDAP 不允许这么做

  • 添加配置到 activiti-ui.context explorerApp bean:


<property name="adminGroups">  <list>    <value>admin</value>  </list>  </property>  <property name="userGroups">    <list>      <value>user</value>    </list></property>
复制代码


  • 使用你自定义配置替换其中的值:

  • 需要用到的数据是组的 Id,通过 groupIdAttribute 配置

  • 配置会让 admin 组下的所有用户都成为 Activiti Explorer 的管理员,用户组也一样

  • 所有不匹配的组都会当做分配组,这样任务就可以进行分配

发布于: 2021 年 06 月 12 日阅读数: 13
用户头像

一位攻城狮的自我修养 2021.04.06 加入

分享技术干货,面试题和攻城狮故事。 你的关注支持是我持续进步的最大动力! https://github.com/ChovaVea

评论

发布
暂无评论
详细解析工作流Activiti框架中的LDAP组件!实现对工作流信息的访问控制和维护