Configurar la autenticación Kerberos para IIS no es tan sencillo como uno esperaría, especialmente si se gestiona una granja de servidores web o simplemente se intenta evitar el molesto mensaje que solicita constantemente el nombre de usuario y la contraseña. Todo este proceso implica varios pasos: configurar IIS, crear nombres principales de servicio (SPN), establecer permisos y ajustar los grupos de aplicaciones. Es un poco engorroso al principio, pero una vez que todo está en su lugar, la experiencia de inicio de sesión puede ser mucho más fluida para los usuarios, sin necesidad de recurrir a NTLM ni al acceso anónimo a menos que se desee. Además, solucionar los problemas de Kerberos puede ser un verdadero dolor de cabeza si algo falla, por lo que asegurarse de que todo esté configurado correctamente de antemano es de gran ayuda. Para confirmar que funciona, herramientas como Fiddler son muy útiles, ya que permiten revisar los encabezados de las solicitudes y comprobar si se utiliza Kerberos (busque el «Encabezado de autorización (Negociar)» que contiene un ticket).Entonces, si estás cansado de las solicitudes de contraseña o la autenticación inestable, sigue esto y, con suerte, lograrás que Kerberos haga su magia.
Cómo solucionar la autenticación Kerberos en IIS para granjas web
Configurar los ajustes de autenticación de IIS
- Abra el Administrador de IIS ( inetmgr.exe ), seleccione su sitio web y luego vaya a la sección Autenticación.
- La autenticación anónima está habilitada de forma predeterminada. Desactívela y active la autenticación de Windows. IIS siempre prueba primero la autenticación anónima, por lo que debe desactivarla.
- Haga clic en Proveedores en el panel derecho para ver la lista de proveedores de autenticación. Asegúrese de que Negotiate esté primero en la lista, antes que NTLM. Dado que Negotiate usa Kerberos primero, debe priorizarse. Si NTLM está primero, Kerberos no se activará.
Creación y registro de entradas de SPN (nombre principal del servicio)
- Los SPN son el enlace directo entre su dominio y el servidor IIS, lo que indica a Kerberos que puede delegar tickets aquí. Debe configurarlos si se accede a su sitio web a través de un nombre de host o si varios servidores forman una granja web.
- Si se trata de un solo servidor al que se accede simplemente por su nombre de host (como
http://server-name), es probable que los SPN ya estén allí, porque, por supuesto, Windows lo configura por usted. - Si su URL es diferente (por ejemplo, https://webportal.adatum.loc ) o está equilibrando la carga, deberá agregar SPN manualmente.
Setspn /s HTTP/webportal adatum\iis_service Setspn /s HTTP/webportal.adatum.loc adatum\iis_service
Esto básicamente otorga a la cuenta iis_service permiso para autenticarse mediante Kerberos en esas URL. Si trabaja en una granja de servidores web, cree una cuenta de AD dedicada (como iis_service ) y asígnele SPN. Es más sencillo y menos complejo que apilar SPN en cuentas de servidor.
Comprobar la configuración de SPN
- Ejecutar
setspn /l iis_servicepara enumerar los SPN actuales y confirmar que estén configurados correctamente. - Asegúrese de que no haya SPN duplicados; de lo contrario, Kerberos podría confundirse y recurrir a NTLM, lo que anularía su propósito.Úselo
setspn -xpara buscar duplicados. Si encuentra duplicados, corríjalos, ya que, como ya hemos dicho, Kerberos no tolera los duplicados.
Configurar la identidad del grupo de aplicaciones
- En el Administrador de IIS, seleccione el grupo de aplicaciones de su sitio web (por ejemplo, DefaultAppPool o uno personalizado).
- Abra la Configuración avanzada y cambie la Identidad de ApplicationPoolIdentity a la cuenta de dominio que creó anteriormente ( adatum\iis_service ).
- A continuación, vaya a su sitio en IIS, abra el Editor de configuración, navegue a system.webServer > seguridad > autenticación > windowsAuthentication.
- Cambie useAppPoolCredentials a True. Esto indica a IIS que use la cuenta de dominio especificada para autenticar los tickets de Kerberos en lugar de la identidad del grupo de aplicaciones.
Reiniciar y probar
- Ejecútelo
iisreseten un símbolo del sistema de administrador para reiniciar IIS y recargar todo. - Luego, acceda a su sitio web a través de http://webportal.adatum.loc. Observe el tráfico en Fiddler y, si Kerberos funciona, debería ver el encabezado de autorización (Negociar) con un ticket.
- Si sigue recurriendo a NTLM o a un sistema anónimo, revise los SPN, los permisos y la configuración de IIS. A veces, reiniciar el servidor ayuda a borrar las credenciales almacenadas en caché y reactiva todo.
En algunas configuraciones, estos elementos fallan la primera vez, pero luego funcionan tras reiniciar o borrar la caché. Además, asegúrese de que el navegador de su cliente esté configurado para procesar tickets Kerberos; a veces, navegadores como Chrome necesitan indicadores especiales o ajustes en las políticas de grupo para hacerlo sin problemas. Revise también los registros de eventos ( Visor de eventos > Registros de Windows > Seguridad ) para detectar errores de autenticación Kerberos; estos ofrecen buenas pistas sobre el problema.