The documentation talks about LDAP support with mapping user names to derby users using the derby.user.'userName' property.
Per the documentation, one can use the derby.user property to set the DN for a user,and when using LDAP, setting the search filter to derby.user will pick up the DN from this property if available. This is not working when I tried it out by caching a user's dn as a database-level property.
Found the following issues:
1)Setting the database property derby.user.userName to a DN does not work:
Problem in AuthenticationServiceBase#map.
– If there is a system property derby.authentication.provider=LDAP, setting of derby.user.userName to a DN value as a database property will encrypt the DN value and store it. The code seems to expect that the derby.authentication.provider is set to LDAP as a database property, else it considers it as a password and encrypts the value.
– it doesnt return the correct mapped value for the property for the LDAP and derby.user.userName case. Returns null instead of returning the clear text DN value.
2) the LDAP code itself doesnt pick up the userDN.
Here USER_PROPERTY_PREFIX is derby.user.
The key should be USER_PROPERTY_PREFIX+userName.
3) After the code issues are fixed, it would be nice if documentation can be added to give a full example of how to go about doing LDAP authentication with caching DNs in derby.user.