Philippe Riand
Philippe Riand

Reputation: 673

Retrieving a JNDI dn with its proper case

I want to retrieve a user DN as stored in the LDAP server, keeping the original characters case. For example, let's assume the DN in my server is "cn=Bob, o=MyOrg". I want to query the server using "cn=bob, o=myorg" and retrieve the original "cn=Bob, o=MyOrg", as a result.

The DirContext.getAttributes(dn) method can return a set of attributes but this does not include the DN itself. On the other hand, DirContext.search() returns a SearchResult that has this information using getNameInNamespace(). Unfortunately, search expressions do not seem to allow search on DN, which is what I have.

I understand that I might achieve this by first retrieving a unique attribute using getAttributes(), and then use this attribute value in search(). But this leads to 2 connections. Plus I need to make sure that I have a unique, not null, attribute I can search() on.

Upvotes: 0

Views: 137

Answers (2)

user207421
user207421

Reputation: 310980

Just do a lookup of the DN. The resulting DirContext should have its getNameInNamespace() in the correct case.

A search will also work but it's less efficient and more code.

Upvotes: 0

Philippe Riand
Philippe Riand

Reputation: 673

Let me reply to my question with the solution I found.

It involves the search() function, where the name parameter (search context) should be the DN, and the query filter is empty or like (objectClass=*). It then returns one row, corresponding to the DN being searched. The original DN is then available in the SearchResult.

Upvotes: 0

Related Questions