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.:
- Ejecutar SQL Server con
sql_sever.domain.com
una cuenta de serviciodomain\svc_sqlserver
- Ejecutar el sitio web de Django
app_server.domain.com
usando IIS con una cuenta de serviciodomain\svc_appserver
con autenticación de Windows y suplantación de ASP.Net (Proveedores configurados enNegotiate:Kerberos -> Negotiate -> NTLM
) conuseAppPoolCredentials=True
- Conexión al servidor SQL desde Django usando la autenticación de Windows configurando
Trusted_Connection=yes
la conexión SPN configurados para la autenticación Kerberos de
domain\svc_sqlserver
ladomain\svc_appserver
siguiente 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
Confiable tanto
svc_sqlserver
parasvc_appserver
delegarMSSQLSvc
servicios como paradomain\svc_appserver
agregarHTTP
servicios (de la lista anterior)
Resultado:
- La autenticación Kerberos funciona en SQL Server. Confirmado mirandoesquema de autenticación de usuarios conectados
- La autenticación Kerberos funciona en el sitio web de Django. Confirmado inspeccionando
WWW-Authenticate
el encabezado de respuesta yAuthorization
el encabezado de solicitud (Negotiate
se está utilizando correctamente) - El servidor SQL se ejecuta solo en el contexto de
domain\svc_appserver
cuá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:
- Django 2.0.7
- django-pyodbc-azul
- Pitón 3.6.5
- IIS 10, servidor SQL 2014