A Active Directory no le importa si tu nombre es Jose o José

Hoy fue uno de esos días que se viven una vez cada 10 años, ¡Hoy el usuario tuvo la razón!

Ya lo se, parece increíble, pero es la verdad.

Tenemos una aplicación que coge los atributos de un usuario del Active Directory y después los usa para conectarse a diferentes servicios. Esta funciona perfectamente para todos los usuarios excepto para José. Cuando José se intenta conectar a uno de los servicios estos siempre dan un error de autenticación (usuario o contraseña erroneos) y fallan.

Después de estar varios días mirando logs finalmente dimos con el problema… La aplicación se intenta autenticar utilizando el usuario Josñ. ¡Un aplauso para los desarrolladores que no soportan Unicode!

El usuario nos comentaba que él podía hacer que la aplicación funcionase si utilizaba el usuario Jose en vez de José y, por supuesto, nosotros no le creímos. ¿Como va a ser lo mismo conectarse con un usuario que con otro? ¿Tendría dos usuarios en el Active Directory?

Para nuestra sorpresa, no había otro usuario y la aplicación si que funcionaba al iniciar sesión con el usuario Jose. Lo curioso es que cuando revisabamos los logs aparecía que el usuario que se conectaba era José.

Después de investigar un rato conseguimos el siguiente artículo de Microsoft que confirmaba lo que decía el usuario. Cuando te intentas conectar al Active Directory con un usuario que tiene acentos o simbolos diacríticos en el nombre (sAMAccountName) se hace una conversión a “símbolos simples” para facilitar el inicio de sesión con interfaces que no soportan estos caracteres. Bien de parte de Microsoft, muy mal de parte de los desarrolladores.

Así que ahí está… Todos los días se aprende algo nuevo.