簡體   English   中英

如何將 ASP.net 中的角色從匿名提升到 Windows 身份驗證?

[英]How to Elevate Role in ASP.net From anonymous to windows auth?

我有幾個網站同時允許匿名和窗口身份驗證用戶。 基本上,如果您在 Windows 系統上使用基於 IE 或 Webkit 的瀏覽器訪問該站點,服務器會立即識別您的活動目錄用戶和組。

在過去,我提供了一個鏈接到一個僅允許當前用戶登錄的 Windows 身份驗證頁面,或返回到他們開始的位置。

我發現這種管理令人沮喪,因為我需要在每次部署后確保 IIS 為該單個頁面具有正確的安全設置。

有沒有更好的方法可以讓用戶從匿名提升到經過身份驗證?

沒有其他方法可以自動進行該提升。 服務器無法知道當前用戶是 Windows 用戶並提升它們,或自動將它們重定向到 Windows auth only 頁面。 另一方面,如果每個用戶都通過 Windows auth only 頁面,所有不在域內的用戶都會看到質詢/響應對話框(用戶 + 密碼)。

至於確保此特殊頁面具有正確安全設置的管理部分,您可以(並且應該)以某種方式自動進行檢查。 例如,通過在應用程序啟動時(在 Global.asax 中)查詢該設置的IIS 元數據庫,如果該設置不存在,則將其記錄為電子郵件等。

我個人更喜歡不同的態度 - 一個特殊的“集成/部署”頁面,其中包含針對我的應用程序的一系列測試,因此我可以確保服務器上的一切設置正確,即對某些文件夾的 NTFS 寫入權限,SMTP 服務器的可用性在 web.config 中設置以通過等方式發送電子郵件。

注意:您正在使用 Windows 身份驗證和匿名訪問。 請記住,如果您考慮在將來實施 Forms Authentication,IIS 7 的架構錯誤(我不知道是設計使然還是由於缺陷)不允許您將應用程序設置為 Forms Authentication 並設置一個特定頁面是 Windows 身份驗證。 覆蓋只是不起作用,這非常令人沮喪。

祝你好運!

好的,我想出了一個相當不錯的方法來做到這一點……但是它並不像我希望的那么優雅,因為它不能跨應用程序工作。

基本上,如果你在你的 Anon + Integrated Auth IIS6 網站或虛擬目錄中創建一個頁面,我們稱之為 auth.aspx,那么你可以使用這個頁面來提示身份驗證。

進入 IIS 設置並指定 auth.aspx 是 Integrated Auth ONLY(無匿名)。 然后在頁面上的某處創建一個隱藏的 iframe。 然后我創建了一個簡單的 JavaScript 操作來將 iframe 的 src 屬性更新到 auth.aspx 頁面。 這會強制瀏覽器嘗試使用 NTLM 進行身份驗證。 輸入有效憑據后,您已成功將當前用戶提升到通用匿名用戶之外。

最后一步是將 Response.Redirect 包含到 auth.aspx 中,以重新加載當前頁面。 假設您的 ASP.net 會話令牌設置正確,頁面將重新加載並且用戶將通過身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM