GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Autenticación Integrada y Delegación de Kerberos en IIS6


La Autenticación Integrada y la Delegación de Kerberos, se trata de una configuración típica utilizada en Aplicaciones Web (Aplicaciones ASPNET, Aplicaciones Sharepoint, Sincronización Web de la Replicación de Mezcla de SQL Server 2005, etc.). Sin embargo, ¿Para qué sirve la Autenticación Integrada y la Delegación de Kerberos? ¿Qué pasos se deben seguir para configurarlo? ¿Y en caso de un Cluster NLB?

La Autenticación Integrada y la Delegación de Kerberos sirve para poder conectarse a un servidor IIS remoto y autenticarnos con el usuario contextual con el que hemos iniciado sesión en nuestra estación de trabajo, y de forma adicional, cuando la Aplicación Web que se está ejecutando en dicho IIS necesita acceder a recursos remotos (ej: sistema de ficheros, SQL Server, etc) se puedan utilizar las credenciales del usuario que interactúa con la aplicación, en vez de las credenciales del usuario que inicia el Pool de Aplicaciones del IIS u otro usuario cualquiera (es decir, Impersonación). Además, con la Autenticación Integrada evitamos que se pidan las credenciales y evitamos que viajen las credenciales por la red, siendo éste el método de autenticación más seguro.

Sin embargo, se debe tener en cuenta que requiere de Directorio Activo, de Microsoft Internet Explorer, y no funciona en Internet (excepto que se publique en Internet tanto los Controladores de Dominio de Directorio Activo, como la zona DNS utilizada por el dominio). Además, se trata de una configuración complicada, y desde el punto de vista de la Seguridad podría ser arriesgada, pues una aplicación sujeta a ésta configuración, sería capaz de abusar de los permisos de sus usuarios para obtener acceso a recursos restringidos (ficheros, bases de datos, etc.), y en consecuencia, comprometer la seguridad de nuestra infraestructura.

