Django 應用程式中的 IIS 和 SQL Server Windows 驗證

Django 應用程式中的 IIS 和 SQL Server Windows 驗證

我正在嘗試執行一個連接到 SQL Server 的 django 網站,使用 IIS 和 Windows 驗證。

IIS 伺服器和 SQL 伺服器位於同一網域下的不同電腦上,即iis_machine.example.comsql_machine.example.com

我想要實現的目標

  1. 模擬遠端使用者造訪 IIS 上託管的 django 網站,因此他的 Windows 憑證將傳遞到 SQL Server 進行驗證。

到目前為止我嘗試過的

  1. 將其新增至我的 web.config 檔案以進行模擬

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

  2. 啟用 Windows 驗證並設定應用程式集區 (django_web)對於django網站如下所示

    這就是我的 Django 網站身份驗證在 IIS 中的樣子

    這就是我的 django 網站應用程式池在 IIS 中的樣子

  3. 添加IIS APPPOOL\django_web到 SQL Server安全\登入

結果

  1. 當我造訪 django 網站時,IIS 提示使用者輸入 Windows 憑證,我可以成功登入
  2. 如果使用者登入後嘗試存取 SQL Server

    案例一。 IIS、SQL Server 位於不同的電腦上: SQL Server 驗證失敗並顯示“使用者「domain\MACHINENAME$」登入失敗'

    情況b。 IIS、SQL Server 位於同一台電腦上,SQL Server 驗證成功,但使用的驗證憑證是IIS APPPOOL\django_web不是網域\遠端用戶

我知道此設置涉及一些 Kerberos 欺騙。不幸的是,我只是個程式設計師,不太熟悉 Kerberos 的工作原理。如果有人在這個領域有經驗,可以闡明這個設定如何運作,那將非常感激。謝謝!

我在用:

  • IIS 10
  • SQL Server 2014
  • Django 2.0.7
  • Python 3.6.5
  • Windows 8/10

答案1

您必須將django_web帳戶設定為允許委派給 SQL Server。我想因為這IIS APPPOOL\django_web實際上是您需要在 Active Directory 中的電腦帳戶上配置它。或者,您可以為其建立自訂服務帳戶。

相關內容