ASP.NET提供一個很健壯的安全系統,ASP.NET的安全性和性能有很深的關係,利用ASP.NET的安全機制可以從每個Web頁面的頂端編寫安全檢查代碼的工作解放出來,安全檢查有核心的ASP.NET子系統完成。
當IIS收到請求時,它首先查看資源是如何受保護的,資源可以使用者匿名存取保護,或者用標準的本地或活動目錄證書保護。IIS通過標準的存取控制清單(ACL)查看使用者對請求的資源十分有存取權限。如果任何一項檢查失敗,IIS甚至在請求到達ASP.NET之前就拒絕訪問。在這個過程中發生了兩件事,使用者被身份驗證(在匿名存取時事通過標準的IUSER_<machine-name>帳號進行身份驗證),然後被授權(通過對照ACL檢查身份驗證憑證) 。
如果一個ASP.NET資源(ASP.NET頁面,使用者控制項或Web服務)被請求,IIS對請求進行了身份驗證並授權,下一步是由ASP.NET提的自己的身份驗證和 授權。
IIS和ASP.NET身份驗證/授權的安全進程:

093113JP-0  

ASP.NET在應用程式中使用者身份驗證有:Windows身份驗證,Form身份驗證,Passprot身份驗證。Windows身份驗證提供與傳統的Windows帳號(或者是活動目錄帳號或者本地帳號)的集成。該模式的工作方式和正常的IIS身份驗證相同。在這種模式下,要禁用對網站的匿名存取,以保護網站不被圍授權使用者侵入。然後要更新Web.config檔,指定身份驗證模式為Windows身份驗證,並指定ASP.NET應該使用使用者應該被IIS質詢時輸入的證書作為該應用程式的證書。
<configuration>
    <system.web>
        <authentication mode="Windows">
        </authentication>
        <identity impersonate="true"/>
    </system.web>
</configuration>
可以通過Web.config檔的<authorization>部分允許或拒絕角色、使用者、指定組合存取權限:
<configuration>
    <system.web>
    <authorization>
            <allow roles="role1"/>
            <deny users="*"/>
        </authorization>
</system.web>
</configuration>
Windows身份驗證時最快的身份驗證模式,因為它依賴于IIS已查詢過的東西,但是,它也是可自訂程度最小的驗證模式,因為不能控制登錄頁面或證書來源,該模式比較適合內網。
Forms身份驗證允許控制標準的登錄頁面,並根據Web.config檔中的條目進行身份驗證,或者使用自己的身份驗證檔。Forms身份驗證時可以定義最強的身份驗證方法。
<configuration>
    <system.web>
        <authentication mode="Forms">
            <forms name="Form1" path="/" loginUrl="Login.aspx" timeout="15"/>
        </authentication>
    </system.web>
</configuration>
可以在Web.config檔中指定能夠訪問Web應用程式的證書的一個清單,但這樣很不安全,證書是在XML設定檔中以明文存儲的。雖然可以加密密碼的值,但會造成性能的下降,而且管理證書清單也會非常麻煩。
一般是針對使用者的ID和密碼所在的資料來源創建身份驗證方法。通過調用預存程序、或者直接的後臺邏輯。
Passport身份驗證允許應用程式和Microsoft Passpart服務集成在一起。該模式基本工作方式是:當檢測一個為進行身份驗證的請求時,ASP.NET把登錄證書從一個Passport登錄視窗發送到Passp服務。
Passport是最慢的身份驗證方式,為了驗證憑證,它要求通過Internet進行Web服務類型的通信。不過Passport可以很好的利用到單點登錄。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()