我有以下場景,我正在計劃使用Windows身份驗證。關於Windows模擬的建議,但更改爲其他用戶
1.1)我有一個web服務器,它將在域中運行。
1.2)該網站將在具有一組配置的權限(允許訪問文件系統,SQL服務器數據庫等)的域用戶的憑據下運行。
1.3)訪問該網站的用戶將屬於同一個域,所以我打算使用Windows身份驗證。
所以在這一點上,一個經過身份驗證的用戶,將訪問該網站,但我想從代碼中,「CurrentUser」將是該網站正在運行的網站。
我想要以下內容。
2.1)使用Windows身份驗證來驗證訪問該站點的用戶。 (域控制器將負責這個)。
2.2)讓站點在步驟1.2中配置的用戶下運行。所以它將擁有它的所有權限。
2.3)但我想知道初始用戶用來驗證(步驟2.1)。
這樣我可以做到以下幾點:
3.1)用戶「A」決定訪問該網站,因爲他是屬於同一個域作爲Web服務器,他成功地驗證。
3.2)從代碼中我發現「A」已通過驗證,所以我會去取他的角色。 「角色1,角色2,角色3」。
3.3)然後,我希望代碼在步驟1.2中配置的用戶下運行,但是我將爲委託人分配從3.2檢索到的所有角色。
我以爲也許我可以使用模擬爲此。
4.1)所以用戶「A」決定訪問該網站並進行身份驗證。
4.2)該網站最初將以「A」憑證運行,因此「CurrentUser」將爲「A」。
4.3)將用戶(以某種方式)切換回1.2
4.4)我可以檢索4.1配置的所有角色。
4.5)爲當前主體分配從4.4中檢索到的角色。
因此,最終網站將使用Windows身份驗證與模擬,但從代碼我會切換回用戶1.2。
如果你已經達到了這一點,謝謝閱讀!我想知道這是否可行,是否可以實現,或者我是否過於複雜。
此外我還建議如何插入以及在何處執行所有角色檢索和用戶切換。
非常感謝!
更新1
@代碼Jammr,你是對的,沒有必要做任何瘋狂的事情。但我認爲我仍然需要看看HttpModules,..
經過一些測試,搜索等...
我已經開始瞭解這些IIdentity的對象之間的差異:
HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
的WindowsIdentity I2 = WindowsIdentity.GetCurrent();
我張貼另一個問題,幫助我理解他們: Help understanding impersonation
我覺得這回答我的問題。