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
những gì sẽ xảy ra? bạn có thể đăng bài theo dõi ngăn xếp không? –
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
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