Я пытаюсь, чтобы мое пользовательское Java-приложение использовало наш Active Directory Server для аутентификации, но я не могу заставить его работать по какой-то причине. Кто-нибудь может понять, почему это так? Вот мой метод ниже:Ошибка проверки подлинности 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;
}
Результат:
[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
, что происходит? можете ли вы опубликовать трассировку стека? –
Я получаю код ошибки ldap 49, который является ошибкой аутентификации. Однако учетные данные, которые я поставляю, верны. Я могу подключиться к своей машине Windows и другим серверам. – bschupbach
Ваш ldap требует шифрования? используете ли вы какие-либо конкретные параметры подключения, которые могут оказаться важными для обмена? В противном случае это просто догадки. – hovanessyan