Set up the generic LDAP authentication manager plug-in
- Last Updated: February 6, 2026
- 2 minute read
- OpenEdge
- Version 12.8
- Documentation
If you determined that the generic LDAP authentication manager plug-in
meets your ABL application's requirements, then configure the required and optional
plug-in properties in the instance-name/webapps/webapp-name/WEB-INF/oeablSecurity.properties file for your ABL
web application, as explained in this topic.
Required properties
| Property | Description |
|---|---|
ldap.url |
The fully qualified URL of the LDAP connection to the Active Directory host using the following syntax:
Use the To facilitate failover high availability, you can specify multiple LDAP URLs as space-separated values in a single string. |
ldap.rootdn |
The rootDN of the Active Directory service that contains the user accounts and group information that is used for authentication. |
ldap.manager-dn |
A valid Active Directory account ID that is used to bind to Active Directory and search for the corresponding LDAP user account object DN of the user being authenticated. Note: The Active Directory account ID is a
userPrincipalName object, for
example, safe-user@acme.com.
|
ldap.manager-password |
The password for the user that corresponds to
the For production environments, Progress strongly
recommends that you specify this password as an encrypted value
that you have obtained using the |
Optional properties
| Property | Description |
|---|---|
ldap.usersearch.base |
The LDAP object DN where the search for LDAP user account objects is initiated. The default value is blank, which causes all user searches in Active Directory to be initiated from the RootDN object. You can specify a valid LDAP server object DN (for example, a subtree) where the search starts. Setting a value for this property is appropriate when Active Directory has more than one account with exactly the same name, but in different subtrees. |
ldap.usersearch.filter |
LDAP search specification for locating the LDAP user account object that corresponds to the client’s login user ID. The default value for Active Directory is Use this property to choose, at login time,
which login ID type you want to use, allowing you to narrow the
search for a given user account in Active Directory. For
example, you could use this when want users to log in using only
one ID type, such as their email name, or you want them to log
in using some other kind of ID, such as their surname. The
portion of the filter specification that designates the client's
user ID must consist of the string |
ldap.usersearch.searchSubtree |
A boolean value that specifies whether to search the LDAP object hierarchy, starting at the user object search base DN, for an LDAP user account object that corresponds to the login user ID. The default value is If your search base in Active Directory is at a
level where there are multiple subtrees of user accounts, you
can set this property to |
ldap.groupsearch.base |
The LDAP object DN where the search for LDAP group objects is initiated. A blank value initiates all searches from the rootDN object. Otherwise, this must be a valid LDAP server object DN. The default value is Setting a value for this property is appropriate when Active Directory has more than one group object with exactly the same name, but in different subtrees. |
ldap.groupsearch.filter |
The LDAP search specification to find the LDAP group objects that correspond to the LDAP user account’s granted roles. The default value is The portion of the filter specification that
designates the client's user ID must consist of the string
Use this property to refine the selection of groups that a given user account is a member of. An account is a member of a group. |
ldap.grouprole.attribute |
The LDAP group object attribute name from which to derive the role name used in Spring and in OpenEdge security. The value cannot be empty. See the Active
Directory schema definition for alternatives to the usual
The default value is |
ldap.authpopulator.searchSubtree |
A boolean value to specify whether to search the
LDAP object hierarchy, starting at the The default value is |
ldap.authpopulator.ignorePartialResultException |
A boolean value to specify whether to ignore Active Directory notifications if not all the results of an LDAP search are available. The default value is Change this when you detect that you are not receiving group objects in the user's list of roles, most likely owing to the the termination in Active Directory of further searching due to an excessive number of notifications having been returned. |
ldap.authpopulator.convertToUpperCase |
A boolean value to specify whether to follow LDAP server object referrals. The default value is Change this value to |
ldap.contextSrc.referral |
Specifies whether to ignore LDAP referrals; that is, soft-links to LDAP object subtree storage in other Active Directory servers. The default value is Change this to |
ldap.contextSrc.timeout |
The number of milliseconds to wait for an Active Directory connection or read operations to complete. The purpose of this attribute is to prevent user logins from hanging, which results in hanging a user's login to an application. The value specified must be a valid positive integer. The default value is |
|
|
These properties apply to process of converting
tokens that are generated by the Spring Security framework into
In a multi-tenant architecture, the Using these properties allows you to set up pattern matching expressions as part of the direct login operations to determine, based on the groups that a user account as a member of, the group name that is used to extract the OpenEdge domain name. The For more information about setting up domain role filters, see Set up CLIENT-PRINCIPAL token generation. Note that the |
Example
The following shows an example of the configuration of the generic LDAP authentication manager plug-in:
http.all.authmanager=ldap
ldap.url=ldap://vm-pasoeldap:10389
ldap.manager-dn=uid=admin,ou=system
ldap.manager-password=secret
ldap.root.dn=anytown,dc=acme,dc=com
ldap.grouprole.attribute=cn
ldap.groupsearch.filter=(uniqueMember={0})
ldap.usersearch.filter=(uid={0})
In this example, note the property descriptions in the preceding configuration:
| Property | Description |
|---|---|
http.all.authmanager |
Specifies the generic LDAP authentication
manager plug-in, ldap. |
ldap.url |
Specifies the fully qualified URL of the LDAP
connection to the Active Directory host, including the port number:
ldap://vm-pasoeldap:10389. |
ldap.manager-dn |
Specifies the Active Directory account ID that
is used for searching for the LDAP user account object DN of the
client user being authenticated. In this example, the user account
ID is admin, which is in the
organizational unit system. |
ldap.manager-password |
Specifies the password for the user account ID
that corresponds to the ldap.manager-dn property. |
ldap.root.dn |
Specifies the rootDN of the Active Directory
service where user account information is defined: dc=anytown,dc=acme,dc=com. |
ldap.grouprole.attribute |
Specifies the LDAP group object attribute,
cn, that is used to derive the
role name to be used in the Spring and CLIENT-PRINCIPAL tokens that are generated. |
ldap.groupsearch.filter |
Specifies the LDAP search string for locating
the LDAP group objects that correspond to the LDAP user account’s
granted roles. In this example, (uniqueMember={0}) indicates that
|
ldap.usersearch.filter |
Specifies the LDAP search string for locating
the LDAP user account object that corresponds to the client’s login
user ID. In this example, (uid={0}) results in
|
The effect of this configuration is for this authentication manager plug-in to do the following when a client provides a user ID:
- Bind to the Active Directory service using the
adminaccount DN and password, and set the rootDN to operate in. - Starting at the rootDN, apply the LDAP user search filter to
locate the user account being authenticated.
If the user is not found, then generate an error, and unbind from the Active Directory service.
- Obtain the user account object’s DN, and unbind.
- Bind to the Active Directory service using the user account DN
that is being authenticated, including password.
If a bind error occurs, then return an authentication error and unbind.
- Load the user account object’s attributes, and filter by the specified property list.
- Starting at the rootDN, search the object tree to locate all group objects that have the user account’s DN as a member.
- From the group object attribute name, extract the root role
name that will be appended to the configured role prefix (
ROLE_). - If an OpenEdge security domain is configured, then extract the domain name for the user, if the user has not supplied one on login.
- Unbind.
- Generate a
CLIENT-PRINCIPALtoken from user account information and role names.