Estoy intentando que mi aplicación Java personalizada use nuestro Servidor de Directorio Activo para la autenticación pero no puedo hacer que funcione por alguna razón. ¿Alguien puede ver por qué es esto? Aquí es mi método a continuación:Problema de autenticación Java ldap
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;
}
Resultado:
[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
lo que sucede? ¿puedes publicar un rastro de pila? –
Obtengo un código de error ldap 49 que es un error de autenticación. Sin embargo, las credenciales que estoy suministrando son correctas. Puedo iniciar sesión en mi máquina de Windows y otros servidores con ella. – bschupbach
¿su ldap requiere cifrado? ¿Utiliza algún parámetro de conexión específico que pueda considerar importante compartir? De lo contrario, es solo adivinar. – hovanessyan