IIS- und SQL Server-Windows-Authentifizierung in einer Django-Anwendung

IIS- und SQL Server-Windows-Authentifizierung in einer Django-Anwendung

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:

  1. 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:

  1. Dies wurde meiner web.config-Datei zur Identitätsübernahme hinzugefügt

    <system.web> <identity impersonate="true" /> </system.web>

  2. 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

  3. HinzugefügtIIS APPPOOL\django_webzu SQL ServerSicherheit\Anmeldungen

Ergebnis:

  1. Wenn ich auf die Django-Website zugreife, fordert IIS den Benutzer zur Eingabe seiner Windows-Anmeldeinformationen auf und ich kann mich erfolgreich anmelden
  2. 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_webKonto so konfigurieren, dass es an den SQL-Server delegieren darf. Ich vermute, da dies der Fall ist, IIS APPPOOL\django_webmüssen Sie es tatsächlich auf dem Computerkonto in Active Directory konfigurieren. Alternativ können Sie stattdessen ein benutzerdefiniertes Dienstkonto dafür erstellen.

verwandte Informationen