解讀ASP.NET安全架構(gòu)_.Net教程
推薦:如何使用ASP.NET Image Generation生成圖片縮略圖及水印ASP.NET Image Generation內(nèi)置了ImageResizeTransform類,可以實(shí)現(xiàn)圖片大小調(diào)整功能。也可以擴(kuò)展ImageTransform實(shí)現(xiàn)自己的圖片變換類。 下面使用ASP.NET Image Generation生成圖片縮略圖及水印的代碼。 數(shù)據(jù)庫(kù) 以下為引用的內(nèi)容: CREATE
開(kāi)發(fā)Web程序中,我們可以選擇用自己的方法來(lái)實(shí)現(xiàn)安全的策略,或者可以購(gòu)買第三方的安全代碼和產(chǎn)品,不管怎么樣,都是要很大的花費(fèi)的,幸好在.NET Framework中已經(jīng)內(nèi)置了安全的解決方案。
ASP.NET和 .NET Framework 聯(lián)合IIS為Web應(yīng)用程序安全提供了一個(gè)基礎(chǔ)結(jié)構(gòu)。它的一個(gè)很明顯的優(yōu)勢(shì)在于我們不必再編寫自己的安全架構(gòu),我們可以利用.NET安全架構(gòu)的內(nèi)置的特性,而且整個(gè)安全的架構(gòu)是經(jīng)過(guò)測(cè)試和時(shí)間的考驗(yàn)了的。
.NET安全架構(gòu)包含了很多的類,這些類用來(lái)處理身份驗(yàn)證,授權(quán),基于角色的授權(quán),假冒(Impersonation),代碼訪問(wèn)安全,還包含了一個(gè)用于構(gòu)建自定義解決方案的基本架構(gòu)。
本篇我們主要談?wù)撓旅娴囊恍┰掝}:
ASP.NET安全架構(gòu)的主要功能
身份驗(yàn)證和授權(quán)
安全上下文中的標(biāo)識(shí)和主體
身份驗(yàn)證模塊的運(yùn)行
授權(quán)模塊的運(yùn)行
下面就開(kāi)始:
一 ASP.NET實(shí)現(xiàn)安全的過(guò)程
ASP.NET 安全架構(gòu)分為幾個(gè)關(guān)鍵的安全過(guò)程:身份驗(yàn)證,授權(quán),假冒,加密提供提供了必需的功能。具體看看一些解釋:
身份驗(yàn)證--指明是誰(shuí)再訪問(wèn)我們的站點(diǎn)
授權(quán)----誰(shuí)可以對(duì)哪些資源操作和訪問(wèn)?訪問(wèn)站點(diǎn)的用戶是否被授權(quán)使用他所請(qǐng)求的資源?
假冒----準(zhǔn)備假冒什么角色?(注:假冒不是貶義詞,不是我們常說(shuō)的假冒商品的假冒,因?yàn)椴煌挠脩艚巧胁煌臋?quán)限,如果 我們當(dāng)前的用戶無(wú)法訪問(wèn)某一特定的資源,我們就可以讓想訪問(wèn)特定資源的用戶假冒,更確切的說(shuō)是模仿有權(quán)限訪問(wèn)特定資源的用戶,簡(jiǎn)言之:用戶A想訪問(wèn)C資源,但是沒(méi)有權(quán)限,但是用戶B可以訪問(wèn),所以A和B商量,A就用B的身份訪問(wèn)。具體的以后講解)
下面我們具體看看每個(gè)安全的過(guò)程:
1.身份驗(yàn)證
身份驗(yàn)證是揭示用戶標(biāo)識(shí)(注:標(biāo)識(shí)的概念我們后面馬上就講的,簡(jiǎn)言之,用戶的ID 和 名稱)并判斷標(biāo)識(shí)真實(shí)性的過(guò)程。很好理解,舉個(gè)例子(大家注意例子中的一些術(shù)語(yǔ)):我們要取參加一個(gè)會(huì)議,我們就會(huì)取登記提供我們的一些證件即標(biāo)識(shí)(表明我們的身份),一旦標(biāo)識(shí)被確認(rèn),我們就會(huì)得到會(huì)議通行證,我們就可以帶著通行證參加會(huì)議。而且會(huì)議中的每個(gè)人都可以通過(guò)我們的通行證了解我們的一些信息,如我們的名字,公司。身份驗(yàn)證就是:一旦標(biāo)識(shí)被確定,我們就會(huì)得到一個(gè)可以識(shí)別我們的令牌,所以,再一個(gè)特定的區(qū)域內(nèi),不管我們?cè)谀睦�,我們的�?biāo)識(shí)都可以被識(shí)別。
在ASP.NET中,有4中身份驗(yàn)證的模式:
Widows身份驗(yàn)證(Windows Authentication)
Forms身份驗(yàn)證(Form Authentication)
Passpot身份驗(yàn)證(Passport Authentication)
自定義身份驗(yàn)證
對(duì)于每一種身份驗(yàn)證,用戶都需要在登錄的時(shí)候提供憑證,一旦標(biāo)識(shí)被核實(shí),用戶就會(huì)獲得一個(gè)身份驗(yàn)證令牌,在Forms驗(yàn)證中,整個(gè)令牌就是FormsAuthenticationTicket,整個(gè)令牌就放在 cookie中,每次請(qǐng)求資源的時(shí)候,令牌就會(huì)提供用戶的標(biāo)識(shí)信息。
2.授權(quán)
我們接著拿之前的那個(gè)會(huì)議的例子來(lái)看,授權(quán)就是表明我們可以做什么。進(jìn)入會(huì)議廳以后,發(fā)現(xiàn)有很多不同的會(huì)議,專家級(jí)的,普通級(jí)的,不同人參加不同級(jí)別的會(huì)議。而且有些人可以參觀整個(gè)會(huì)議廳,但是有些人只能在展覽廳參觀。這就是權(quán)限的不同而導(dǎo)致的。
所以,授權(quán)就是:以我們的標(biāo)識(shí)信息為參考,批準(zhǔn)或者拒絕訪問(wèn)我們請(qǐng)求的資源。還有一點(diǎn)要注意的是:我們一般是常用的是基于角色的授權(quán),就是把用戶分為一組一組,然后給每組不同的角色。
假冒
假冒是在其他用戶標(biāo)識(shí)的上下文中執(zhí)行代碼的過(guò)程。在默認(rèn)情況下,所有的ASP.NET代碼都是在Domain/ASPNET用戶賬戶下執(zhí)行的,要利用其他的標(biāo)識(shí)執(zhí)行代碼,假冒其他的標(biāo)識(shí),我們應(yīng)該利用.NET安全架構(gòu)中的內(nèi)置的假冒的功能。它允許我們指定執(zhí)行代碼的用戶賬戶,比如不同于Domain/ASPNET的預(yù)定用戶賬戶。我們既可以利用ASP.NET中身份驗(yàn)證功能來(lái)驗(yàn)證用戶,也可以利用標(biāo)準(zhǔn)的Windows身份驗(yàn)證來(lái)驗(yàn)證用戶。
然后我們可以利用我們的憑證,或者利用執(zhí)行代碼的預(yù)定義用戶賬戶來(lái)設(shè)置所假冒的賬戶。
假冒還允許我們?cè)诓皇褂肁SP.NET提供的身份驗(yàn)證和授權(quán)功能的情況下提供身份驗(yàn)證和授權(quán):我們可以利用用戶賬戶和他們相關(guān)權(quán)限支持Windows和IIS管理身份驗(yàn)證和授權(quán)。
假冒通常用于提供訪問(wèn)控制,比如授權(quán),一個(gè)應(yīng)用程序可以訪問(wèn)它所假冒的的用戶可以訪問(wèn)的任何資源。例如,默認(rèn)情況下,Domain/ASPNET用戶不能對(duì)文件系統(tǒng)進(jìn)行讀寫操作的,所以這個(gè)用戶賬戶也無(wú)法在Enterprise Services中執(zhí)行事務(wù)處理。但是利用假冒,用戶就可以通過(guò)假冒一個(gè)特定的Windows賬戶完成這些事情,因?yàn)檫@個(gè)特定的賬戶有這個(gè)權(quán)限。因此,我們就可以保證一些用戶可以對(duì)文件系統(tǒng)進(jìn)行讀寫操作,而其他的一些用戶僅僅執(zhí)行讀的操作。
好了,上面講了很多,我們現(xiàn)在就來(lái)小結(jié)一下,看看如何把身份驗(yàn)證,授權(quán),假冒一起用于Web程序中。
當(dāng)用戶首次訪問(wèn)Web站點(diǎn)時(shí),他們是匿名用戶,我們不知道他們的標(biāo)識(shí),除非對(duì)他們進(jìn)行身份驗(yàn)證,否則我們以后還是不知道他們的標(biāo)識(shí)。當(dāng)用戶請(qǐng)求非安全的資源時(shí),他們可以自動(dòng)的訪問(wèn)這個(gè)資源(這就是非安全資源的定義)
當(dāng)用戶請(qǐng)求安全的受保護(hù)的資源時(shí),就要如下步驟:
1.請(qǐng)求被發(fā)送到 Web服務(wù)器,由于此時(shí)這個(gè)用戶標(biāo)識(shí)還有被確認(rèn),所以用戶就被重定向到登錄頁(yè)面
2.用戶提供憑證,身份驗(yàn)證就對(duì)憑證進(jìn)行驗(yàn)證和審核
3.如果用戶憑證合法,就可以訪問(wèn)資源,否則,就不能。
當(dāng)用戶請(qǐng)求安全的資源,但是該資源有特定權(quán)限的用戶才能訪問(wèn),就會(huì)發(fā)生下面步驟:
1.請(qǐng)求被發(fā)送到 Web服務(wù)器,由于此時(shí)這個(gè)用戶標(biāo)識(shí)還有被確認(rèn),所以用戶就被重定向到登錄頁(yè)面
2.用戶提供憑證,身份驗(yàn)證就對(duì)憑證進(jìn)行驗(yàn)證和審核
3.把用戶的憑證或者角色與被允許的用戶或者角色進(jìn)行比較,如果用戶在列表中,那么他們就被準(zhǔn)許訪問(wèn)這個(gè)資源,否則,拒絕。
如果啟用了假冒,那么在這兩種情況下,假冒都會(huì)發(fā)生。默認(rèn)情況下,假冒是禁止的,可以修改配置文件添加
<system.web>
<identity impersonate="true" userName="Xiaoyang/User" password="xiaoyang"/>
</system.web>
</configuration>
在<identity>中,把impersonate特性設(shè)置為true,拿userName和 password設(shè)為要假冒的用戶賬戶。 如果假冒被啟用,那么被審核的就是假冒的用戶標(biāo)識(shí)的憑證,而不是提交的憑證。這兩種憑證有可能相同,需要注意的是:假冒是利用Web服務(wù)器中已有的用戶訪問(wèn),如IUser用戶。
分享:解析ASP.NET實(shí)現(xiàn)數(shù)據(jù)采集這是我自己寫的一個(gè)數(shù)據(jù)采集程序,是采集一個(gè)人才網(wǎng)里面人才的信息,第一次寫B(tài)log,寫的不好不要見(jiàn)笑。 //先按照下面的字段創(chuàng)建一個(gè)數(shù)據(jù)表 以下為引用的內(nèi)容: public partial class Form2 : Form
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 再議ASP.NET DataGrid控件中的“添加新行”功能
- IsPostBack原理的介紹
- 存儲(chǔ)過(guò)程編寫經(jīng)驗(yàn)和優(yōu)化措施
- .Net下的MSMQ的同步異步調(diào)用
- 解讀Asp.net中過(guò)濾html,js,css代碼的方法
- 學(xué)習(xí)Asp.Net經(jīng)常會(huì)用到的函數(shù)集
- 解析.Net 4.0 中委托delegate的使用詳解
- 基于Asp.Net MVC4 Bundle捆綁壓縮技術(shù)的介紹
- .NET平臺(tái)依賴注入機(jī)制及IoC的設(shè)計(jì)與實(shí)現(xiàn)
- 在ASP.NET程序中創(chuàng)建唯一序號(hào)
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-解讀ASP.NET安全架構(gòu)
。