Las configuraciones a realizar son las siguientes:

  • Activar la Autenticación Integrada en el IIS. Es suficiente con abrir la Herramienta Administrativa de Internet Information Services, y utilizar la pestaña Directory Security de las Propiedades del directorio virtual deseado. En caso de un Cluster NLB, realizar en cada nodo del Cluster.

  • En caso de utilizar un nombre DNS (en vez del nombre NetBIOS del servidor) para acceder al IIS junto con la Autenticación Integrada (situación habitual en el caso de un Cluster NLB), es necesario Configurar en Microsoft Internet Explorer la zona de seguridad utilizada (ej: Sitios de Confianza ó Trusted Sites) para incluir el sitio al que deseamos acceder (si no estuviese incluido en dicha zona), y además, modificar la configuración de la zona activando la opción de "Automatic logon with current user name and password". Esta configuración se debe realizar sobre todos los equipos clientes, por lo cual, resulta de utilidad el uso de Directivas de Grupo (es decir, Políticas de Directorio Activo).

  • Habilitar la Delegación de Kerberos en la cuenta de equipo del servidor IIS. Esta tarea se hace con la Herramienta Administrativa de Active Directory Users and Computers (ADUC), en las Propiedades de las cuentas de equipo de cada uno de los servidores IIS deseados (opción Trust this computer for delegation). Una vez activada esta opción, reiniciar es equipo correspondiente.

  • Habilitar la Delegación de Kerberos en la cuenta de usuario utilizada en el Application Pool del IIS. Esta tarea se hace con la Herramienta Administrativa de Active Directory Users and Computers (ADUC), en las Propiedades de la cuenta de usuario (opción Account is trusted for delegation). Este paso debe realizarse, si el Application Pool de IIS utiliza una cuenta de usuario de Dominio, algo obligatorio en entornos de IIS en NLB.

  • En caso de utilizar un nombre DNS (en vez del nombre NetBIOS del servidor) es necesario Registrar un nuevo Service Principal Name (SPN), utilizando la utilidad setspn del Kit de Recursos de Windows 2000 (descargable gratuitamente desde la Web de Microsoft). Como Directorio Activo desconoce este nombre de servicio, el Ticket Granting Service (TGS) no concede el ticket para autenticar al usuario, forzando la utilización del siguiente método de autenticación (es decir, NTLM). Se pueden dar dos casos.

    Por ejemplo, si tenemos una única máquina (es decir, sin Cluster NLB) Windows Server 2003 funcionando como IIS con el Application Pool ejecutándose bajo la cuenta de Network Service, la cual tiene un nombre NetBIOS VIIS01, y queremos acceder a través del nombre DNS www.guillesql.local y aprovecharnos de la Autenticación Integrada y de la capacidad de Delegación, deberemos ejecutar el siguiente comando sobre el servidor IIS.

    setspn –A HTTP/VIIS01 VIIS01
    setspn –A HTTP/www.guillesql.local VIIS01

    Sin embargo, si tenemos dos o más máquinas Windows Server 2003 funcionando como IIS y formando un Cluster NLB, se debe configurar el Application Pool para ejecutarse bajo una cuenta de usuario del dominio (ej: GUILLESQL\IISSvc) en cada uno de los nodos del Cluster NLB, debiendo pertenecer al grupo local de cada nodo IIS_WPG. Seguidamente, utilizaremos el comando setspn, como en el siguiente ejemplo:

    setspn –A HTTP/www.guillesql.local GUILLESQL\IISSvc

    Adicionalmente, puede ser necesario agregar los Service Principal Name asociados a los nombres de los servidores miembros (Nodos) del Cluster NLB, para permitir el acceso a los mismos, como se muestra en el siguiente ejemplo:

    setspn -A HTTP/VIIS01 GUILLESQL\IISSvc
    setspn -A HTTP/VIIS01.guillesql.local GUILLESQL\IISSvc
    setspn -A HTTP/VIIS02 GUILLESQL\IISSvc
    setspn -A HTTP/VIIS02.guillesql.local GUILLESQL\IISSvc

    Para más información sobre la solución Cluster NLB de Microsoft, se puede consultar el artículo Instalar y Configurar Microsoft Cluster NLB (Network Load Balancing) en Windows Server 2003.

  • Modificar la Metabase de IIS. Es necesario modificar la Metabase de IIS (es posible hacer un Backup de la Metabase de IIS previamente) para especificar como protocolo de autenticación a Kerberos en el Sitio Web deseado, dejando la autenticación NTLM en segunda posición (como alternativa a Kerberos). Esto se puede realizar de varias formas, como por ejemplo ejecutando el comando cscript.exe adsutil.vbs set w3svc/1/NTAuthenticationProviders "Negotiate, NTLM" desde c:\inetpub\adminscripts (Nota: en el ejemplo, el 1 es el ID del Sitio Web dentro de IIS, que suele estar asignado al Sitio Web por defecto. El valor que deberemos utilizar, deberemos comprobarlo con la herramienta administrativa IIS Manager). También se puede modificar la Metabase directamente o mediante la herramienta Metabase Explorer del Kit de Recursos del IIS.

Actualizado 19/09/2009: Por aportar alguna documentación más oficial que este simple POST, quiero aprovechar para incluir unos Artículos de Soporte de Microsoft (KBs de los de toda la vida) que hablan sobre este tema, y algún otro enlace más:

Es importante tener en cuenta que no es necesario utilizar la Delegación de Kerberos en todos los entornos de IIS. En muchos casos es suficiente con la Autorización, es decir, utilizar las credenciales del usuario para mostrarle (autorizarle) o no a ver una página Web de nuestro IIS. Sin embargo, en otros casos puede ser requisito de la Aplicación que se está montando sobre el IIS, incluyendo por supuesto, a MOSS 2007 (ej: acceder a Web Services desde formularios InfoPath publicados en MOSS 2007).

Por último, quería incluir un par de enlaces a otros artículos aquí publicados, que están íntimamente relacionados con la Delegación de Kerberos:

Actualizado 21/02/2010: Recientemente me he encontrado un caso de configuración de Kerberos, en particular, configurar la Autenticación y Delegación de Kerberos con MOSS y Analysis Services, que puede resultar una lectura de interés en relación con el tema del presente artículo.


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Julio de 2018 (1)
Junio de 2018 (4)
Mayo de 2018 (5)
Abril de 2018 (3)
Marzo de 2018 (2)
Febrero de 2018 (7)
Enero de 2018 (1)
Diciembre de 2017 (15)
Noviembre de 2017 (7)
Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.