1.Asp.net是依存於IIS的一個服務,說到Asp.net的安全相關的話題當然要有一個整體上的思路:IIS接收—》IIS驗證—》IIS授權---》ASP.net驗證---》Asp.net授權---》資源返回給用戶
IIS從網絡上接收到一個HTTP WEB請求可以使用SSL技術來保證服務器的身份,此外SSL也可以提供一個安全通道來保護客戶端和服務器端的機密數據的傳送。IIS使用基本 摘要式 或者其它的方式驗證用戶,如果網站中的大部分內容不需要驗證就可以設定為匿名驗證。驗證之後是授權,通過授權IIS來允許或者禁止用戶訪問某資源。IIS可以使用ACL定義的NTFS權限或者針對IP地址的客戶端授權。
IIS把Windows存取令牌傳送到Asp.net,如果IIS使用的是匿名驗證則為匿名Internet使用者的存取令牌(IUSER_MYMACHINE)。 ASP.net驗證訪問者(有三種方式)。Asp.net授權所需要的資源或者操作(有兩種授權方法)。
Asp.net中程序的代碼使用特別的身份來存取本機或者遠程資源。
2.身份驗證:身份驗證就是一個解決誰有權力進入系統的問題,通常的做法就是跟系統維護的用戶名單進行核對,這樣轉化為一個實際的技術問題:如果有效的判斷一個用戶是不是系統的有效用戶。這個過程就是—Authentication(身份驗證)
專業說法:接收用戶憑據,並根據指定的頒發機構來驗證憑據的過程成為身份驗證
3.Asp.net 提供三種身份驗證方式:Windows驗證 、Forms驗證 、Passport驗證
身份驗證的使用是通過配置Web.config文件的< Authentication >配置節來實現的。
4.授權:授權就是確認用戶擁有足夠的權限來訪問請求的資源
5.Asp.net提供兩類授權服務:文件授權服務 、URL授權服務
說點細節
1.< Authentication >配置節mode可用的參數:None Windows Forms Passport
2.Windows:IIS根據程序的設置執行身份的驗證(基本 簡要 或者集成Windows)
注意使用這種驗證方式IIS中必須要禁用匿名訪問。
3.Windows驗證適用於受控環境中,比如企業的Intranet
4.Foms這種驗證使用Cookie保存用戶憑證,並將未將驗證的用戶重定向到登錄頁。通常這是的IIS配置為匿名訪問
5.Forms適合部署於互聯網的網站應用
6.Passport驗證是通過微軟的集中身份驗證服務執行的,它為成員站點提供單點登錄和配置文件服務7.Passport適用於跨站點應用,一旦用戶注銷所有的護照信息就會清除,可以在公共場所使用它。
8.ACL面向的是文件,IIS提供通過驗證的用戶,通過比較ACL調用標記完成授權
9.URL授權檢查的根據是URL本身而不是URL對應的文件,URL授權可以是應用程序像基於窗體的身份驗證或者Passport的身份集成驗證,因為這些驗證中的用戶和計算機或者域中的賬戶並不對應。還控制對虛擬資源的訪問。
10.URL授權的配置:授權指令:allow deny 對應操作對象是roles users 還可以使用Verb屬性區別不同的HTTP行為(POST /GET)
11.通常情況下用戶訪問一個網站都是使用匿名訪問,匿名訪問的用戶都會轉化為操作系統上的一個帳號來訪問服務器
<authentication mode=”windows”>
<identity impersonate=”true”>
12.Windows驗證用戶通過了驗證之後,Asp.net會觸發Global.asax文件中的WindowsAuthentication_OnAuthenticate事件,可以在這裡添加代碼把用戶信息附加到請求上。
13.Passport驗證的問題是有多少網站願意把自己的用戶數據放在微軟的數據庫中?
14.Asp.net使用基於角色的安全:把用戶映射到一個角色組裡面,這個角色組對應一定的權限,這樣就實現了對一個群體的權限管理。所以角色應該是對一組具有相同權限用戶的抽象。
上面所說的都是可以應用於實踐的,問題集中在web.config的配置,和一些初始化操作,大家和容易找到相關內容,我還是提供一個綱要,呵呵;夜深了,睡了,晚安!