2014-09-23 104 views
1

Hashtable env = new Hashtable(11); create environment env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER_URL,“ldap:// localhost:10389/ou = system”); url Declaration env.put(Context.SECURITY_CREDENTIALS,“secret”); env.put(Context.SECURITY_AUTHENTICATION,“simple”); env.put(Context.SECURITY_PRINCIPAL,“ou = 121,ousystem”); For this is Domain env.put(Context.SECURITY_CREDENTIALS,“secret”); set new credential //搜索并检索DN。如何在Java代码中为ldap身份验证设置新的安全身份验证

 DirContext ctx = null; 
    NamingEnumeration results = null; 
    try { 
     ctx = new InitialDirContext(env);`cant create obj here` 
     SearchControls controls = new SearchControls(); 
    // Authenticate 
      ldap = new InitialLdapContext(env, null); 
      } catch (AuthenticationException ae) { 
    ae.printStackTrace(); 
     } catch (NamingException e) { 
    e.printStackTrace(); 
} 

错误:javax.naming.NameNotFoundException:when creating obj for context

回答

2

你Context.SECURITY_PRINCIPAL似乎是不正确的,它不可能是一个OU(组织单位),但CN,UID等。您它可以是cn = 121,ou = ousystem。你需要检查出来。

如果您有LDAP浏览器(例如Apache Directory Studio或Softera LDAP),请尝试使用连接详细信息连接到LDAP服务器。