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
了解更多文章可以关注微信公众号:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值