2009-09-11 156 views
2

ASP.NET網站實施的安全身份驗證和授權不是基於Windows AD並將帳戶信息存儲在數據庫中的最佳做法,這通常被接受爲什麼?是否使用內置的Forms Authentication,庫存或自定義滾動的MembershipProvider,企業庫安全塊?ASP.NET安全身份驗證和授權的最佳實踐

他們之間是否有任何優點和缺點,如替換表單身份驗證使得難以或不可能使用非ASP.NET文件限制的文件保護目錄?

+0

1K意見,0上一頁awwwrrriggghttt – 2012-10-17 15:54:12

回答

4

這是一個很大的話題,所以我會列出一些一般的觀點。

表單身份驗證爲您提供了一個獨立於會話cookie的身份驗證cookie,該cookie可以防止篡改並且可以加密。它的提供者模型意味着這種保護仍然即使你滾你自己的會員提供者和這些供應商可用於保護WCF Web服務,並允許驗證和授權使用Silverlight

窗體身份驗證還創建的IIdentity/IPrincipal對象上存在正在執行的線程,這意味着您可以使用CAS PrincipalPermission來保護可以從ASP.NET應用程序中分離出來的方法,類甚至程序集,從而使授權成爲應該交叉關注的問題。

表單認證也被IIS7的文件保護機制所使用,因此可以與IIS7一起使用來保護任何類型的文件,而不僅僅是那些與ASP.NET ISAPI DLL相關聯的文件(您可以在IIS6中執行通配符映射,並將所有內容通過ASP.NET管道,但這對可擴展性有影響)

表單驗證不允許模擬。

滾動你自己刪除所有這一切。您可以開始使用HTTP模塊重新構建它,它將執行您自己的Cookie加載和驗證,在線程上創建主體並檢查對資源的訪問。你仍然需要編寫數據庫位,如果你需要它們,控制你自己的類,並將它們放入。

你需要把它弄清楚。

有很多專業人士的標準方法來做到這一點,它已被敲打,測試和使用,並被很多人濫用,最大的轉動你自己的是你可能並不聰明你以爲你是 - 我知道我不會這樣做。

+1

這個問題剛剛達到1K的意見,所以它多年來第一次把我的注意力帶回到它。我最終只是在Forms Auth的基礎上構建而成,將嬰兒拋出洗澡水是非常合適的。但我不得不說,Forms Auth是殘酷無情的。我的認證模塊必須做太多的黑客來攔截Forms Auth的決定,它的設計基本上都是零擴展點。 – 2012-10-17 13:23:32

0

使用表單身份驗證(通過股票MembershipProvider或自定義MembershipProvider)通常被視爲標準。