/**
*
*/
package com.asolutions.scmsshd.authenticators;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import com.asolutions.scmsshd.ldap.LDAPBindingProvider;
public class LDAPUsernameResolver {
LDAPBindingProvider provider;
private String userBase;
private String matchingElement;
public LDAPUsernameResolver(LDAPBindingProvider provider, String userBase) {
this(provider, userBase, "cn=");
}
public LDAPUsernameResolver(LDAPBindingProvider provider, String userBase, String matchingElement) {
this.provider = provider;
this.userBase = userBase;
this.matchingElement = matchingElement;
}
public String resolveUserName(String username) throws NamingException{
InitialDirContext InitialDirectoryContext = provider.getBinding();
SearchControls searchCtls = new SearchControls();
//Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
//specify the LDAP search filter
String searchFilter = "("+matchingElement+username+")";
//initialize counter to total the results
// Search for objects using the filter
NamingEnumeration<SearchResult> answer = InitialDirectoryContext.search(userBase, searchFilter, searchCtls);
SearchResult next = answer.next();
return next.getNameInNamespace();
}
}