簡體   English   中英

JNDI LDAP在同一InitialDirContext對象中創建2個連接

[英]JNDI LDAP create 2 connection In the the same InitialDirContext object

我需要創建1個ldap connexion(我使用一個應用程序帳戶),並且需要從此連接中通過檢查uid和密碼是否正常來創建其他connexion(用戶連接)。

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

謝謝。

在LDAP DIT中找到用戶之后,您應該修改環境以包含用戶的DN和密碼,然后使用相同的Context發出LdapContext.reconnect()

您無需創建單獨的“物理”連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM