Diagnóstico del mensaje de error:


 


Diagnóstico del mensaje de error:


 


Login failed for user (null)
ó
Login failed for user ‘NT AUTHORITY\ANONYMOUS LOGON’


Ó



Cannot generate SSPI Context


 


Por: Servando Canales


 


Estos errores son mas comunes en configuraciones de IIS (middle tier) conectandose a SQL Server y sólo ocurre cuando se utiliza TCP/IP y autenticación de kerberos (el problema no ocurre si se utiliza named pipes). Tambien entre SQL Servers cuando se utilizan linked servers.


 


Nomenclaturas:


AD – Active Directory o Directorio Activo.


SPN – Service Principal Name


FQDN – Fully Qualified Domain Name


ADUC – Active Directory Users and Computers


 


Herramientas:


Las herramientas que necesitamos para diagnosticar el problema son:


         Network Monitor (o cualquier otra herramienta para análisis de protocolos)


         SETSPN.exe


         Ldifde.exe


         kerbtray.exe


 


Datos Requeridos:


Cuenta del usuario (incluyendo dominio) que se esta conectando a IIS y/o SQL Server.


Nombre del servidor de IIS.


Credenciales utilizadas en el Application Pool de IIS.


Nombre del servidor de SQL Server.


Nombre de la instancia de SQL Server con problemas.


Cuenta de servicios (con dominio) que se esta utilizando para levantar el servicio de SQL Server.


 


Pre-requisitos:


1.      DNS debe estar configurado correctamente (maquinas deben poder ser encontradas por FQDN)


2.      El tiempo entre las maquinas debe estar sincronizado.


3.      AD


4.      Mismo dominio y/o relación de confianza entre dominios (si existen varios dominios involucrados)


 


Procedimiento:


1.     Revisar en segmentos (comunicación y autenticación entre):


a.      Cliente y el IIS (middle tier)


b.      IIS y SQL Server


c.      Cliente y el IIS y SQL Server (delegación)


 


 


2. Cuenta del cliente :


    Ver las propiedades de la cuenta del usuario en ADUC y verificar que la opción: ”Account is sensitive and cannot be delegated” NO este seleccionada.


 


3. SPNs:


En IIS (middle tier):


Esta es la configuración o acción que se debería tener dependiendo de la cuenta que se configure en el Application Pool de IIS que se este utilizando.


  





























AppPool Identity


Acceso via


Acción Requerida


SPN


NetworkService or LocalSystem


AD FQDN or Netbios Name


No


Object server:


HOST/FQDN


HOST/Netbiosname


NetworkService or LocalSystem


DNS Alias


SETSPN -A HTTP/DNSAlias  Netbiosname


Object server:


HOST/FQDN


HOST/Netbiosname


HTTP/DNSALias


Usuario del Dominio


AD FQDN or Netbios Name


SETSPN -A HTTP/FQDN  Dominio\Usuario


SETSPN -A HTTP/Netbios  Dominio\Usuario


 


 


Object server:


HOST/FQDN


HOST/Netbiosname


Object User:


HTTP/FQDN


HTTP/Netbiosname


Usuario del Dominio


DNS Alias


SETSPN -A HTTP/DNSAlias Domain\User


 


 


Object server:


HOST/FQDN


HOST/Netbiosname


Object User:


HTTP/DNSAlias


 


Nota:


Si un CNAME en DNS es creado el cual esta ‘mappeado’ al FQDN del server de IIS, entonces no se necesita crear un SPN adicional.


 


En SQL Server:


Revisar el SPN de la cuenta de servicios con la cual SQL Server levanta esté correctamente registrado en AD. ( Si utiliza LocalSystem el SPN no es necesario para la máquina, pero es mejor verificarlo porque algunas veces el(los) SPN(s) fue(ron) incorrectamente agregado(s) por algun administrador o aplicación que asi lo requiera.)


Para esto podemos utilizar


    SETSPN –L Dominio\CuentaDeServicio


    SETSPN –L NombreDelServer


Inclusive algunas veces el SPN se encuentra duplicado en AD, por lo cual es mejor utilizar ldifde.exe y obtener todos los SPNs del dominio,

ldifde -f c:\SPNs.txt -t 3268 -d DC=forest,DC=root,DC=com -l serviceprincipalname -r (serviceprincipalname=*) -p subtree

buscar el duplicado en el archivo SPNs.txt y despues utilizar SETSPN –D para borrar el duplicado.


 


Esto tambien se puede ver en el log de eventos (event viewer):


Event Type:Error


Event Source:KDC
Event ID:11
Description: There are multiple accounts with name service/SERVERNAME.domain.com of type10


 


5.      Delegación


 


  












AppPool Identity / Cuenta de Servicio


Acceso via


Acción Requerida


NetworkService,  LocalSystem


AD FQDN or Netbios Name


En ADUC


Verificar que la maquina tenga marcado Trust Computer for Delegation” (Win2k)


O


Trust this computer for delegation to any service” (Win2k3)


 


6.     Políticas de Seguridad


Domain/Local security policy deben tener:


– Act as part of the operating system


– Impersonate a client after authentication


(solo para la cuenta de servicios que estemos utilizando, Local System y/o Network Service ya esta aplicada la politica).


 


 


 


 


La clave aquí es entender e implementar la autenticación de doble salto correctamente (kerberos double-hop authentication). Enseguida estٕán algunas referencias con algunos otros escenarios con los cuales puede ocurrir el mismo problema.


 


Referencias:


 


887682  TechNet Support WebCast: How to understand, implement, and troubleshoot Kerberos double-hop authentication


 


842861  TechNet Support WebCast: Troubleshooting Kerberos authentication with secure Web applications and Microsoft SQL Server


 


319723   How to use Kerberos authentication in SQL Server


 


326985   HOW TO: Troubleshoot Kerberos-Related Issues in IIS


 


266080   Answers to frequently asked Kerberos questions


 


907272   Kerberos authentication and troubleshooting delegation issues


 


176380   How To Use ASP with a SQL Trusted Connection with Guest Account


 


810572   How to configure an ASP.NET application for a delegation scenario


 


Kerberos authentication for load balanced web sites white paper


 


811889   How to troubleshoot the “Cannot generate SSPI context” error message


 

Comments (3)

  1. Glafkos says:

    Nice!