LDAP 사용자의 주어진 사용자와 비밀번호가 올바른지 테스트하고 싶습니다.JNDI를 사용한 LDAP 인증
나는 jndi가 사용할 라이브러리임을 분류했습니다.
나는이 간단한 클래스를 발견package myldap;
import java.util.Hashtable;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
// boolean function to test user and pwd
public static boolean userVerify(String user, String password){
boolean userVerify = false;
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.48.10");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=" + user + ",conn");
env.put(Context.SECURITY_CREDENTIALS, password);
try {
DirContext authContext = new InitialDirContext(env);
userVerify = true;
authContext.close();
} catch (AuthenticationException authEx) {
//("Authentication Exception!");
userVerify = false;
} catch (NamingException namEx) {
//("Something went wrong!");
userVerify = false;
}
return userVerify;
}
내가 그것을 내가 매개 변수와 함께 장난하고 작동하도록 노력하고 있기 때문이다. 내가 함수에 넣어 값은 내가 AuthenticationException
를 얻을 수 위의와
INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
PROVIDER_URL, "ldap://192.168.48.10");
SECURITY_AUTHENTICATION, "simple");
SECURITY_PRINCIPAL, "CN=" + user + ",conn");
SECURITY_CREDENTIALS, password);
있습니다, 그게 내가 솔루션에 덜 가깝다 것 같다, 그래서 내가, 내가 NamingException
얻는 일을 변경하여 달성 할 수있는 최선의 결과입니다.
특히 SECURITY_PRINCIPAL
에 대해 확실하지 않습니다.
경험이있는 사람이 누구이며 그 값을 정확하게 전달하는 방법에 대한 조언을 제공 할 수 있습니까? 물론 연결하고 예외를 발생시키지 않으려합니다.
답장을 보내 주셔서 감사합니다. SECURITY_PRINCIPAL은 "CN = john, OU = ACME 사용자, OU = OU ACME 내부, DC = ACME, DC = acmesystems, DC = com"과 같아야 함을 의미합니까? "john @ acme"과 같은 사용자 이름 만 전달해야한다면 어떻게해야합니까? – LaBracca
나는 그 대답을했다고 믿는다. 어떤 LDAP 서버를 사용하고 있습니까? – EJP