2011-12-14 8 views
7

Tôi đang cố gắng để ứng dụng java tùy chỉnh của mình sử dụng Máy chủ Thư mục Hoạt động của chúng tôi để xác thực nhưng tôi không thể làm cho nó hoạt động vì một lý do nào đó. Bất cứ ai có thể thấy lý do tại sao điều này? Đây là phương pháp của tôi dưới đây:Vấn đề xác thực ldap Java

private boolean authenticate(String serverName, String userId, String password) throws NamingException { 
    DirContext ctx = null; 
    Hashtable env = new Hashtable(11); 
    boolean b = false; 
    try { 
     env.put(Context.INITIAL_CONTEXT_FACTORY, 
     "com.sun.jndi.ldap.LdapCtxFactory"); 
     env.put(Context.PROVIDER_URL, "ldap://servername.org:389"); 
     env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
     env.put(Context.SECURITY_PRINCIPAL, "uid="+ userId +",ou=All Users,dc=site,dc=org"); 
     env.put(Context.SECURITY_CREDENTIALS, password); 
     System.out.println("before context"); 
     // If there isn't a naming exception then the user is authenticated. Return true 
     ctx = new InitialDirContext(env); 
     //The user is authenticated. 
     b = true; 
    } catch (NamingException e) { 
     System.out.println("the user is not authenticated return false"); 
     b = false; 
    }finally{ 
     if(ctx != null) 
      ctx.close(); 
    } 
    return b; 
} 

Kết quả:

[12/14/11 16:27:47:746 CST] 0000001f SystemErr  R 
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, vece 
+1

những gì sẽ xảy ra? bạn có thể đăng bài theo dõi ngăn xếp không? –

+0

Tôi nhận được mã lỗi ldap 49 là lỗi xác thực. Tuy nhiên, thông tin đăng nhập tôi cung cấp là chính xác. Tôi có thể đăng nhập vào cửa sổ máy của tôi và các máy chủ khác với nó. – bschupbach

+0

ldap của bạn có yêu cầu mã hóa không? Bạn có sử dụng bất kỳ thông số kết nối cụ thể nào mà bạn có thể thấy cần chia sẻ không? Nếu không thì nó chỉ đoán thôi. – hovanessyan

Trả lời

4

Các bạn đã thử theo cách này?

//... 
env.put(Context.SECURITY_PRINCIPAL, "cn="+ userId +",ou=All Users,dc=site,dc=org"); 
//... 

Cũng thay

Hashtable env = new Hashtable(11); 

với

Hashtable env = new Hashtable(); 
+1

Cảm ơn !! Điều này đã làm các trick ... Tôi biết nó phải là một cái gì đó đơn giản. – bschupbach