Archivo de la etiqueta: error 401

Error 401 no autorizadado en InfoPath Forms Services con SharePoint 2010

Después de migrar multiples formularios InfoPath de MOSS 2007 a SPS 2010, se produce un error intermitente, cuando un formulario utiliza el Web Service: GetUserProfileByName para recuperar la información del usuario actual.

Los errores que podemos ver en los logs de Sharepoint son:

  • Data adapter failed during OnLoad: The remote server returned an error: (401) Unauthorized.
  • The following query failed: GetUserProfileByName (User: , Form Name: , … Type: DataAdapterException, Exception Message: The remote server returned an error: (401) Unauthorized. The remote server returned an error: (401) Unauthorized.)

La arquitectura que estamos usando para SharePoint es de dos nodos front-end configurados con balanceo de carga. Esto provoca que se produzaca una autenticación de doble salto (es incapaz de pasar las credenciales de usuario de un servidor a otro).

La solución ideal es configurar correctamente el balanceador de carga para evistar este problema, pero si no nos es posible, otra solución es utilizar el archivo hosts para obligar que las peticiones se realicen sobre la misma maquina y no haya doble salto de credenciales.

Para ello solo hay que añadir una entrada en el archivo hosts (c:\windows\system32\drivers\etc\hosts) de cada uno de los front-end, la direccion IP de loopback apuntando al dominio que se este usando…

Ejemplo: Si tiene dos servidores web: Servidor1 y Servidor2 en 192.168.0.1 y 192.168.0.2, la entrada del archivo de hosts para cada máquina sería:

  • Para el Servidor1:
    • 127.0.0.1 tu.dominio.sharepoint
  • Para el Servidor2:
    • 127.0.0.1 tu.dominio.sharepoint

De esta forma, cuando cada servidor haga una petición a “tu.dominio.sharepoint”, utilizará la entrada del archivo hosts y hará una petición a la misma maquina evitando el doble salto de credenciales.