En este artículo se describe cómo configurar correctamente el servidor IIS con aplicaciones que usan la impersonación (autenticación de Windows) en un entorno con servicio de equilibrio de carga de red de Windows (WLBS).
Cada vez son más las aplicaciones que se migran a WEB debido a su facilidad de implantación, mantenimiento, etc. Otro punto importante es la seguridad de la aplicación la cual se puede lograr fácilmente haciendo uso de la autenticación de Windows (Kerberos). No obstante, se debe tener en cuenta que con este escenario se crea un punto crítico que es el servidor Web en este caso. Para garantizar la alta disponibilidad de nuestra aplicación podemos optar por varias soluciones aunque disponemos de una gratuita, incluida en nuestro sistema operativo Windows Server que es el Equilibrio de carga de red. Con esta tecnología, podemos crear un IP clúster el cual balancea la carga entre los nodos para garantizar la alta disponibilidad, escalabilidad, etc.
El mayor problema consiste en conseguir la autenticación de Windows realizando llamadas a la cabecera del clúster. En este caso, las credenciales se pierden y el usuario se convierte en Null. Para conseguir pasar las credenciales incluso realizando llamadas a la cabecera del mismo debemos de hacer lo siguiente:
- Configurar la cuenta de equipo de cada uno de los miembros del clúster para confiar en su delegación.
- Crear una cuenta de usuario del dominio el cual ejecutará los grupos de aplicaciones del IIS.
- Al igual que en la cuenta de cada equipo, la cuenta de usuario del dominio debe estar configurada para confiar en su delegación.
- El usuario del dominio debe ser miembro del grupo IIS_WPG en cada uno de los equipos miembros del clúster.
- Crear un nuevo grupo de aplicaciones en nuestros servidores IIS y ejecutarlos con el usuario del dominio.
- Configurar nuestro Sitio Web para usar la autenticación de Windows integrada.
- Registrar los SPN’s (ServicePrincipalName) para cada uno de los equipos miembros del clúster.
Para aquellos que no saben cómo configurar un clúster NLB, recomiendo la lectura de las siguientes páginas:
Nota: Para la realización del artículo se ha usado un dominio llamado pruebas.local con el nivel funcional en Windows Server 2003. El clúster IIS está compuesto por dos nodos NODO1 y NODO2 cuyo nombre es CLUSTER.PRUEBAS.LOCAL.
Configuración de los nodos del clúster:
Una vez que los nodos del clúster están unidos al dominio accedemos la MMC Usuarios y equipos de Active Directory y buscamos las cuentas de los equipos miembros del clúster. En las propiedades de cada una de las cuentas marcamos la opción Confiar en este equipo para la delegación a cualquier servicio (sólo Kerberos):

Creación y configuración del usuario del dominio:
En segundo lugar vamos a crear un usuario del dominio que se encargará de ejecutar los grupos de aplicaciones de los servidores IIS. En este caso le llamará IIS_USER:

En el siguiente paso vamos a configurar la cuenta del usuario IIS_USER para que, al igual que en las cuentas de equipo, se confie en ella para su delegación. Accedemos a la propiedades del usuario IIS_USER desde Usuarios y equipos de Active Directory y nos vamos a la ficha Delegación.

Importante: Si la ficha Delegación no está visible, se debe a que aún no hay ningún SPN creado:
Configuración de los grupos de los servidores IIS:
Debemos de añadir al usuario IIS_USER al grupo IIS_WPG local de cada uno de los nodos del clúster:

Creación y configuración del grupo de aplicaciones IIS
Para crear un nuevo grupo de aplicaciones accedemos a la MMC de Administrador de Internet Information Services (IIS)àGrupos de aplicacionesàBotón derecho Nuevo-Grupo de aplicaciones. Le asignamos un nombre y usaremos el grupo de aplicaciones DefaultAppPool como plantilla.

Seguido accedemos a las propiedades de nuestro nuevo grupo de aplicaciones y le configuramos para ser ejecutado con las credenciales de nuestro usuario de dominio IIS_USER.

Configuración del sitio Web:
Dado que nuestro sitio Web tiene que ejecutarse bajo el grupo de aplicaciones que hemos creado, en este caso Kerberos, tenemos que acceder a las propiedades del mismo para realizar el cambio:

Del mismo modo tenemos que configurar nuestro sitio Web para usar solamente la autenticación de Windows integrada:

Creación de los SPN’s:
Para poder crear los SPN’s (ServicePrincialName) es necesario tener instalados los Windows Server 2003 Support Tools ubicados en la carpeta SUPPORT\TOOLS\SUPTOOLS.MSI dentro del CD de instalación de Windows. Después de instalar las herramientas de soporte, dispondremos de un nuevo comando llamado setspn. Su sintáxis es la siguiente:
setspn -a Servicio/NombreEquipo Dominio\NombreUsuario
Debemos de crear el SPN asociado a la “cabecera” de nuestro clúster que en este caso es cluster.pruebas.local por lo que quedaría de la siguiente manera:
setspn -a http/cluster pruebas\iis_user
Para que la autenticación de Windows funcione llamando a un solo nodo después de crear el SPN para el clúster es necesario agregar un SPN para cada nodo del clúster:
setspn -a http/nodo1 pruebas\iis_user
setspn -a http/nodo2 pruebas\iis_user