ASP.NET的安全模式
簡介:根據所請求資源的類型,IIS能夠自己處理請求,也可以不自己處理請求,如果資源請求一個ASP頁面,則IIS將請求經過身份驗證用戶(或匿名用戶)的安全令牌一起傳遞給ASP.NET,接下來發生的事情就取決於ASP.NET的配置。
ASP.NET支持的4種授權方法:
Windows:IIS驗證。在內聯網環境中非常有用。
Passport:微軟集中式身份驗證,一次登錄便可訪問所有成員站點,需要收費。
Form:窗體驗證,驗證帳號/密碼,Web編程最佳流行的驗證方式。
None:表示ASP.NET自己根本不執行身份驗證,完全依賴IIS身份驗證。
一、認證和授權機制
認證是確認用戶身份的過程,在用戶通過了身份驗證後,開發人員就可以確定該用戶是否有權繼續操作。如果沒有進行身份驗證,就不能進行實體授權。
授權是確定已驗證的用戶是否有權訪問應用程序中的某個部分、某個點或只訪問應用程序提供的特定數據集。
二、基於窗體的身份授權模式
允許用戶訪問整個應用程序或其他特定資源的一種流行的模式。
IIS接受請求,但不進行處理,而傳遞給ASP.NET應用程序。
ASP.NET身份驗證模式設置爲Forms,下面圖列出<forms>元素的屬性
forms驗證事例:
其實我們還可以將用戶名和密碼保存在Web.config文件中,用來檢查用戶名和密碼是否授權用戶。Web.config文件的<forms>子元素還可以有子元素。子元素<credentials>允許直接在Web.config中指定用戶名和密碼組合。
<credentials>元素在配置文件中添加了用戶及其密碼。<credentials>有一個屬性passwordFormat,其值可以是Clear、MD5和SHAI。
Clear:密碼存儲爲明文。用戶的密碼直接與這個值比較,不需要進一步轉換。
MD5:密碼使用散列摘要進行存儲。在驗證證書時,用戶密碼使用MD5算法進行散列,在與這個值進行相等比較。不會存儲或比較明文密碼。這個算法比SHAI的性能好。
SHAI:密碼使用SHAI散列摘要來存儲。在驗證證書時,用戶密碼使用SHAI算法進行散列,再與這個值進行相等比較。不會存儲或比較明文密碼。這個算法的全能性最高。
<authorization>配置節用來對用戶進行授權,在實現用戶授權過程中,應該遵循以下兩個應用規則:
1.位於較低目錄級別的配置文件中包含的規則,優先於位於較高目錄級別的規則。
2.對於給定URL的一組合並的規則,系統從列表頭開始,檢查規則直到找到第一個匹配項爲止
<authorization>配置
deny阻止訪問用戶;allow允許訪問用戶
?代表匿名用戶,*代表任意用戶
多個用戶之間用“,”隔開
使用<location>配置節,可以指定特定的文件或目錄具有特別的訪問權限。