ASP.NET安全問題--ASP.NET安全架構

來源:互聯網
上載者:User

                                          ASP.NET安全架構

       前言:上篇文章談了很多的理論的東西,所以決定先跳過一些理論的講解,先看看ASP.NET的安全架構,到下篇就再講講理論知識,這樣穿插起來講可能效果更好。而且本篇注重與很多常見概念的解釋,相信大家看完後一定有一些收穫的。
 

系列文章連結:

ASP.NET開發安全問題

ASP.NET安全問題-- 建立安全的Web應用程式

ASP.NET安全問題--ASP.NET安全架構

ASP.NET安全問題--ASP.NET安全架構--如何?.NET安全

ASP.NET安全問題--ASP.NET生命週期中的驗證以及身分識別驗證模組

ASP.NET安全問題--Forms驗證的具體介紹(上篇)

ASP.NET安全問題--Froms驗證的具體介紹(中篇)

ASP.NET安全問題--Forms驗證(後篇)--實戰篇

ASP.NET安全問題--ASP.NET中的授權問題(前篇)

       在開發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.把使用者的憑證或者角色與被允許的使用者或者角色進行比較,如果使用者在列表中,那麼他們就被准許訪問這個資源,否則,拒絕。
 
 
 
       如果啟用了假冒,那麼在這兩種情況下,假冒都會發生。預設情況下,假冒是禁止的,可以修改設定檔添加<identity>元素啟用:
 <configuration>
  <system.web>
   <identity impersonate="true" userName="Xiaoyang/User" password="xiaoyang"/>
  </system.web>
 </configuration>
 

       在<identity>中,把impersonate特性設定為true,拿userName和 password設為要假冒的使用者賬戶。 如果假冒被啟用,那麼被審核的就是假冒的使用者標識的憑證,而不是提交的憑證。這兩種憑證有可能相同,需要注意的是:假冒是利用Web伺服器中已有的使用者訪問,如IUser使用者。
 
       今天就先到這裡,寫太長了,大家不看著也累,下篇講解.NET中實現安全,講講IPrincipan,Identity.

 

       註:轉載要表明出處!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.