2016-04-14 12 views
0

LDAPに接続する必要がありますが、Javaコードを使用して接続できないため、LDAPAdminツールを使用して接続しています。LDAP認証の問題

String url = "ldap://host name:389"; 
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
ldapEnv.put(Context.PROVIDER_URL, url); 
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); 
ldapEnv.put(Context.SECURITY_PRINCIPAL, "CN=username"); 
ldapEnv.put(Context.SECURITY_CREDENTIALS, "#1223"); 

ERROR

Search error: javax.naming.AuthenticationException: [LDAP: error code 49 - 
    80090308: LdapErr: DSID-0C0903CF, comment: AcceptSecurityContext error, data 52e, v2580 
+0

私はパスワードに特殊文字を持っていますか? – JavaC

+1

セキュリティプリンシパルは、RDNだけでなくDN全体である必要があります。 – EJP

答えて

0

は、ここでエラーコードを見てください - http://www-01.ibm.com/support/docview.wss?uid=swg21290631

データ52Eを - リンクによると、52eが無効な資格情報を意味します。

+0

response.iをいただきありがとうございます。私はちょうどそれが働いたプリンシパルからCNを削除しました! – JavaC

1

これを一度見てください。これは私のためにうまくいきます。これはあなたを助けるかもしれません。 ありがとう..

import java.util.Hashtable; 
import javax.naming.Context; 
import javax.naming.NamingException; 
import javax.naming.directory.Attribute; 
import javax.naming.directory.Attributes; 
import javax.naming.directory.BasicAttribute; 
import javax.naming.directory.BasicAttributes; 
import javax.naming.ldap.InitialLdapContext; 
import javax.naming.ldap.LdapContext; 
public class LdapContextCreation { 
    public static void main(String[] args) { 
     LdapContextCreation ldapContxCrtn = new LdapContextCreation(); 
     LdapContext ctx = ldapContxCrtn.getLdapContext(); 
    } 
     public LdapContext getLdapContext(){ 
      LdapContext ctx = null; 
      Hashtable env = new Hashtable(); 
      env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
      env.put(Context.SECURITY_AUTHENTICATION, "Simple"); 
      env.put(Context.SECURITY_PRINCIPAL, "cn=company,dc=example,dc=com");   
      env.put(Context.SECURITY_CREDENTIALS, "pasword");   
      env.put(Context.PROVIDER_URL, "ldap://localhost:389"); 
      try{ 
      ctx = new InitialLdapContext(env, null);   
      System.out.println("Connection Successful."); 
      }catch(NamingException nex){  
       System.out.println("LDAP Connection: FAILED");  
       nex.printStackTrace(); 
       }  
      return ctx; 
       } 

     }