2016-04-15 1 views
0

私は1つのldap接続を作成する必要があります(私はアプリケーションアカウントを使用します)。この接続からは、uidとパスワードが一致するかどうかを確認する必要があります。 OK。JNDI LDAP作成2接続同じInitialDirContextオブジェクト

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; 
} 

ありがとうございます。

答えて

0

LDAP DITでユーザーを見つけたら、ユーザーのDNとパスワードを含むように環境を変更し、同じContextを使用してLdapContext.reconnect()を発行する必要があります。

別個の「物理的な」接続を作成する必要はありません。

関連する問題