2011-12-14 23 views
7

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 
+1

lo que sucede? ¿puedes publicar un rastro de pila? –

+0

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

+0

¿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

Respuesta

4

¿Ha tratado de esta manera?

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

también sustituir

Hashtable env = new Hashtable(11); 

con

Hashtable env = new Hashtable(); 
+1

¡Gracias! Esto hizo el truco ... Sabía que tenía que ser algo simple. – bschupbach

Cuestiones relacionadas