This section describes how to configure Workbench to use LDAP for user authentication.

LDAP integration allows you to share user identity information and passwords defined in LDAP with Workbench. You can also assign permissions for LDAP users or across an entire LDAP group rather than configuring Workbench users individually.

By configuring Workbench to use LDAP for user authentication, you enable administrators to create Workbench user profiles that are associated with users in an LDAP directory.

Workbench does not write data to the LDAP directory. Passwords and identity information, such as names and e-mail addresses, are maintained in the LDAP directory. Permissions assigned to an LDAP user or group profile in Workbench are stored in the Endeca Configuration Repository.

LDAP user and group profiles can be used in combination with non-LDAP Workbench user and groups that are manually configured by an administrator. Users can authenticate using either method on the same instance of Workbench.

Optionally, you can enable SSL for communication between Workbench and your LDAP server.

Workbench uses the Java Authentication and Authorization Service (JAAS) to authenticate users against an LDAP directory.

Workbench stores LDAP login configuration information in the %ENDECA_TOOLS_CONF%\conf\Login.conf file. A sample profile is included in this location by default, but you should modify its parameters as needed for your LDAP configuration. You can also specify an alternate location for the configuration file.

If you want to configure JAAS authentication for other applications running in the Endeca Tools Service (for example, your own Endeca application or Workbench extensions), you can create additional profiles with unique names in the Login.conf file.

Workbench allows templates to be supplied for certain configuration parameters in the LDAP login profile.

These templates, indicated by %{} escapes, allow values from the authentication operation (such as a user or group name entered in Workbench or specific values from the user or group objects in LDAP) to be substituted into the parameter value. Templates also enable you to extract information from the LDAP user or group object (such as the exact user or group name as specified in the LDAP directory) or identity information that is stored in LDAP. The %{} escapes are expanded as follows:

This section provides a reference of parameters that can be specified in the LDAP login profile.

The following is a full list of the parameters that can be specified in the profile:

Parameter

Description

authentication

Specifies the method of authentication that should be used in binding to the LDAP server as a user account. The permitted values are none, simple, or EXTERNAL

checkPasswords

Not supported in Workbench 3.1.1 Optional. Determines whether Workbench checks passwords during logins. Default value is true. If set to false, Workbench uses only the user name to authenticate from the LDAP directory.

credentialsKey

Key name with which serviceUsername and servicePassword are pushed into OCS:

LDAP credentials (servicePassword and serviceUsername) must be stored in the instance of the OCS defined by jps-config at the default path location.

Note: You must also provide values for the following parameters in order to connect to the LDAP server:

findGroupPath

