
Estoy intentando ejecutar un sitio web de Django que se conecta a un servidor SQL, usando IIS con autenticación de Windows.
El servidor IIS y el servidor SQL están en diferentes máquinas bajo el mismo dominio, es decir,iis_machine.ejemplo.comysql_machine.ejemplo.com
Lo que estoy tratando de lograr:
- Suplantar al usuario remoto que accede al sitio web de Django alojado en IIS, de modo que sus credenciales de Windows se pasen a SQL Server para su autenticación.
Lo que intenté hasta ahora:
Agregué esto a mi archivo web.config para suplantación
<system.web> <identity impersonate="true" /> </system.web>
Habilitó la autenticación de Windows y configuró el grupo de aplicaciones (django_web) para el sitio web de Django como se muestra a continuación
Así es como se ve mi sitio web de Autenticación para Django en IIS
Así es como se ve mi sitio web de grupo de aplicaciones para Django en IIS
AgregadoGrupo de aplicaciones IIS\django_webal servidor SQLSeguridad\Inicios de sesión
Resultado:
- Cuando accedo al sitio web de Django, IIS solicita al usuario sus credenciales de Windows y puedo iniciar sesión correctamente.
Si el usuario intenta acceder a SQL Server después de iniciar sesión
Caso a. IIS y SQL Server están en diferentes máquinas: la autenticación del servidor SQL falla con "Error de inicio de sesión para el usuario 'dominio\MACHINENAME$'
Caso b. IIS y SQL Server están en la misma máquina, la autenticación del servidor SQL es exitosa pero las credenciales de autenticación utilizadas sonGrupo de aplicaciones IIS\django_webnodominio\usuario_remoto
Entiendo que hay algunos trucos de Kerberos involucrados con esta configuración. Desafortunadamente, sólo soy programador y no estoy muy familiarizado con el funcionamiento de Kerberos. Si alguien con experiencia en este dominio pudiera arrojar algo de luz sobre cómo funcionaría esta configuración, sería muy apreciado. ¡Gracias!
Estoy usando:
- IIS 10
- Servidor SQL 2014
- Django 2.0.7
- Pitón 3.6.5
- Ventanas 8/10
Respuesta1
Debe configurar la django_web
cuenta para poder delegar en el servidor SQL. Supongo que, dado que es así, IIS APPPOOL\django_web
es necesario configurarlo en la cuenta de la máquina en Active Directory. Alternativamente, puede crear una cuenta de servicio personalizada para ello.