明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ASP.NET應(yīng)用程序的安全方案(二)—授權(quán)

[摘要]摘要:本文ASP.NET應(yīng)用程序授權(quán)的概念,介紹了各種授權(quán)模式并進行了比較,闡述了選擇授權(quán)模式的機制。關(guān)鍵字:授權(quán) authorization ASP.NET WEB應(yīng)用1.1. 授權(quán)概念 任何成功的應(yīng)用程序安全策略的基礎(chǔ)都是穩(wěn)固的身份驗證和授權(quán)手段,以及提供機密數(shù)據(jù)的保密性和完整性的安全通...
摘要:本文ASP.NET應(yīng)用程序授權(quán)的概念,介紹了各種授權(quán)模式并進行了比較,闡述了選擇授權(quán)模式的機制。


關(guān)鍵字:授權(quán) authorization ASP.NET WEB應(yīng)用


1.1. 授權(quán)概念
任何成功的應(yīng)用程序安全策略的基礎(chǔ)都是穩(wěn)固的身份驗證和授權(quán)手段,以及提供機密數(shù)據(jù)的保密性和完整性的安全通訊。
授權(quán)(authorization)過程負責(zé)控制通過了身份驗證的客戶端可以訪問哪些資源,以及可以執(zhí)行哪些操作?稍L問的資源既包括文件、數(shù)據(jù)庫等,還包括系統(tǒng)級的資源,如注冊表,配置數(shù)據(jù)等。
許多WEB程序不是直接授權(quán)客戶訪問底層的資源,而是通過方法(method)來授權(quán)客戶端所能夠執(zhí)行的操作。這樣做的主要原因是考慮到應(yīng)用系統(tǒng)的可伸縮性和可管理性。 圖1列出了各種安全技術(shù)以及每種技術(shù)所提供的主要授權(quán)方式。

2. 2. 授權(quán)方式
如圖1所示,Windows 2000上的.NET框架上提供了以下幾種授權(quán)方式:

ASP.NET授權(quán)
Enterprise Services授權(quán)
SQL Server授權(quán)
2.1 ASP.NET授權(quán)
2.1.1 URL授權(quán)
這是一種通過計算機的設(shè)置和應(yīng)用程序配置文件來配置的授權(quán)機制。URL授權(quán)允許限制用戶訪問位于應(yīng)用程序URI命名空間中的特定文件和文件夾。

2.1.2 文件授權(quán)
可以使用此方法來限制對某個WEB服務(wù)器上指定文件的訪問。訪問權(quán)限由與文件相關(guān)的Windows ACL所確定。

2.1.3 主體權(quán)限請求
主體權(quán)限請求(Principal Permission Demand)可以通過聲明方式或是編程方式作為一種額外的精確的訪問控制機制。這種方式允許你根據(jù)單個用戶的身份標(biāo)識組成員關(guān)系,來限制對類、方法或單獨代碼的訪問。

2.1.4 .NET角色
.NET角色用于將應(yīng)用程序中具有相同權(quán)限的用戶分成一組。這種方式可以和基于票證的身份驗證方案(如窗體身份驗證)一起使用,可以通過聲明方式或是編程方式來配置對資源和操作的訪問。

2.2 Enterprise Services授權(quán)
在Enterprise Services的應(yīng)用程序中,由Enterprise Services 角色的成員關(guān)系來控制客戶端訪問包含于服務(wù)器組件的功能。這些角色和.NET角色不同,而且可以包含Windows組帳戶或用戶帳戶。角色成員關(guān)系是在COM+目錄中定義的,而且通過組件服務(wù)(Component Service)工具管理。

2.3 SQL Server授權(quán)
SQL Server支持精確授權(quán),這些權(quán)限可以應(yīng)用于單獨的數(shù)據(jù)庫對象。權(quán)限既可以基于角色成員關(guān)系,也可以授予單獨的Windows用戶帳戶或組帳戶。

3. 選擇授權(quán)策略
ASP.NET應(yīng)用程序有兩種基本的權(quán)限策略:基于角色的授權(quán)和基于資源的授權(quán)。
3.1 基于角色的授權(quán)
對操作的訪問通過調(diào)用者的角色成員關(guān)系,提供安全保護。角色可以將應(yīng)用程序的用戶群劃分為具有相同安全權(quán)限的用戶組。用戶被映射到角色,而且如果某個用戶被授權(quán)執(zhí)行所請求的操作,則應(yīng)用程序可以用固定的標(biāo)識來訪問資源。這些標(biāo)識被各自的資源管理器(如數(shù)據(jù)庫和文件系統(tǒng))所信任。

3.23.2 基于資源
單獨的資源使用Windows ACL來提供安全保護。應(yīng)用程序在訪問資源之前模擬(impersonate)調(diào)用者,這樣可以使操作系統(tǒng)執(zhí)行標(biāo)準(zhǔn)的訪問檢查。所有對資源的訪問都是使用原始調(diào)用者的安全上下文。這種模擬方式在應(yīng)用程序的中間層連接池不能被有效使用,因而影響了應(yīng)用程序的可伸縮性。

4. 角色的授權(quán)的模式
在大多數(shù)可伸縮性至關(guān)重要的.NET WEB應(yīng)用程序,使用基于角色的授權(quán)方式是最佳選擇。常用的模式如下:

在前端Web應(yīng)用程序中對用戶進行驗證
將用戶映射到角色
根據(jù)角色成員關(guān)系來授權(quán)對操作(不是直接對資源)的訪問
使用固定的服務(wù)標(biāo)識來訪問必要的后端資源。
一個典型的具體實現(xiàn)步驟如下::
獲取憑據(jù)信息
驗證憑據(jù)信息
將用戶添加到角色中
創(chuàng)建一個IPrincipal對象
將IPrincipal對象放置到當(dāng)前的HTTP上下文中
根據(jù)用戶標(biāo)識/角色成員關(guān)系進行授權(quán)
實現(xiàn)的代碼參見《ASP.NET應(yīng)用程序的安全方案(