工作流引擎用户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工作流平台

相关教程