首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Enterprise Library 實戰系列(六):安全性應用程式區塊——進階篇

     編輯:關於.NET

一、驗證

確認呼叫者身分的過程,需考量:

  • 信任邊界:組件、進程、主機
  • 呼叫者身分:通常為使用者名稱/密碼

入門篇已提供程式碼範例。

二、授權

決定已驗證使用者是否具備特定業務操作權限。不當授權恐導致資訊洩露/竄改。纏深度防禦的關鍵策略。

兩種授權提供者

  • Authorization Manager (AzMan)
  • Authorization Rule(授權規則)

授權規則組成要素

  • I:Identities(身分)
  • R:Roles(角色)
  • Operators:AND、OR、NOT、括號

範例:R:Employee OR R:Manager OR I:Bob

授權規則編輯器

授權檢查程式碼

public static bool Authorized(string rule)
{
    bool authorized = false;
    IAuthorizationProvider ruleProvider = AuthorizationFactory.GetAuthorizationProvider();
    authorized = ruleProvider.Authorize(Thread.CurrentPrincipal, rule);
    return authorized;
}

三、角色

兩類基本授權策略:

  • 角色基礎:Role Based
  • 資源基礎:Resource Based

GotDotNet 提供資料庫角色授權外掛:DBRulesAuthorizationProvider.zip,安裝後可透過介面管理規則。

四、個人化服務

Profile 是系統提供給使用者的彈性資訊容器,可包含:

  1. 簡單字串/基礎型別
  2. 序列化實體
  3. 基礎型別與序列化實體的字典

儲存個人化資訊

public static void SaveProfile(BaseForm taskForm)
{
    if (_profile == null) _profile = new ProfileInfo();
    _profile.FormColor = taskForm.FormColor;
    _profile.TextColor = taskForm.TextColor;

    IProfileProvider profileProvider = ProfileFactory.GetProfileProvider();
    profileProvider.SetProfile(Thread.CurrentPrincipal.Identity, _profile);
}

載入個人化資訊

public static void LoadProfile(BaseForm taskForm)
{
    if (_profile == null)
    {
        IProfileProvider profileProvider = ProfileFactory.GetProfileProvider();
        _profile = (ProfileInfo)profileProvider.GetProfile(Thread.CurrentPrincipal.Identity);
    }
    if (_profile == null) _profile = new ProfileInfo();
    taskForm.FormColor = _profile.FormColor;
    taskForm.TextColor = _profile.TextColor;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved