天天看點

ASP.NET應用程式的安全方案(二)—授權

摘要:本文ASP.NET應用程式授權的概念,介紹了各種授權模式并進行了比較,闡述了選擇授權模式的機制。

關鍵字:授權 authorization ASP.NET WEB應用

1.1. 授權概念

    任何成功的應用程式安全政策的基礎都是穩固的身份驗證和授權手段,以及提供機密資料的保密性和完整性的安全通訊。

    授權(authorization)過程負責控制通過了身份驗證的用戶端可以通路哪些資源,以及可以執行哪些操作。可通路的資源既包括檔案、資料庫等,還包括系統級的資源,如系統資料庫,配置資料等。

    許多WEB程式不是直接授權客戶通路底層的資源,而是通過方法(method)來授權用戶端所能夠執行的操作。這樣做的主要原因是考慮到應用系統的可伸縮性和可管理性。     圖1列出了各種安全技術以及每種技術所提供的主要授權方式。

ASP.NET應用程式的安全方案(二)—授權

2. 2. 授權方式

    如圖1所示,Windows 2000上的.NET架構上提供了以下幾種授權方式:

  • ASP.NET授權
  • Enterprise Services授權
  • SQL Server授權

2.1 ASP.NET授權

2.1.1 URL授權

    這是一種通過計算機的設定和應用程式配置檔案來配置的授權機制。URL授權允許限制使用者通路位于應用程式URI命名空間中的特定檔案和檔案夾。

2.1.2 檔案授權

    可以使用此方法來限制對某個WEB伺服器上指定檔案的通路。通路權限由與檔案相關的Windows ACL所确定。

2.1.3 主體權限請求

    主體權限請求(Principal Permission Demand)可以通過聲明方式或是程式設計方式作為一種額外的精确的通路控制機制。這種方式允許你根據單個使用者的身份辨別組成員關系,來限制對類、方法或單獨代碼的通路。

2.1.4 .NET角色

    .NET角色用于将應用程式中具有相同權限的使用者分成一組。這種方式可以和基于票證的身份驗證方案(如窗體身份驗證)一起使用,可以通過聲明方式或是程式設計方式來配置對資源和操作的通路。

2.2 Enterprise Services授權

    在Enterprise Services的應用程式中,由Enterprise Services 角色的成員關系來控制用戶端通路包含于伺服器元件的功能。這些角色和.NET角色不同,而且可以包含Windows組帳戶或使用者帳戶。角色成員關系是在COM+目錄中定義的,而且通過元件服務(Component Service)工具管理。

2.3 SQL Server授權

    SQL Server支援精确授權,這些權限可以應用于單獨的資料庫對象。權限既可以基于角色成員關系,也可以授予單獨的Windows使用者帳戶或組帳戶。

3. 選擇授權政策

    ASP.NET應用程式有兩種基本的權限政策:基于角色的授權和基于資源的授權。

3.1 基于角色的授權

    對操作的通路通過調用者的角色成員關系,提供安全保護。角色可以将應用程式的使用者群劃分為具有相同安全權限的使用者組。使用者被映射到角色,而且如果某個使用者被授權執行所請求的操作,則應用程式可以用固定的辨別來通路資源。這些辨別被各自的資料總管(如資料庫和檔案系統)所信任。

3.23.2 基于資源

    單獨的資源使用Windows ACL來提供安全保護。應用程式在通路資源之前模拟(impersonate)調用者,這樣可以使作業系統執行标準的通路檢查。所有對資源的通路都是使用原始調用者的安全上下文。這種模拟方式在應用程式的中間層連接配接池不能被有效使用,因而影響了應用程式的可伸縮性。

4. 角色的授權的模式

    在大多數可伸縮性至關重要的.NET WEB應用程式,使用基于角色的授權方式是最佳選擇。常用的模式如下:

  • 在前端Web應用程式中對使用者進行驗證
  • 将使用者映射到角色
  • 根據角色成員關系來授權對操作(不是直接對資源)的通路
  • 使用固定的服務辨別來通路必要的後端資源。

    一個典型的具體實作步驟如下::

  • 擷取憑據資訊
  • 驗證憑據資訊
  • 将使用者添加到角色中
  • 建立一個IPrincipal對象
  • 将IPrincipal對象放置到目前的HTTP上下文中
  • 根據使用者辨別/角色成員關系進行授權

    實作的代碼參見 《ASP.NET應用程式的安全方案(一)-身份驗證》。