工作流Activiti框架中LDAP组件详细解析!实现对工作流目录信息的访问控制
source link: https://segmentfault.com/a/1190000040168136
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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的管理员,用户组也一样
- 所有不匹配的组都会当做分配组,这样任务就可以进行分配
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK