[SharePoint 2010] Login failed for user ‘NT AUTHORITY\ANONYMOUS LOGON’

El otro día haciendo un deployment a un servidor SharePoint 2010, me encontré con un error poco común “Login failed for user ‘NT AUTHORITY\ANONYMOUS LOGON‘”. Este error aparecía en una webpart que habíamos desarrollado. Esto como siempre tiene dos partes, una mala y una buena. La mala es que perdí casi todo el día entendiendo que era lo que pasaba; la buena es que uno aprende bastante leyendo y entendiendo que es lo que pasa internamente en SharePoint 2010.

El Escenario

Tenemos una webpart que se conecta con una base de datos SQL Server 2008. La webpart hace consultas a la base y  también inserta un valor en una tabla.

Lo que  suponíamos es que la webpart impersonaría con el usuario que esta logueado SharePoint en ese momento.

Probandolo en nuestro ambiente de desarrollo todo funcionaba muy bien, le habíamos dado permiso de escritura y lectura en la base de datos al usuario Site Collection Administrator y siempre que probabamos con ese usuario andaba bien, el bien conocido “Works on my Machine“.

Cuando llevamos la solución a otro ambiente, dejó de andar y en los logs encontramos el error “Login failed for user ‘NT AUTHORITY\ANONYMOUS LOGON‘”

Tratando de entender un poco mas que pasaba llegamos a  entender que:

Teníamos un problema de “double hop“, es decir, si desarrollas una webpart en SharePoint que se comunica con una base de datos en otro server, el cual tiene permisos con las mismas credenciales del usuario que se encuentra logueado, Windows no puede pasarle las credenciales si se esta usando autenticacion NTLM.

La Solución

La técnica que utilizamos para resolver este problema fue, en la creación de la conexión a la base de datos utilizamos un bloque RunWithElevatedPerivileges. El código en este bloque corre con las credenciales del usuario del application pool. Esto elimina el error de “Double Hop“, pero aun se necesita agregar el usuario que corre el application pool de tu aplicación SharePoint a la base de datos, para que pueda leer y escribir.

Leave a Reply

Your email address will not be published. Required fields are marked *