工作流Activiti框架中的LDAP组件使用详解!实现对工作流目录信息的分布式访问及访问控制-LMLPHP

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.contextexplorerApp bean:
<property name="adminGroups">
  <list>
    <value>admin</value>
  </list>
  </property>
  <property name="userGroups">
    <list>
      <value>user</value>
    </list>
</property>
  • 使用你自定义配置替换其中的值:
    • 需要用到的数据是组的Id,通过groupIdAttribute配置
    • 配置会让admin组下的所有用户都成为Activiti Explorer的管理员,用户组也一样
    • 所有不匹配的组都会当做分配组,这样任务就可以进行分配
06-13 06:14