/* * LDAPbindSecurityManager.java * * Created on September 11, 2006, 9:00 AM * * (C) Andrew Hart */ package org.exist.security; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import org.apache.log4j.Logger; /** * Code to use LDAP's bind to authenticate technology * @author Andrew Hart */ public class LDAPbindSecurityManager extends LDAPSecurityManager implements SecurityManager { private final static Logger LOG = Logger.getLogger(SecurityManager.class); public boolean bind(String user, String passwd) { /** * @param user * @param passwd */ Hashtable env = getDirectoryEnvironment(); env.put(Context.SECURITY_CREDENTIALS, passwd); env.put(Context.SECURITY_PRINCIPAL, "uid=" + user+","+userBase); try { // Create initial context DirContext ctx = new InitialDirContext(env); // Check that the credentials work LOG.info(ctx.lookup("uid="+user+","+userBase)); ctx.close(); } catch (NamingException e) { LOG.warn("Invalid Credentials for user: uid="+user+","+userBase, e); return false; } LOG.warn("User " + user + ", bind successful."); return true; } }