The query that is passed to the LDAP server to find a specific group. You can use the %{#groupname} template to insert the name of the group as entered in the User Settings tool into the query. Be sure to set the appropriate objectClass.

For example:

findGroupPath="/ou=groups,dc=example,dc=com¬
??sub?(&(objectClass=group)(cn=%{#groupname}))"

findGroupTemplate

A template that specifies how to produce the group name from the group object returned by the findGroupPath query. Like the userTemplate, this template is used to correct the case of a group name when you add LDAP group profiles in Workbench. Therefore, the value returned by this template should match the name entered in the User Settings tool, except for possible differences in case.

groupPath

The query that is passed to the LDAP server to find all the groups of which a user is a member. This query is executed when a user logs in to Workbench after looking up the user with the userPath query. Thus, you can use templates to insert any information from the user object that is returned by the previous query, such as the distinguished name of the user or any other LDAP attributes, into the groupPath query. You can specify multiple values for groupPath.

groupTemplate

A template that specifies how to produce individual group names from the set of groups returned by the groupPath query. The value returned by this template should match the name of the LDAP group as defined in the Workbench user profile. You can specify multiple values for groupTemplate.

keyStoreLocation

Used only if useSSL=true. The location of the Java keystore, which stores keys and certificates. The keystore is where Java gets the certificates to be presented for authentication. The location of the keystore is OS-dependant, but is often stored in a file named .keystore in the user’s home directory.

Note

Even if this location is on a Windows system, the path uses forward slashes, (/) not backslashes (\).

keyStorePassKey

Key name with which keyStorePassPhrase is pushed into OCS. Used only if useSSL=true.

keyStorePassKey must be stored in the instance of the OCS defined by jps-config at the default path location.

keyStorePassphrase

The passphrase used to open the keystore file. Used only if useSSL=true.

ldapBindAuthentication

Not supported in Workbench 3.1.1 Optional. By default this is set to true, and Workbench authenticates users by rebinding as the user to the LDAP system, thereby employing the LDAP system’s own authentication mechanism.

loginName

Optional. A template login name that will be used to bind to the LDAP server. Default value is %{dn}.

passwordAttribute

Not supported in Workbench 3.1.1 Optional. The name of the attribute on the user object that contains the user’s password. Used only if ldapBindAuthentication is set to false. The field specified must contain the user’s password in clear text. By default this is set to userPassword.

serverInfo

See credentialsKey above.

serviceAuthentication

See credentialsKey above.

servicePassword

See credentialsKey above.

serviceUsername

See credentialsKey above.

userPath

The query that is passed to the LDAP server to find an individual user. You can use the %{#username} template to insert the name entered in the User Settings tool or the name entered in the Workbench login page into the query. Be sure to set the appropriate objectClass.

For example:

userPath="/ou=users,dc=example,dc=com??sub?¬
(&(objectClass=person)(uid=%{#username}))"

userTemplate

A template that specifies how to produce the username from the user object returned by the userPath query.

This template allows Workbench to automatically correct the case (capital or lowercase) of the username to match the name exactly as specified in the LDAP directory. The correction occurs when you add an LDAP user to Workbench. Therefore, the value returned by this template should match the name entered in the User Settings tool, except for possible differences in case.

useSSL

Optional. Default value is false. If set to true, Workbench attempts to make mutually authenticated SSL connections to the LDAP server. If you set the parameter, ensure that you have configured the LDAP server to use SSL and that the value of serverInfo has the protocol specified as ldaps:// with an SSL port.

The LDAP configuration profile allows you to specify templates to extract identity information from LDAP user or group objects.

Workbench does not store any identity information such as first name, last name, or email address for LDAP users or groups. Instead, Workbench looks up this information in the LDAP directory when needed. The LDAP configuration profile allows you to specify templates to extract identity information from LDAP user or group objects, but they are not required for authentication via LDAP.

Workbench looks up the identity information for a user or group when you use the Check Name function on the Add User page to confirm that you are adding the correct LDAP user or group. If you do not specify templates for retrieving identity information, the fields are not filled in when you use Check Name.

The userPath, groupPath, and findGroupPath parameters, when appended to the URL in the serverInfo parameter, must conform to RFC 2255.

This means that certain characters must be encoded in order for the path parameters to form a valid LDAP URL when appended to the value of the serverInfo parameter. Both LDAP and URL encoding may apply to these strings depending on your data. If possible, verify the URL by passing it to your LDAP server before specifying it in the configuration for Workbench.

LDAP encoding affects reserved characters such as the comma (,), equals sign (=), and question mark (?). These characters must be escaped by prepending a backslash (\) when they are not used for their reserved purpose, for example if they appear within a common name or organizational unit.

URL encoding affects characters that are invalid for URLs, such as non-ASCII characters and any unsafe characters as defined in RFC 1738. This includes reserved LDAP characters when they are not used for their reserved purpose. These characters must be replaced with the % sign followed by the appropriate hex code.

You can specify multiple LDAP servers and multiple values for the groupPath element.

If you specify multiple LDAP servers, the servers are assumed to be equivalent. The choice of which LDAP server to contact is made randomly. If an LDAP server cannot be reached, the LoginModule plug-in proceeds through the remaining servers in order of configuration, wrapping if necessary. For example, if five servers are configured and Server 3 is the first to be contacted, the remaining order of contact is Server 4, Server 5, Server 1, and finally Server 2.

You can specify multiple LDAP servers with multiple instances of the serverInfo parameter, by using the format:

serverInfo.n = ”ldap://server_url:port_number”

For example:

serverInfo.0="ldaps://globalcatalog.corp.example.com:3269"
serverInfo.1="ldap://globalcatalog.us.example.com:3009"

You can also specify multiple values for the groupPath attribute by using the same format, for example:

groupPath.0="/ou=groups,dc=example,dc=com??sub?(member=%{#dn})"
groupPath.1="/dc=example,dc=com?memberOf?sub?(AccountName=%{#username})"
groupPath.2="/dc=example,dc=com?memberOf?sub?(CN=%{#dn})" 

If you specify more than one groupPath, Workbench sends all the queries to the LDAP server to discover the groups of which a user is a member.

You can specify corresponding values for groupTemplate for each groupPath. In this case, the value for groupTemplate.0 is applied to the results of the groupPath.0 query, groupTemplate.1 is applied to the results of groupPath.1, and so on.

For example:

groupTemplate.0="%{#dn:0}"
groupTemplate.1="%{#memberOf:0}"
groupTemplate.2="%{#memberOf:0}"


Copyright © Legal Notices