[英]Kerberos Double Hop Delegation from IIS to SQL server (using django)
我需要將憑據(集成Windows身份驗證)從IIS上的django網站傳遞到后端SQL服務器,以便它在適當的用戶上下文中運行。
這是我的設置到目前為止的樣子 :
domain\\svc_sqlserver
下的sql_sever.domain.com
上運行SQL Server app_server.domain.com
使用IIS在服務帳戶domain\\svc_appserver
下運行Django網站,使用Windows身份驗證和ASP.Net模擬(提供者設置為Negotiate:Kerberos -> Negotiate -> NTLM
),使用useAppPoolCredentials=True
Trusted_Connection=yes
,使用Windows身份驗證從django連接到SQL Server 為domain\\svc_sqlserver
和domain\\svc_appserver
配置了用於Kerberos身份驗證的SPN,如下所示:
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
信任svc_sqlserver
和svc_appserver
以便委托給MSSQLSvc
服務,另外對於domain\\svc_appserver
我也添加了HTTP
服務(來自上面的列表)
結果 :
WWW-Authenticate
響應頭和Authorization
請求頭(正確使用Negotiate
)確認 domain\\svc_appserver
時,應在運行domain\\remote_user
我已經在這方面工作了一個多星期但是對於我的生活,我無法弄清楚如何將經過身份驗證的用戶的上下文從IIS傳遞到SQL Server。 我瀏覽了數百個在線發現的鏈接,我不知道此時該怎么做。
還有什么我想念的嗎? 在建立與數據庫的連接之前,Django有沒有辦法設置用戶的上下文? 如果有人可以提供幫助,我真的很感激。 謝謝!
我正在使用 :
我不認為在FastCGI或Kestrel工作進程中運行的任何東西都實現了模擬。 請參閱例如ASP.NET核心:
如果您使用HTTP Basic身份驗證,這需要用戶分叉密碼,您可以使用Win32執行登錄並自行進行模擬。 但對於NTLM和Kerberos,沒有簡單的方法可以在python進程中模擬調用用戶。
或者,如果這是一個自定義應用程序,您可以使用SQL模擬 ,或將最終用戶的標識傳遞給SESSION_CONTEXT ,服務器端代碼可以在SESSION_CONTEXT中看到它。 也有可能增強django-pyodbc-azure來做到這一點。
我能想到的另一件事是通過實現一個模仿用戶並管理在最終用戶身份下運行的 python 進程的ASP.NET HttpHandler來推送自己的Django主機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.