Delegación Kerberos de doble salto desde IIS al servidor SQL (usando Django)

Delegación Kerberos de doble salto desde IIS al servidor SQL (usando Django)

Necesito pasar las credenciales (Autenticación integrada de Windows) de un sitio web de Django en IIS a un servidor SQL backend para que se ejecute en el contexto de usuario adecuado.

Así es como se ve mi configuración hasta ahora.:

  1. Ejecutar SQL Server con sql_sever.domain.comuna cuenta de serviciodomain\svc_sqlserver
  2. Ejecutar el sitio web de Django app_server.domain.comusando IIS con una cuenta de servicio domain\svc_appservercon autenticación de Windows y suplantación de ASP.Net (Proveedores configurados en Negotiate:Kerberos -> Negotiate -> NTLM) conuseAppPoolCredentials=True
  3. Conexión al servidor SQL desde Django usando la autenticación de Windows configurando Trusted_Connection=yesla conexión
  4. SPN configurados para la autenticación Kerberos de domain\svc_sqlserverla domain\svc_appserversiguiente manera:

    setspn -a HTTP/app_server                          domain\svc_appserver
    setspn -a HTTP/app_server.domain.com               domain\svc_appserver
    setspn -a MSSQLSvc/sql_server.domain.com:PORT      domain\svc_sqlserver
    setspn -a MSSQLSvc/sql_server.domain.com:INSTANCE  domain\svc_sqlserver
    setspn -a MSSQLSvc/sql_server.domain.com           domain\svc_sqlserver
    
  5. Confiable tanto svc_sqlserverpara svc_appserverdelegar MSSQLSvcservicios como para domain\svc_appserveragregar HTTPservicios (de la lista anterior)

Resultado:

  1. La autenticación Kerberos funciona en SQL Server. Confirmado mirandoesquema de autenticación de usuarios conectados
  2. La autenticación Kerberos funciona en el sitio web de Django. Confirmado inspeccionando WWW-Authenticateel encabezado de respuesta y Authorizationel encabezado de solicitud ( Negotiatese está utilizando correctamente)
  3. El servidor SQL se ejecuta solo en el contexto de domain\svc_appservercuándo debería ejecutarsedomain\remote_user

He estado trabajando en esto durante más de una semana, pero por mi vida, no puedo entender cómo pasar el contexto del usuario autenticado de IIS a SQL Server. Revisé cientos de enlaces que encontré en línea y no estoy seguro de qué hacer en este momento.

¿Hay algo más que me falta? ¿Hay alguna forma en Django de establecer el contexto del usuario antes de establecer la conexión a la base de datos? Si alguien puede ayudar, se lo agradecería mucho. ¡Gracias!

Estoy usando:

información relacionada