Solución de problemas de AD FS: autenticación integrada de Windows
La autenticación integrada de Windows permite a los usuarios iniciar sesión con sus credenciales de Windows y experimentar el inicio de sesión único (SSO), mediante Kerberos o NTLM.
Motivo por el que se produce un error en la autenticación integrada de Windows
Hay tres razones principales por las que se producirá un error en la autenticación integrada de Windows. Y son: configuración incorrecta del nombre de la entidad de servicio (SPN), token de enlace de canal, configuración de Internet Explorer
Configuración incorrecta de SPN
Un nombre de entidad de servicio (SPN) es un identificador único de una instancia de servicio. La autenticación Kerberos usa los SPN para asociar una instancia de servicio a una cuenta de inicio de sesión de servicio. Esto permite a una aplicación cliente solicitar que el servicio autentique una cuenta incluso si el cliente no tiene el nombre de la cuenta.
Este es un ejemplo de cómo se usa un SPN con AD FS:
- Un explorador web consulta Active Directory para determinar qué cuenta de servicio ejecuta sts.contoso.com
- Active Directory indica al explorador que es la cuenta de servicio de AD FS.
- El explorador obtendrá un vale de Kerberos para dicha cuenta.
Si esta cuenta tiene un SPN mal configurado o incorrecto, pueden producirse problemas. Al examinar los seguimientos de red, es posible que vea errores como KRB Error: KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN.
Con los seguimientos de red (como Wireshark), puede determinar qué SPN intenta resolver el explorador y, luego, usar la herramienta de línea de comandos, setspn - Q <spn>; puede realizar una búsqueda en ese SPN. Puede que no se encuentre o que esté asignado a otra cuenta que no sea la cuenta de servicio de AD FS.
Puede comprobar el SPN examinando las propiedades de la cuenta de servicio de AD FS.
Token de enlace de canal
Actualmente, cuando una aplicación cliente se autentica ante el servidor mediante Kerberos, Digest o NTLM usando HTTPS, se establece en primer lugar un canal de seguridad de nivel de transporte (TLS) y la autenticación se lleva a cabo usando dicho canal.
El token de enlace de canal es una propiedad del canal externo seguro para TLS, y se usa para enlazar el canal externo a una conversación a través del canal interno autenticado con el cliente.
Si se produce un ataque de intermediario y se descifra y se vuelve a cifrar el tráfico SSL, la clave no coincidirá. AD FS determinará que hay algo que se interpone entre el explorador web y él mismo. Esto hará que se produzca un error en la autenticación Kerberos y al usuario se le avisará con un cuadro de diálogo 401 en lugar de una experiencia de inicio de sesión único.
Esto se puede producir por:
- Todo lo que se interponga entre el explorador y AD FS
- Fiddler
- Servidores proxy inversos que realizan el puente SSL
De forma predeterminada, AD FS lo tiene establecido en "Permitir". Puede cambiar este valor mediante el cmdlet Set-ADFSProperties -ExtendedProtectionTokenCheck None
de PowerShell.
Para más información al respecto, consulte Procedimientos recomendados para planear e implementar AD FS de forma segura.
Configuración de Internet Explorer
Nota:
Si usa Chrome, agréguelo a la lista de agentes de usuario compatibles con WIA.
De forma predeterminada, Internet Explorer se comportará de la siguiente manera:
- Internet Explorer recibirá una respuesta 401 de AD FS con la palabra NEGOTIATE en el encabezado.
- Esto indica al explorador web que obtenga un vale Kerberos o NTLM para devolverlo a AD FS.
- De forma predeterminada, IE intentará hacerlo (SPNEGO) sin interacción del usuario si la palabra NEGOTIATE está en el encabezado. Esto solo funcionará para sitios de intranet.
Hay dos cosas principales que pueden evitar que esto ocurra.
La habilitación de la autenticación integrada de Windows no está activada en las propiedades de IE. Se encuentra en "Opciones de Internet -> Opciones avanzadas -> Seguridad".
Las zonas de seguridad no están configuradas correctamente
Los FQDN no están en la zona de intranet
La dirección URL de AD FS no está en la zona de intranet.