package zx.soft.zk.manager.utils;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import org.slf4j.LoggerFactory;
public class LdapAuth {
DirContext ctx = null;
private final static org.slf4j.Logger logger = LoggerFactory.getLogger(LdapAuth.class);
public boolean authenticateUser(String ldapUrl, String username, String password, String domains) {
String[] domainArr = domains.split(",");
for (String domain : domainArr) {
Hashtable<String, String> env = new Hashtable<>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, domain + "\\" + username);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
ctx = new InitialDirContext(env);
return true;
} catch (NamingException e) {
} finally {
if (ctx != null) {
try {
ctx.close();
} catch (NamingException ex) {
logger.warn(ex.getMessage());
}
}
}
}
return false;
}
}