我正在編寫一個內部Web應用程序(使用ASP.Net Web窗體),它提出了一個奇怪的問題。我必須能夠模擬當前登錄的Windows用戶,並根據他們的Windows身份驗證執行命令以登錄。如果他們沒有在我必須使用的應用程序中設置Windows身份驗證登錄他們,我必須能夠接受用戶名和密碼。我還必須在.Net 4.0中編寫應用程序,並儘可能保護它。我通過在Web.config中不使用Windows身份驗證或表單身份驗證來設置會話變量,以防止用戶訪問其他日誌中的網頁應用程序中的頁面。我通過創建一個奇怪的名稱會話變量根據他們的用戶名(windows auth或不),然後是祕密會話變量。祕密變量在web.config中是一個256位加密字符串,我在其中解密並設置爲會話密鑰。爲了加載頁面,第一個會話變量不能爲空,而第二個變量必須等於解密的鍵值......如果變量未通過檢查,它會將它們重定向到登錄頁面。我在Web應用程序的每個頁面,通用處理程序和web服務方法中都設置了它。我在沒有任何活動的幾分鐘後讓會話超時,並且在註銷時,我將所有會話變量設置爲空,並且過期所有cookie。 (我也禁用所有緩存)。表單身份驗證是完全必要的嗎?
我的問題是......這是否提供與表單身份驗證相當的安全性?我一直使用Forms身份驗證,但無法在此處使用它。如果我這樣做了,用戶將不得不重新配置IIS和web.config中的設置以切換登錄過程(根據我的知識,不能同時使用表單身份驗證和Windows身份驗證來管理頁面和其他Web的安全性資源)。用上面描述的方法,我可以完成兩全其美的事情,但對我的方法的安全性很好奇。除了使用表單身份驗證之外,還有其他方法可以在此實現以確保最大的安全性嗎?是否可以在不使用表單身份驗證的情況下完成相同級別的安全性?
非常感謝您提前提出任何見解!
哇,過了幾年......我覺得這個問題很愚蠢。當然,我描述的是與Forms身份驗證#facepalm比較的廢話。我最終使用了帶有Kerberos的Forms Auth和自定義成員資格提供程序來完成工作。 – wakurth