工作流引擎用户Ldap
身份服务
身份服务是各种用户/组存储库上的API抽象。基本实体是
1、用户:由唯一ID标识的用户
2、组:由唯一ID标识的组
3、成员资格:用户与组之间的关系
4、租户:由唯一ID标识的租户
5、租户成员资格:租户与用户/组之间的关系
例:
User demoUser = processEngine.getIdentityService()
.createUserQuery()
.userId("demo")
.singleResult();
pangubpmBPM区分只读和可写用户存储库。只读用户存储库提供对基础用户/组数据库的只读访问。可写的用户存储库允许对用户数据库进行写访问,包括创建,更新和删除用户和组。
要提供自定义身份提供程序实现,可以实现以下接口:
1、org.pangubpm.bpm.engine.impl.identity.ReadOnlyIdentityProvider
2、org.pangubpm.bpm.engine.impl.identity.WritableIdentityProvider
用户,组和租户ID的自定义白名单
可以将用户,组和租户ID与白名单模式进行匹配,以确定所提供的ID是否可接受。要匹配的默认(全局)正则表达式模式是“ [a-zA-Z0-9] + | pangubpm-admin”,即字母数字值或'pangubpm-admin'的任意组合。
如果您的组织允许使用其他字符(例如:特殊字符),generalResourceWhitelistPattern则应在引擎的配置文件中使用适当的模式设置ProcessEngineConfiguration 属性。可以使用标准的Java正则表达式语法。例如,要接受任何字符,可以使用以下属性值:
<property name="generalResourceWhitelistPattern" value=".+"/>
通过使用适当的配置属性,可以为用户,组和租户ID定义不同的模式:
<property name="userResourceWhitelistPattern" value="[a-zA-Z0-9-]+" /><property name="groupResourceWhitelistPattern" value="[a-zA-Z]+" /><property name="tenantResourceWhitelistPattern" value=".+" />
请注意,如果未定义特定模式(例如,租户白名单模式),则将使用常规模式,即默认模式("[a-zA-Z0-9]+|pangubpm-admin")或配置文件中定义的模式。
数据库身份服务
数据库身份服务使用流程引擎数据库来管理用户和组。如果没有提供替代的身份服务实现,则这是默认的身份服务实现。
数据库身份服务在用户,组和成员身份中既实现ReadOnlyIdentityProvider又WritableIdentityProvider提供了完整的CRUD功能。
LDAP身份服务
LDAP身份服务提供对基于LDAP的用户/组存储库的只读访问。身份服务提供者被实现为流程引擎插件,并且可以添加到流程引擎配置中。在这种情况下,它将替换默认的数据库身份服务。
要使用LDAP身份服务,必须将pangubpm-identity-ldap.jar库添加到流程引擎的类加载器。
请导入pangubpmBOM,以确保每个pangubpm项目的版本正确。
<dependency>
<groupId>org.pangubpm.bpm.identity</groupId>
<artifactId>pangubpm-identity-ldap</artifactId></dependency>
激活LDAP插件
以下是如何使用Spring XML配置LDAP身份提供程序插件的示例:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration" class="org.pangubpm.bpm.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
...
<property name="processEnginePlugins">
<list>
<ref bean="ldapIdentityProviderPlugin" />
</list>
</property>
</bean>
<bean id="ldapIdentityProviderPlugin" class="org.pangubpm.bpm.identity.impl.ldap.plugin.LdapIdentityProviderPlugin">
<property name="serverUrl" value="ldap://localhost:3433/" />
<property name="managerDn" value="uid=daniel,ou=office-berlin,o=pangubpm,c=org" />
<property name="managerPassword" value="daniel" />
<property name="baseDn" value="o=pangubpm,c=org" />
<property name="userSearchBase" value="" />
<property name="userSearchFilter" value="(objectclass=person)" />
<property name="userIdAttribute" value="uid" />
<property name="userFirstnameAttribute" value="cn" />
<property name="userLastnameAttribute" value="sn" />
<property name="userEmailAttribute" value="mail" />
<property name="userPasswordAttribute" value="userpassword" />
<property name="groupSearchBase" value="" />
<property name="groupSearchFilter" value="(objectclass=groupOfNames)" />
<property name="groupIdAttribute" value="ou" />
<property name="groupNameAttribute" value="cn" />
<property name="groupMemberAttribute" value="member" />
<property name="authorizationCheckEnabled" value="false" />
</bean></beans>
以下是如何在bpm-platform.xml / processes.xml中配置LDAP身份提供程序插件的示例:
<process-engine name="default">
<job-acquisition>default</job-acquisition>
<configuration>org.pangubpm.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
<datasource>java:jdbc/ProcessEngine</datasource>
<properties>...</properties>
<plugins>
<plugin>
<class>org.pangubpm.bpm.identity.impl.ldap.plugin.LdapIdentityProviderPlugin</class>
<properties>
<property name="serverUrl">ldap://localhost:4334/</property>
<property name="managerDn">uid=jonny,ou=office-berlin,o=pangubpm,c=org</property>
<property name="managerPassword">s3cr3t</property>
<property name="baseDn">o=pangubpm,c=org</property>
<property name="userSearchBase"></property>
<property name="userSearchFilter">(objectclass=person)</property>
<property name="userIdAttribute">uid</property>
<property name="userFirstnameAttribute">cn</property>
<property name="userLastnameAttribute">sn</property>
<property name="userEmailAttribute">mail</property>
<property name="userPasswordAttribute">userpassword</property>
<property name="groupSearchBase"></property>
<property name="groupSearchFilter">(objectclass=groupOfNames)</property>
<property name="groupIdAttribute">ou</property>
<property name="groupNameAttribute">cn</property>
<property name="groupMemberAttribute">member</property>
<property name="authorizationCheckEnabled">false</property>
</properties>
</plugin>
</plugins></process-engine>
管理员授权插件
LDAP身份提供程序插件通常与管理员授权插件结合使用,后者允许您为特定的LDAP用户/组授予管理员授权。
多租户
当前,LDPA身份服务不支持多租户。这意味着不可能从LDAP获取租户,并且透明的多租户访问限制默认情况下不起作用。
LDAP插件的配置属性
LDAP身份提供程序提供以下配置属性:
油门登录尝试
存在一种用于防止随后失败的登录尝试的机制。其实质是,用户在登录尝试失败后无法在特定的时间内登录。时间量是在每次尝试后计算的,但受最大延迟时间限制。在预定义次数的不成功尝试之后,用户将被锁定,只有管理员有权解锁它们。
该机制可通过以下属性和相应的默认值进行配置。
1、loginMaxAttempts=10
2、loginDelayFactor=2
3、loginDelayMaxTime=60
4、loginDelayBase=3
有关更多信息,请检查流程引擎的登录属性部分。
延迟的计算通过以下公式完成:baseTime * factor^(attempt-1)。默认配置的行为是:第一次尝试失败后延迟3秒,第二次尝试后延迟6秒,第二次尝试后延迟12秒,24秒,48秒,60秒,60秒等。如果是用户,则在第10次尝试后再次登录失败,用户将被锁定。
LDAP细节
如果您的引擎上有LDAP设置,则需要处理LDAP方面的限制。您系统中的登录机制将不受上述属性的影响。
技术支持:盘古BPM工作流平台
相关教程
- 2020-05-23
- 2020-05-23
- 2020-05-21
- 2020-05-17
- 2020-05-17
- 2020-05-16
- 2020-05-14
- 2020-05-14
- 2020-05-08
- 2020-05-08