程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Enterprise Library Step By Step系列(六)安全應用程序塊 - 進階篇

Enterprise Library Step By Step系列(六)安全應用程序塊 - 進階篇

編輯:關於.NET

一.認證(Authentication):

Authentication是一個確認調用者身份的過程,使用時需要考慮以下方面:

(1)界定認證的使用邊界(Boundary),尤其當應用系統跨越信任邊界時,一個信任邊界通常包括:Assemblies,Processes,Hosts

(2)確認調用者的身份(Caller),通常是用戶名和密碼。

關於認證在入門篇裡面我們已經給出了示例代碼。

二.授權(Authorization):

Authorization的作用在於決定一個被認證的用戶是否具有某種業務操作的權限,不適當的或弱授權可能導致信息洩露或篡改的風險。通過授權進行深度防范是安全應用的一個重要策略。

Authorization Provider有兩種:

Authorization Manager

Authorization Rule(授權規則)

下面來詳細看一下授權規則的要素:

I:Identities(身份)

R:Roles(角色)

Operators(關系操作符)

AND OR NOT AND ()

舉個例子:R:Employee OR R:Manager OR I:Bob就是一條授權規則

授權規則編輯器界面如下:

認證的基本代碼:

public static bool Authorized(string rule)
{
  bool authorized = false;

  IAuthorizationProvider ruleProvider;
  ruleProvider = AuthorizationFactory.GetAuthorizationProvider();
  authorized = ruleProvider.Authorize(Thread.CurrentPrincipal, rule);
  return authorized;
}

三.

角色(Roles):

在角色中,有兩類基本的授權策略:

基於角色:Role Based   基於資源:Resource Based

關於角色授權在GotDotnet上有一個基於數據庫的角色授權企業庫插件,大家可以下載下來,安裝在自己的機器上。通過配置後,會將授權規則保存在數據庫中,同時我們可以自行開發一個界面讓用戶輸入。

下載地址:

http://files.cnblogs.com/Terrylee/DBRulesAuthorizationProvider.zip

四.個性化服務(Profiles):

Profiles是系統面向用戶提供的靈活性的個體信息的容器,一個用戶的Profile可以使以下一種或多種的集合:

(1) 簡單的字符串或其他基礎類型(2) 一個序列化的實體(3) 基礎類型及序列化實體的Dictionary

保存個性化信息:

1public static void SaveProfile(BaseForm taskForm)
2{
3  // Collect profile information
4  if (_profile == null) _profile = new ProfileInfo();
5  _profile.FormColor = taskForm.FormColor;
6  _profile.TextColor = taskForm.TextColor;
7
8  // Save Profile Information
9  IProfileProvider profileProvider;
10  profileProvider = ProfileFactory.GetProfileProvider();
11  profileProvider.SetProfile(Thread.CurrentPrincipal.Identity, _profile);
12}

加載個性化信息:

1public static void LoadProfile(BaseForm taskForm)
2{
3  // Lookup profile information
4  if (_profile == null)
5  {
6    IProfileProvider profileProvider;
7    profileProvider = ProfileFactory.GetProfileProvider();
8    _profile = (ProfileInfo) profileProvider.GetProfile(
9      Thread.CurrentPrincipal.Identity
10      );
11  }
12
13  // Apply profile
14  if (_profile == null) _profile = new ProfileInfo();
15  taskForm.FormColor = _profile.FormColor;
16  taskForm.TextColor = _profile.TextColor;
17}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved