
我正在嘗試執行一個連接到 SQL Server 的 django 網站,使用 IIS 和 Windows 驗證。
IIS 伺服器和 SQL 伺服器位於同一網域下的不同電腦上,即iis_machine.example.com和sql_machine.example.com
我想要實現的目標:
- 模擬遠端使用者造訪 IIS 上託管的 django 網站,因此他的 Windows 憑證將傳遞到 SQL Server 進行驗證。
到目前為止我嘗試過的:
將其新增至我的 web.config 檔案以進行模擬
<system.web> <identity impersonate="true" /> </system.web>
啟用 Windows 驗證並設定應用程式集區 (django_web)對於django網站如下所示
添加IIS APPPOOL\django_web到 SQL Server安全\登入
結果:
- 當我造訪 django 網站時,IIS 提示使用者輸入 Windows 憑證,我可以成功登入
如果使用者登入後嘗試存取 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 中的電腦帳戶上配置它。或者,您可以為其建立自訂服務帳戶。