Java y Active Directory (y VI): cambio de contraseñas caducadas o forzadas

En el anterior artículo vimos un par de opciones para poder cambiar la contraseña de un usuario de Active Directory a través de LDAP. El procedimiento más útil, es, probablemente, el del cambio de la propia contraseña pues evita que la aplicación tenga que utilizar (y por tanto guardar) unas credenciales de administrador del dominio.

Sin embargo, pese a que el mecanismo funciona en la mayoría de los casos, requiere que podamos conectar inicialmente mediante LDAP con las credenciales del propio usuario. Se puede pensar que es un requerimiento obvio ya que vamos a cambiar la propia contraseña y necesitamos igualmente conocerla previamente. El problema viene cuando las credenciales son correctas pero no podemos establecer una sesión. Dos casos muy habituales son cuando la contraseña está caducada y cuando está marcada la cuenta como pendiente de un cambio obligatorio de la contraseña en el siguiente inicio (típico cuando se fija una contraseña por parte de un administrador para obligar a que el usuario ponga una propia).

En este caso, lamentablemente, no podemos hacer el cambio de contraseña conectando con la cuenta del propio usuario. Por suerte tampoco necesitamos conectar como el usuario administrador sino que podemos utilizar un término medio. Utilizando exactamente el mismo código que en el caso del cambio de contraseña propio, pero conectando como otro usuario, podemos cambiar la contraseña igualmente. El punto interesante es que el usuario de conexión no necesita ningún privilegio especial, puede ser un usuario sin absolutamente ningún permiso más allá de conectar al dominio.

Y con esto termino la serie de artículos donde hemos visto algunos trucos para utilizar Active Directory a través de LDAP mediante código Java estándar.

Entradas relacionadas: