
Ich versuche, eine Django-Website auszuführen, die mithilfe von IIS mit Windows-Authentifizierung eine Verbindung zu einem SQL-Server herstellt.
IIS-Server und SQL-Server befinden sich auf verschiedenen Rechnern in derselben Domäne, d. h.iis_machine.example.comUndsql_machine.example.com
Was ich erreichen möchte:
- Imitieren Sie den Remotebenutzer, der auf die auf IIS gehostete Django-Website zugreift, sodass seine Windows-Anmeldeinformationen zur Authentifizierung an den SQL Server übergeben werden.
Was ich bisher versucht habe:
Dies wurde meiner web.config-Datei zur Identitätsübernahme hinzugefügt
<system.web> <identity impersonate="true" /> </system.web>
Windows-Authentifizierung aktiviert und Anwendungspool eingerichtet (django_web) für die Django-Website wie unten gezeigt
So sieht meine Authentifizierung für die Django-Website in IIS aus
So sieht mein Anwendungspool für die Django-Website in IIS aus
HinzugefügtIIS APPPOOL\django_webzu SQL ServerSicherheit\Anmeldungen
Ergebnis:
- Wenn ich auf die Django-Website zugreife, fordert IIS den Benutzer zur Eingabe seiner Windows-Anmeldeinformationen auf und ich kann mich erfolgreich anmelden
Wenn der Benutzer nach der Anmeldung versucht, auf SQL Server zuzugreifen
Fall A. IIS, SQL Server sind auf den verschiedenen Maschinen: SQL Server-Authentifizierung schlägt fehl mit "Anmeldung für Benutzer 'domain\MACHINENAME$' fehlgeschlagen'
Fall b. IIS und SQL Server befinden sich auf derselben Maschine. Die SQL Server-Authentifizierung ist erfolgreich, aber die verwendeten Authentifizierungsdaten sindIIS APPPOOL\django_webnichtDomäne\Remote-Benutzer
Mir ist klar, dass bei dieser Konfiguration einige Kerberos-Tricks im Spiel sind. Leider bin ich nur Programmierer und nicht sehr vertraut damit, wie Kerberos funktioniert. Wenn jemand mit Erfahrung auf diesem Gebiet Licht in die Funktionsweise dieser Konfiguration bringen könnte, wäre ich sehr dankbar. Danke!
Ich benutze:
- IIS 10
- SQL Server 2014
- Django 2.0.7
- Python 3.6.5
- Windows 8/10
Antwort1
Sie müssen das django_web
Konto so konfigurieren, dass es an den SQL-Server delegieren darf. Ich vermute, da dies der Fall ist, IIS APPPOOL\django_web
müssen Sie es tatsächlich auf dem Computerkonto in Active Directory konfigurieren. Alternativ können Sie stattdessen ein benutzerdefiniertes Dienstkonto dafür erstellen.