2011-08-18 49 views
4

我正在編寫一個內部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的安全性資源)。用上面描述的方法,我可以完成兩全其美的事情,但對我的方法的安全性很好奇。除了使用表單身份驗證之外,還有其他方法可以在此實現以確保最大的安全性嗎?是否可以在不使用表單身份驗證的情況下完成相同級別的安全性?

非常感謝您提前提出任何見解!

+0

哇,過了幾年......我覺得這個問題很愚蠢。當然,我描述的是與Forms身份驗證#facepalm比較的廢話。我最終使用了帶有Kerberos的Forms Auth和自定義成員資格提供程序來完成工作。 – wakurth

回答

5

這是否提供與表單身份驗證相當的安全性?

沒有

的第一個規則,當涉及到安全性是不重新發明輪子,除非你絕對必須的。您提出的任何自制解決方案都具有潛在的像提供的Windows或Forms身份驗證一樣安全。問題在於本土解決方案很少達到這個潛力。他們可能會測試,但可以保留細微的錯誤。一年以後,你不希望發現自己在六個月前遭到黑客入侵。現有的解決方案已經過測試並用於數百萬的應用程序,而您的應用程序將用於一個應用程序並最多由少數人進行測試。

快速搜索表明可以在同一個應用程序中同時實現Windows和表單身份驗證,所以我會進一步追蹤它。

Mixing Forms and Windows Security in ASP.NET

+1

如您在安全漏洞中所建議的那樣,還在會話中存儲憑據。同意上面的說法,儘管聽起來你所需要的只是Windows認證。 – TheCodeKing

+0

感謝您的諮詢!唯一的問題是...混合兩者都非常惱人......也許我會再試一次,但這並不完全證明他們在那篇文章中寫道(我已閱讀並嘗試過)。問題也在於我正在使用第三方程序,我必須使用..來驗證用戶進入網站。該程序允許Windows身份驗證(需要模擬)或UN和PW。使用.Net 4.0框架和Windows身份驗證模擬,並允許用戶進入登錄屏幕,而無需輸入他們的域名信用也很古怪 – wakurth

+0

@ TheCodeKing ..我將creds作爲256位加密字符串存儲在web.config 。他們將不得不解密會話的名稱(這是硬編碼),並解密祕密進入...可能有一些漏洞,可以解決這個問題...無論如何,感謝大家的意見..我只需要找出一些其他方式來做到這一點,因爲混合auth的這個第三方應用程序,.net 4.0和模擬行爲不夠一致。 – wakurth