En la primera parte de esta serie de artículos vimos como localizar los controladores de dominio a través del servicio DNS. En esta segunda parte quiero comentar como podemos, muy fácilmente, validar un usuario de Active Directory desde Java mediante LDAP. Además veremos, como en el resto de artículos, que no necesitamos ninguna librería externa ni componente especial. En este caso utilizamos simplemente la implementación del cliente LDAP que incluye Java.

Realmente hay bastantes maneras (digamos que internamente) para validar usuarios Windows. Esta entrada de StackOverflow es una muestra de ello. Además presenta también un código sencillo para una validación simple.

Reduciendolo a la mínima expresión, lo que necesitamos es simplemente intentar establecer una sesión LDAP con el controlador de dominio. Eso, en Java, podemos hacerlo simplemente con una linea:

DirContext context = LdapCtxFactory.getLdapCtxInstance("ldap://" + servidor + '/', props);

El segundo parámetro es donde indicamos diversas propiedades para efectuar la conexión, especialmente el usuario y contraseña.

Hashtable<String,String> props = new Hashtable<String,String>();
props.put(Context.SECURITY_PRINCIPAL, usuario + '@' + dominio);
props.put(Context.SECURITY_CREDENTIALS, pass);
props.put(Context.REFERRAL, "follow");

La última opción sirve para solicitar al cliente LDAP que siga las redirecciones que reciba. Eventualmente algunos servidores pueden contestar a una petición de sesión con una redirección, al estilo de una respuesta HTTP 302. Si le añadimos esta opción el cliente LDAP automáticamente seguirá estas redirecciones.

Entradas relacionadas: