2016-04-15 3 views
0

Ich muss 1 LDAP-Verbindung erstellen (ich benutze ein Anwendungskonto) und von dieser Verbindung muss ich andere Verbindung (Benutzerverbindung) von überprüfen, ob die UID und das Passwort ist OK.JNDI LDAP erstellen 2 Verbindung Im selben InitialDirContext Objekt

Properties env = new Properties(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
env.put(Context.PROVIDER_URL, ldapServerUrl); 
env.put(Context.SECURITY_AUTHENTICATION, "none"); 

SearchControls searchCtrls = new SearchControls(); 
searchCtrls.setReturningAttributes(new String[] {}); 
searchCtrls.setSearchScope(SearchControls.SUBTREE_SCOPE); 

String filter = "(&(cn=" + identifier + "))"; 

DirContext ctx = null; 
ctx = new InitialDirContext(env); 
NamingEnumeration<SearchResult> answer = ctx.search(
    ldapBaseDN, filter, searchCtrls); 

String fullDN = null; 
if (answer.hasMore()) { 
    fullDN = answer.next().getNameInNamespace(); 

    ctx.close(); 
    ctx = null; 

    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, fullDN); 
    env.put(Context.SECURITY_CREDENTIALS, password); 

    ctx = new InitialDirContext(env); 
    // here I must create the user connection for check if the uid and password is good. 

    return true; 
} 

Vielen Dank.

Antwort

0

Nachdem Sie den Benutzer im LDAP DIT gefunden haben, sollten Sie die Umgebung ändern, um den DN und das Kennwort des Benutzers zu enthalten, und dann LdapContext.reconnect() mit demselben Context ausgeben.

Sie müssen keine separate 'physische' Verbindung erstellen.

Verwandte Themen