Package org.jbpm.services.task.identity

## Class LDAPUserGroupCallbackImpl

- java.lang.Object
- - org.jbpm.services.task.identity.AbstractUserGroupInfo
  - - org.jbpm.services.task.identity.LDAPUserGroupCallbackImpl

- All Implemented Interfaces:
    `org.kie.api.task.UserGroupCallback`

      public class LDAPUserGroupCallbackImpl
      extends AbstractUserGroupInfo
      implements org.kie.api.task.UserGroupCallback

  LDAP integration for Task Service to collect user and role/group information.

  Following is a list of all supported properties:

  - ldap.bind.user (optional if LDAP server accepts anonymous access)
  - ldap.bind.pwd (optional if LDAP server accepts anonymous access
  - ldap.user.ctx (mandatory)
  - ldap.role.ctx (mandatory)
  - ldap.user.roles.ctx (optional, if not given ldap.role.ctx will be used)
  - ldap.user.filter (mandatory)
  - ldap.role.filter (mandatory)
  - ldap.user.roles.filter (mandatory)
  - ldap.user.attr.id (optional, if not given 'uid' will be used)
  - ldap.roles.attr.id (optional, if not given 'cn' will be used)
  - ldap.user.id.dn (optional, is user id a DN, instructs the callback to query for user DN before searching for roles, default false)
  - ldap.search.scope (optional, if not given 'ONELEVEL_SCOPE' will be used) possible values are: OBJECT_SCOPE, ONELEVEL_SCOPE, SUBTREE_SCOPE
  - ldap.name.escape (optional, instructs to escape - illegal character in user/group name before the query - currently escapes only comma) by default is set to true
  - java.naming.factory.initial
  - java.naming.security.authentication
  - java.naming.security.protocol
  - java.naming.provider.url

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static String` | `BIND_PWD` |
    `static String` | `BIND_USER` |
    `protected static String` | `DEFAULT_ROLE_ATTR_ID` |
    `protected static String` | `DEFAULT_USER_ATTR_ID` |
    `static String` | `IS_USER_ID_DN` |
    `static String` | `LDAP_NAME_ESCAPE` |
    `protected LdapSearcher` | `ldapSearcher` |
    `static String` | `ROLE_ATTR_ID` |
    `static String` | `ROLE_CTX` |
    `static String` | `ROLE_FILTER` |
    `static String` | `SEARCH_SCOPE` |
    `static String` | `USER_ATTR_ID` |
    `static String` | `USER_CTX` |
    `static String` | `USER_FILTER` |
    `static String` | `USER_ROLES_CTX` |
    `static String` | `USER_ROLES_FILTER` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LDAPUserGroupCallbackImpl​(boolean activate)` | Constructor needs to have at least one (unused) parameter in order to prevent CDI from automatic deployment.
    `LDAPUserGroupCallbackImpl​(Properties config)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected String` | `escapeIllegalChars​(String entityId)` |
    `boolean` | `existsGroup​(String groupId)` |
    `boolean` | `existsUser​(String userId)` |
    `String` | `getConfigProperty​(String key)` |
    `String` | `getConfigProperty​(String key, String defaultValue)` |
    `List<String>` | `getGroupsForUser​(String userId)` |
    `protected String` | `unescapeIllegalChars​(String entityId)` |

    - ### Methods inherited from class org.jbpm.services.task.identity.AbstractUserGroupInfo

      `readProperties`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### USER_CTX

          public static final String USER_CTX

      See Also:
        Constant Field Values

    - #### ROLE_CTX

          public static final String ROLE_CTX

      See Also:
        Constant Field Values

    - #### USER_ROLES_CTX

          public static final String USER_ROLES_CTX

      See Also:
        Constant Field Values

    - #### USER_FILTER

          public static final String USER_FILTER

      See Also:
        Constant Field Values

    - #### ROLE_FILTER

          public static final String ROLE_FILTER

      See Also:
        Constant Field Values

    - #### USER_ROLES_FILTER

          public static final String USER_ROLES_FILTER

      See Also:
        Constant Field Values

    - #### USER_ATTR_ID

          public static final String USER_ATTR_ID

      See Also:
        Constant Field Values

    - #### ROLE_ATTR_ID

          public static final String ROLE_ATTR_ID

      See Also:
        Constant Field Values

    - #### IS_USER_ID_DN

          public static final String IS_USER_ID_DN

      See Also:
        Constant Field Values

    - #### SEARCH_SCOPE

          public static final String SEARCH_SCOPE

      See Also:
        Constant Field Values

    - #### LDAP_NAME_ESCAPE

          public static final String LDAP_NAME_ESCAPE

      See Also:
        Constant Field Values

    - #### BIND_USER

          public static final String BIND_USER

      See Also:
        Constant Field Values

    - #### BIND_PWD

          public static final String BIND_PWD

      See Also:
        Constant Field Values

    - #### DEFAULT_ROLE_ATTR_ID

          protected static final String DEFAULT_ROLE_ATTR_ID

      See Also:
        Constant Field Values

    - #### DEFAULT_USER_ATTR_ID

          protected static final String DEFAULT_USER_ATTR_ID

      See Also:
        Constant Field Values

    - #### ldapSearcher

          protected LdapSearcher ldapSearcher

  - ### Constructor Detail

    - #### LDAPUserGroupCallbackImpl

          public LDAPUserGroupCallbackImpl​(boolean activate)

      Constructor needs to have at least one (unused) parameter in order to prevent CDI from automatic deployment. Configuration properties are loaded from a file specified by jbpm.usergroup.callback system property or classpath:/jbpm.usergroup.callback.properties file.
      Parameters:
        `activate` - ignored

    - #### LDAPUserGroupCallbackImpl

          public LDAPUserGroupCallbackImpl​(Properties config)

      Parameters:
        `config` - LDAP configuration properties

  - ### Method Detail

    - #### existsUser

          public boolean existsUser​(String userId)

      Specified by:
        `existsUser` in interface `org.kie.api.task.UserGroupCallback`

    - #### existsGroup

          public boolean existsGroup​(String groupId)

      Specified by:
        `existsGroup` in interface `org.kie.api.task.UserGroupCallback`

    - #### getGroupsForUser

          public List<String> getGroupsForUser​(String userId)

      Specified by:
        `getGroupsForUser` in interface `org.kie.api.task.UserGroupCallback`

    - #### escapeIllegalChars

          protected String escapeIllegalChars​(String entityId)

    - #### unescapeIllegalChars

          protected String unescapeIllegalChars​(String entityId)

    - #### getConfigProperty

          public String getConfigProperty​(String key)

    - #### getConfigProperty

          public String getConfigProperty​(String key,
                                          String defaultValue)