Flowable入门系列文章76 - 身份管理
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章76 - 身份管理相关的知识,希望对你有一定的参考价值。
从Flowable V6开始,身份管理(IDM)组件已经从流程引擎模块中提取出来,并且逻辑被移动到几个单独的模块:flowable-idm-api,flowable-idm-engine,flowable-idm-spring和flowable- IDM-发动机配置。分离IDM逻辑的主要原因是,它不是Flowable引擎的核心,在许多情况下,当Flowable引擎嵌入到应用程序中时,不使用或不需要标识逻辑。
默认情况下,当Flowable引擎启动时,IDM引擎将被初始化并启动。这导致在Flowable v5中执行和使用相同的身份逻辑。idm-engine管理自己的数据库模式和下列实体:
- 用户和用户实体,用户信息。
- 小组和小组实体,小组信息。
- MembershipEntity,分组用户的成员资格。
- Privilege和PrivilegeEntity,一个特权定义(例如用于控制对UI应用程序的访问,如Flowable Modeler和Flowable Task应用程序)。
- PrivilegeMappingEntity,将用户和/或组链接到特权。
- Token和TokenEntity,UI应用程序使用的身份验证令牌。
由于DB包含过去和现在实例的历史实体,因此您可能需要考虑查询这些表以最大限度地减少对运行时流程实例数据的访问,从而保持运行时执行的高效性。
[[IDM引擎配置]]
1、IDM引擎配置
默认情况下,Flowable引擎使用org.flowable.engine.impl.cfg.IdmEngineConfigurator。该配置程序使用与Flowable流程引擎配置相同的数据源配置。因为在Flowable v5中配置了标识组件,所以不需要额外的配置。
在Flowable引擎中不需要标识逻辑时,可以在流程引擎配置中禁用IDM引擎。
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
<property name="disableIdmEngine" value="true" />
...
</bean>
这意味着不能使用用户和组查询,并且不能为用户检索任务查询中的候选组。
默认情况下,用户密码将以纯文本形式保存在IDM数据库表中。为了确保密码被编码,您可以在流程引擎配置中定义一个密码编码器。
<bean id="shaEncoder"
class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"/>
<bean id="passwordEncoder" class="org.flowable.idm.spring.authentication.SpringEncoder">
<constructor-arg ref="shaEncoder"/>
</bean>
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
<property name="passwordEncoder" ref="passwordEncoder" />
...
</bean>
在这个例子中使用了ShaPasswordEncoder,但是你也可以使用org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder。不使
用Spring时,也可以使用org.flowable.idm.engine.impl.authentication.ApacheDigester对密码进行编码。
默认的IDM引擎配置器也可以被覆盖,以自定义的方式初始化IDM引擎。一个很好的例子是LDAPConfigurator的实现,它重写默认的IDM引擎来使用LDAP服务器,而不是默认的IDM数据库表。所述idmProcessEngineConfigurator流程引擎的配置的属性可被用于设置自定义配置器像LDAPConfigurator。
<bean id="processEngineConfiguration" class="...SomeProcessEngineConfigurationClass">
...
<property name="idmProcessEngineConfigurator">
<bean class="org.flowable.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=flowable" />
<property name="password" value="pass" />
<!-- Query params -->
<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="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="userEmailAttribute" value="mail" />
<property name="groupIdAttribute" value="cn" />
<property name="groupNameAttribute" value="cn" />
</bean>
</property>
</bean>
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于Flowable入门系列文章76 - 身份管理的主要内容,如果未能解决你的问题,请参考以下文章
Flowable入门系列文章85 - 可流动的IDM应用程序
Flowable入门系列文章23 - 基本的Flowable概念四