2012-12-24 2 views
1

로그인 화면을 통해 사용자 이름과 비밀번호가 입력되는 Java에서 Active Directory 인증을 수행하려고합니다. 내부에 여러 하위 디렉토리가있는 루트 디렉토리가 있습니다. 사용자가 전체 계층에서 검색되고 LDAP 바인딩을 수행하도록 인증을 수행하는 방법. 루트 내부의 모든 하위 디렉토리에서 사용자를 검색하려면 어떻게 자동화 할 수 있습니까?Java의 Active Directory 구현

찾아주세요 아래 코드 :

Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11); 
        ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
        //ldapEnv.put(Context.PROVIDER_URL, "ldap://127.0.0.1:10389"); 
        ldapEnv.put(Context.PROVIDER_URL, prop.getProperty("ldapServer")); 
        ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); 
        ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn="+userName+",ou=Users,ou=ACN,ou=Peterborough,dc=xyz,dc=com"); 
        //ldapEnv.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");     
        ldapEnv.put(Context.SECURITY_CREDENTIALS,password); 
        ldapContext = new InitialDirContext(ldapEnv); 

I가 발생하고 문제가 Context.SECURITY_PRINCIPAL 그대로 하드 코딩이다, 그래서 검색 단지 내 요구 사항을 충족하지 않는이 하드 디렉토리에 발생합니다.

+0

광고 승인이 아닙니다. 이것은 바보 같은 묶음입니다. 광고 인증은 Kerberos입니다. –

답변

2

내가 본 대부분의 구현에서는 읽기 전용 Active Directory를 사용하여 사용자의 컨텍스트를 검색 한 다음 사용자의 전체 컨텍스트와 제공된 암호를 사용하여 로그인을 시도합니다. this과 같은 것으로 검색 부분을 시작하는 데 도움이됩니다.