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 使用基于角色的安全:把用戶映射到一個角色組里面,這個角色組對應一定的權限,這樣就實現了對一個群體的權限管理。所以角色應該是對一組具有相同權限用戶的抽象。