Alfresco Case sensitive username issues

Pueden surgir algunos problemas derivados del uso de nombres de usuario case sensitive en Alfresco combinados con AD, tal como se indica en los siguientes enlaces:

Conviene comprender un poco mejor cómo funciona el proceso de autenticación, para evitar estos problemas. En el siguientes diagrama se muestra el proceso que se sigue al logearse a través del cliente web :

El origen de todos los problemas deriva del PersonServiceImpl#getPerson(username). Hasta este punto que el usuario se authentique o no depende exclusivamente de la implementación usada para el AuthenticationService. Posiblemente dicha implementación no será case sensitive para los username. Lo importante es que hay que crear un bean que represente a ese usuario; y si no se tiene cuidado este bean puede crearse unas veces para el usuario PePe, pePE … Y esto es fuente de problemas, sobre todo al comprobar los ACL.

Para manejar la creación del bean org.alfresco.web.bean.repository.User, que representara al usuario para la aplicación web, existen varias opciones de configuración ( Hay que modificar las opciones del bean PersonService definido en authentication-services-context.xml, que es el encargado de seleccionar el User adecuado) .

Entre las opciones disponibles podemos indicar si la búsqueda del usuario en el repositorio es case sensitive. Se buscará un nodo con el cm:username que previamente se autenticó mediante el AuthentucationService. Si no se encuentra y es true createMissingPeople, se creará el usuario con las propiedades pro defecto y el bean user se instanciará con este nuevo usuario; si no se encuentra dará un error.

Por otro lado si se encuentra el usuario y es true processDuplicates se buscaran duplicados y se actuará con los duplicados según se indique en duplicateMode; en cualquier caso se creará el bean User con el último de los usuarios encontrados si lastIsBest es true, o con el primero si no.

Los valores posibles para duplicateMode son : LEAVE no hará nada co los duplicados, DELETE borrará los duplicados y SPLIT concatenará un ID al nombre de usuario.