IIS 6 y la Autenticacion integrada

Recientemiente he tenido un problema en el trabajo que me ha estado volviendo loco ...

Os cuento un poco el escenario. Para el desarrollo en el que estoy involucrado necesitamos que la máquina sobre la que desarrollamos tenga Windows 2003 Server R2 como sistema operativo e IIS con varios sites activos y la autenticación integrada de windows habilitada.

Para ello hemos montado maquinas virtuales con vmware y desarrollamos desde la propia maquina virtual. Cuando terminamos de configurar la maquina virtual e IIS probamos los sitios web, pero el comportamiento que obtenemos no es el esperado ...

Para los sitios web que tienen autenticación integrada Internet Explorer pide las credenciales una y otra vez, cuando navegamos desde el propio servidor. Esos mismos sitios web funcionan perfectamente si son accedidos desde el exterior (otra máquina).

Tenemos correctamente asignados los permisos necesarios a nivel de NTFS para la autenticación integrada, es más, los usuarios con lo que hacemos las pruebas son administradores locales. Sin embargo Internet Explorer se empeña en pedir las credenciales una y otra vez.

Tras revisar un millon de veces la configuración y los permisos, detectamos que el problema se produce en los sites que tienen configurada una o más cabeceras host (host header), y cuya dirección IP está mapeada directamente en el archivo host (C:\WINDOWS\system32\drivers\etc\host).

Con esta información, buscamos un poco y llego a la siguiente página: http://geekswithblogs.net/mskoolaid/archive/2005/12/04/62164.aspx

En ella se explica que se trata del comportamiento por defecto a partir del Service Pack 1 de Windows 2003 Server. Es una nueva "característica" de seguridad que se ha añadido al sistema operativo en los Service Pack 1 y Service Pack 2, esta caracteristica se denomina "Loopback check security feature". Una descripción detallada se puede encontrar en: http://support.microsoft.com/?kbid=896861

Si vemos los enlaces anteriores se proponen dos soluciones. Ambas requieren tocar el registro de Windows, así que os recomiendo - como siempre - hacer copia de seguridad del registro y poner el maximo cuidado en lo que hacemos.

Solución 1: Deshabilitar "Loopback check security feature":

Con este método vamos a deshabiliar la "caracteristica".

  1. Haga clic en Inicio y en Ejecutar, escriba regedit y haga clic en Aceptar.
  2. En el Editor del Registro, busque la clave siguiente y después haga clic en ella:
     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  3. Haga clic con el botón secundario del mouse (ratón) en Lsa, seleccione Nuevo y, a continuación, haga clic en Valor DWORD.
  4. Escriba DisableLoopbackCheck y, a continuación, presione Entrar.
  5. Haga clic con el botón secundario del mouse en DisableLoopbackCheck y, a continuación, haga clic en Modificar.
  6. En el cuadro Información del valor, escriba 1 y haga clic en Aceptar.
  7. Cierre el Editor del Registro y reinicie el equipo.

Solución 2: Especificar nombres de host en el registro.

Para establecer los nombres de host que se asignan a la dirección local y poder conectarse a sitios Web en el equipo, siga estos pasos:

  1. Haga clic en Inicio y en Ejecutar, escriba regedit y haga clic en Aceptar.
  2. En el Editor del Registro, busque la clave siguiente y después haga clic en ella:  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  3. Haga clic con el botón secundario del mouse en MSV1_0, seleccione Nuevo y, a continuación, haga clic en Valor de cadena múltiple.
  4. Escriba BackConnectionHostNames y, a continuación, presione Entrar.
  5. Haga clic con el botón secundario del mouse en BackConnectionHostNames y, a continuación, haga clic en Modificar.
  6. En el cuadro Información del valor, escriba el nombre del host o los hosts de los sitios que están en el equipo local y, a continuación, haga clic en Aceptar.
  7. Cierre el Editor del Registro y reinicie el servicio IISAdmin.

Con esto hemos solucionado nuestro problema. Seguro que ha mas de uno le viene bien ¿verdad?.

Comentar que si se trata de una "caracteristica" se debería mostrar un mensaje de error o informativo más descriptivo de lo que esta ocurriendo y no un comportamiento que nada tiene que ver con lo que realmente esta ocurriendo. ¿no creeis?

Saludos, DJK

Pedro  Herrarte  Sánchez
IIS 6 y la Autenticacion integrada
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:23/04/2009
Última actualizacion:23/04/2009
Visitas totales:8923
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com