解讀ASP.NET安全架構_.Net教程
推薦:如何使用ASP.NET Image Generation生成圖片縮略圖及水印ASP.NET Image Generation內置了ImageResizeTransform類,可以實現圖片大小調整功能。也可以擴展ImageTransform實現自己的圖片變換類。 下面使用ASP.NET Image Generation生成圖片縮略圖及水印的代碼。 數據庫 以下為引用的內容: CREATE
開發Web程序中,我們可以選擇用自己的方法來實現安全的策略,或者可以購買第三方的安全代碼和產品,不管怎么樣,都是要很大的花費的,幸好在.NET Framework中已經內置了安全的解決方案。
ASP.NET和 .NET Framework 聯合IIS為Web應用程序安全提供了一個基礎結構。它的一個很明顯的優勢在于我們不必再編寫自己的安全架構,我們可以利用.NET安全架構的內置的特性,而且整個安全的架構是經過測試和時間的考驗了的。
.NET安全架構包含了很多的類,這些類用來處理身份驗證,授權,基于角色的授權,假冒(Impersonation),代碼訪問安全,還包含了一個用于構建自定義解決方案的基本架構。
本篇我們主要談論下面的一些話題:
ASP.NET安全架構的主要功能
身份驗證和授權
安全上下文中的標識和主體
身份驗證模塊的運行
授權模塊的運行
下面就開始:
一 ASP.NET實現安全的過程
ASP.NET 安全架構分為幾個關鍵的安全過程:身份驗證,授權,假冒,加密提供提供了必需的功能。具體看看一些解釋:
身份驗證--指明是誰再訪問我們的站點
授權----誰可以對哪些資源操作和訪問?訪問站點的用戶是否被授權使用他所請求的資源?
假冒----準備假冒什么角色?(注:假冒不是貶義詞,不是我們常說的假冒商品的假冒,因為不同的用戶角色有不同的權限,如果 我們當前的用戶無法訪問某一特定的資源,我們就可以讓想訪問特定資源的用戶假冒,更確切的說是模仿有權限訪問特定資源的用戶,簡言之:用戶A想訪問C資源,但是沒有權限,但是用戶B可以訪問,所以A和B商量,A就用B的身份訪問。具體的以后講解)
下面我們具體看看每個安全的過程:
1.身份驗證
身份驗證是揭示用戶標識(注:標識的概念我們后面馬上就講的,簡言之,用戶的ID 和 名稱)并判斷標識真實性的過程。很好理解,舉個例子(大家注意例子中的一些術語):我們要取參加一個會議,我們就會取登記提供我們的一些證件即標識(表明我們的身份),一旦標識被確認,我們就會得到會議通行證,我們就可以帶著通行證參加會議。而且會議中的每個人都可以通過我們的通行證了解我們的一些信息,如我們的名字,公司。身份驗證就是:一旦標識被確定,我們就會得到一個可以識別我們的令牌,所以,再一個特定的區域內,不管我們在哪里,我們的標識都可以被識別。
在ASP.NET中,有4中身份驗證的模式:
Widows身份驗證(Windows Authentication)
Forms身份驗證(Form Authentication)
Passpot身份驗證(Passport Authentication)
自定義身份驗證
對于每一種身份驗證,用戶都需要在登錄的時候提供憑證,一旦標識被核實,用戶就會獲得一個身份驗證令牌,在Forms驗證中,整個令牌就是FormsAuthenticationTicket,整個令牌就放在 cookie中,每次請求資源的時候,令牌就會提供用戶的標識信息。
2.授權
我們接著拿之前的那個會議的例子來看,授權就是表明我們可以做什么。進入會議廳以后,發現有很多不同的會議,專家級的,普通級的,不同人參加不同級別的會議。而且有些人可以參觀整個會議廳,但是有些人只能在展覽廳參觀。這就是權限的不同而導致的。
所以,授權就是:以我們的標識信息為參考,批準或者拒絕訪問我們請求的資源。還有一點要注意的是:我們一般是常用的是基于角色的授權,就是把用戶分為一組一組,然后給每組不同的角色。
假冒
假冒是在其他用戶標識的上下文中執行代碼的過程。在默認情況下,所有的ASP.NET代碼都是在Domain/ASPNET用戶賬戶下執行的,要利用其他的標識執行代碼,假冒其他的標識,我們應該利用.NET安全架構中的內置的假冒的功能。它允許我們指定執行代碼的用戶賬戶,比如不同于Domain/ASPNET的預定用戶賬戶。我們既可以利用ASP.NET中身份驗證功能來驗證用戶,也可以利用標準的Windows身份驗證來驗證用戶。
然后我們可以利用我們的憑證,或者利用執行代碼的預定義用戶賬戶來設置所假冒的賬戶。
假冒還允許我們在不使用ASP.NET提供的身份驗證和授權功能的情況下提供身份驗證和授權:我們可以利用用戶賬戶和他們相關權限支持Windows和IIS管理身份驗證和授權。
假冒通常用于提供訪問控制,比如授權,一個應用程序可以訪問它所假冒的的用戶可以訪問的任何資源。例如,默認情況下,Domain/ASPNET用戶不能對文件系統進行讀寫操作的,所以這個用戶賬戶也無法在Enterprise Services中執行事務處理。但是利用假冒,用戶就可以通過假冒一個特定的Windows賬戶完成這些事情,因為這個特定的賬戶有這個權限。因此,我們就可以保證一些用戶可以對文件系統進行讀寫操作,而其他的一些用戶僅僅執行讀的操作。
好了,上面講了很多,我們現在就來小結一下,看看如何把身份驗證,授權,假冒一起用于Web程序中。
當用戶首次訪問Web站點時,他們是匿名用戶,我們不知道他們的標識,除非對他們進行身份驗證,否則我們以后還是不知道他們的標識。當用戶請求非安全的資源時,他們可以自動的訪問這個資源(這就是非安全資源的定義)
當用戶請求安全的受保護的資源時,就要如下步驟:
1.請求被發送到 Web服務器,由于此時這個用戶標識還有被確認,所以用戶就被重定向到登錄頁面
2.用戶提供憑證,身份驗證就對憑證進行驗證和審核
3.如果用戶憑證合法,就可以訪問資源,否則,就不能。
當用戶請求安全的資源,但是該資源有特定權限的用戶才能訪問,就會發生下面步驟:
1.請求被發送到 Web服務器,由于此時這個用戶標識還有被確認,所以用戶就被重定向到登錄頁面
2.用戶提供憑證,身份驗證就對憑證進行驗證和審核
3.把用戶的憑證或者角色與被允許的用戶或者角色進行比較,如果用戶在列表中,那么他們就被準許訪問這個資源,否則,拒絕。
如果啟用了假冒,那么在這兩種情況下,假冒都會發生。默認情況下,假冒是禁止的,可以修改配置文件添加
<system.web>
<identity impersonate="true" userName="Xiaoyang/User" password="xiaoyang"/>
</system.web>
</configuration>
在<identity>中,把impersonate特性設置為true,拿userName和 password設為要假冒的用戶賬戶。 如果假冒被啟用,那么被審核的就是假冒的用戶標識的憑證,而不是提交的憑證。這兩種憑證有可能相同,需要注意的是:假冒是利用Web服務器中已有的用戶訪問,如IUser用戶。
分享:解析ASP.NET實現數據采集這是我自己寫的一個數據采集程序,是采集一個人才網里面人才的信息,第一次寫Blog,寫的不好不要見笑。 //先按照下面的字段創建一個數據表 以下為引用的內容: public partial class Form2 : Form
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-解讀ASP.NET安全架構。