Advanced LDAP Authentication Addendum
This topic collects supplemental documentation on LDAP authentication.
Problem with userDnTemplate Based Authentication
UserDnTemplate based authentication uses configuration parameter
ldapRealm.userDnTemplate
. Typical value of userDNTemplate would
look like uid={0},ou=people,dc=hadoop,dc=apache,dc=org
.
To compute bind DN of the client, we swap the place holder {0} with login id provided
by the client. For example, if the login id provided by the client is "guest’, the
computed bind DN would be
uid=guest,ou=people,dc=hadoop,dc=apache,dc=org
.
This keeps configuration simple.
However, this does not work if users belong to different branches of LDAP DIT. For
example, if there are some users under
ou=people,dc=hadoop,dc=apache,dc=org
and some users under
ou=contractors,dc=hadoop,dc=apache,dc=org
,
We can not come up with userDnTemplate that would work for all the users.
Special Note on Parameter main ldapRealm contextFactory systemPassword
The value for this could have one of the following two formats:
-
plaintextpassword
-
${ALIAS=ldcSystemPassword}
The first format specifies the password in plain text in the provider configuration. Use of this format should be limited for testing and troubleshooting.
We strongly recommend using the second format
${ALIAS=ldcSystemPassword}
in production. This format uses an
alias for the password stored in credential store. In the example
${ALIAS=ldcSystemPassword}
, ldcSystemPassword is the alias for
the password stored in credential store.
Assuming the plain text password is “pa$$word”, and your topology file name is “test.xml”, you would use following command to create the right password alias in credential store.
{GATEWAY_HOME}/bin/knoxcli.sh create-alias ldcSystemPassword --cluster test --value pa$$word