從 IIS 到 SQL Server 的 Kerberos 雙跳委派(使用 django)

從 IIS 到 SQL Server 的 Kerberos 雙跳委派(使用 django)

我需要將憑證(整合 Windows 驗證)從 IIS 上的 django 網站傳遞到後端 SQL 伺服器,以便它在正確的使用者上下文下運行。

到目前為止我的設定是這樣的

  1. sql_sever.domain.com在服務帳戶下執行 SQL Serverdomain\svc_sqlserver
  2. app_server.domain.com在具有 Windows 驗證和 ASP.Net 模擬的服務帳戶下使用 IIS執行 Django 網站domain\svc_appserver(提供者設定為Negotiate:Kerberos -> Negotiate -> NTLMuseAppPoolCredentials=True
  3. Trusted_Connection=yes透過在連線中設定使用Windows驗證從django連接到SQL伺服器
  4. 為 Kerberos 驗證配置 SPN,domain\svc_sqlserver如下domain\svc_appserver所示:

    setspn -a HTTP/app_server                          domain\svc_appserver
    setspn -a HTTP/app_server.domain.com               domain\svc_appserver
    setspn -a MSSQLSvc/sql_server.domain.com:PORT      domain\svc_sqlserver
    setspn -a MSSQLSvc/sql_server.domain.com:INSTANCE  domain\svc_sqlserver
    setspn -a MSSQLSvc/sql_server.domain.com           domain\svc_sqlserver
    
  5. 值得信賴svc_sqlserversvc_appserver對於委派MSSQLSvc服務,另外domain\svc_appserver我也添加了HTTP服務(從上面的清單中)

結果

  1. Kerberos 驗證適用於 SQL Server。透過查看確認連結用戶的認證方案
  2. Kerberos 驗證適用於 Django 網站。透過檢查WWW-Authenticate回應標頭和Authorization請求標頭確認(Negotiate正在正確使用)
  3. domain\svc_appserverSql server 僅在它應該運行的上下文中運行domain\remote_user

我已經為此工作了一個多星期,但在我的一生中,我無法弄清楚如何將經過驗證的使用者上下文從 IIS 傳遞到 SQL Server。我瀏覽了在網上找到的數百個鏈接,但我不知道此時該怎麼辦。

我還缺什麼嗎? Django 有什麼方法可以在建立與資料庫的連線之前設定使用者的上下文嗎?如果有人可以提供幫助,我將非常感激。謝謝!

我在用著

相關內容