Posted By:
Kullervo_Kala
Posted On:
Monday, January 28, 2002 04:07 AM
If mail-id is unique attribute just seach user object from directory whose mail-id
is equivalent. Then get the distinguished name according to that.
There are plenty of unique attributes in AD (userPrincipalName, samAccountName,...) that you can use
as login id.
To get user's relative distinguished name when you know eq. samAccountName
call following function.
String userRDN = getUSerRDN("samAccountName","Raipe");
Note that m_Ctx is your existing LdapContext...
public String getUserRDN(String uniqueAtt,String user) throws NamingException{
String ret;
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
constraints.setReturningAttributes(new String[0]); // we are interested in rdn only
String searchCondition = "(" + uniqueAtt + "=" + user + ")";
NamingEnumeration results = m_Ctx.search("", searchCondition, constraints);
if (results != null && results.hasMoreElements()) {
// returning first (and only)
SearchResult si = (SearchResult)results.nextElement();
ret = si.getName();
} else
throw new NamingException(" Cannot find RDN ");
return ret;
}