ASP.NET應(yīng)用程序的安全方案(二)—授權(quán)
發(fā)表時(shí)間:2024-06-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]摘要:本文ASP.NET應(yīng)用程序授權(quán)的概念,介紹了各種授權(quán)模式并進(jìn)行了比較,闡述了選擇授權(quán)模式的機(jī)制。關(guān)鍵字:授權(quán) authorization ASP.NET WEB應(yīng)用1.1. 授權(quán)概念 任何成功的應(yīng)用程序安全策略的基礎(chǔ)都是穩(wěn)固的身份驗(yàn)證和授權(quán)手段,以及提供機(jī)密數(shù)據(jù)的保密性和完整性的安全通...
摘要:本文ASP.NET應(yīng)用程序授權(quán)的概念,介紹了各種授權(quán)模式并進(jìn)行了比較,闡述了選擇授權(quán)模式的機(jī)制。
關(guān)鍵字:授權(quán) authorization ASP.NET WEB應(yīng)用
1.1. 授權(quán)概念
任何成功的應(yīng)用程序安全策略的基礎(chǔ)都是穩(wěn)固的身份驗(yàn)證和授權(quán)手段,以及提供機(jī)密數(shù)據(jù)的保密性和完整性的安全通訊。
授權(quán)(authorization)過程負(fù)責(zé)控制通過了身份驗(yàn)證的客戶端可以訪問哪些資源,以及可以執(zhí)行哪些操作。可訪問的資源既包括文件、數(shù)據(jù)庫等,還包括系統(tǒng)級(jí)的資源,如注冊(cè)表,配置數(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)
這是一種通過計(jì)算機(jī)的設(shè)置和應(yīng)用程序配置文件來配置的授權(quán)機(jī)制。URL授權(quán)允許限制用戶訪問位于應(yīng)用程序URI命名空間中的特定文件和文件夾。
2.1.2 文件授權(quán)
可以使用此方法來限制對(duì)某個(gè)WEB服務(wù)器上指定文件的訪問。訪問權(quán)限由與文件相關(guān)的Windows ACL所確定。
2.1.3 主體權(quán)限請(qǐng)求
主體權(quán)限請(qǐng)求(Principal Permission Demand)可以通過聲明方式或是編程方式作為一種額外的精確的訪問控制機(jī)制。這種方式允許你根據(jù)單個(gè)用戶的身份標(biāo)識(shí)組成員關(guān)系,來限制對(duì)類、方法或單獨(dú)代碼的訪問。
2.1.4 .NET角色
.NET角色用于將應(yīng)用程序中具有相同權(quán)限的用戶分成一組。這種方式可以和基于票證的身份驗(yàn)證方案(如窗體身份驗(yàn)證)一起使用,可以通過聲明方式或是編程方式來配置對(duì)資源和操作的訪問。
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)用于單獨(dú)的數(shù)據(jù)庫對(duì)象。權(quán)限既可以基于角色成員關(guān)系,也可以授予單獨(dú)的Windows用戶帳戶或組帳戶。
3. 選擇授權(quán)策略
ASP.NET應(yīng)用程序有兩種基本的權(quán)限策略:基于角色的授權(quán)和基于資源的授權(quán)。
3.1 基于角色的授權(quán)
對(duì)操作的訪問通過調(diào)用者的角色成員關(guān)系,提供安全保護(hù)。角色可以將應(yīng)用程序的用戶群劃分為具有相同安全權(quán)限的用戶組。用戶被映射到角色,而且如果某個(gè)用戶被授權(quán)執(zhí)行所請(qǐng)求的操作,則應(yīng)用程序可以用固定的標(biāo)識(shí)來訪問資源。這些標(biāo)識(shí)被各自的資源管理器(如數(shù)據(jù)庫和文件系統(tǒng))所信任。
3.23.2 基于資源
單獨(dú)的資源使用Windows ACL來提供安全保護(hù)。應(yīng)用程序在訪問資源之前模擬(impersonate)調(diào)用者,這樣可以使操作系統(tǒng)執(zhí)行標(biāo)準(zhǔn)的訪問檢查。所有對(duì)資源的訪問都是使用原始調(diào)用者的安全上下文。這種模擬方式在應(yīng)用程序的中間層連接池不能被有效使用,因而影響了應(yīng)用程序的可伸縮性。
4. 角色的授權(quán)的模式
在大多數(shù)可伸縮性至關(guān)重要的.NET WEB應(yīng)用程序,使用基于角色的授權(quán)方式是最佳選擇。常用的模式如下:
在前端Web應(yīng)用程序中對(duì)用戶進(jìn)行驗(yàn)證
將用戶映射到角色
根據(jù)角色成員關(guān)系來授權(quán)對(duì)操作(不是直接對(duì)資源)的訪問
使用固定的服務(wù)標(biāo)識(shí)來訪問必要的后端資源。
一個(gè)典型的具體實(shí)現(xiàn)步驟如下::
獲取憑據(jù)信息
驗(yàn)證憑據(jù)信息
將用戶添加到角色中
創(chuàng)建一個(gè)IPrincipal對(duì)象
將IPrincipal對(duì)象放置到當(dāng)前的HTTP上下文中
根據(jù)用戶標(biāo)識(shí)/角色成員關(guān)系進(jìn)行授權(quán)
實(shí)現(xiàn)的代碼參見《ASP.NET應(yīng)用程序的安全方案(