Enterprise Library Step By Step系列(六):安全應用程序塊——進階篇
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上有一個基于數據庫的角色授權企業庫插件,大家可以下載下來,安裝在自己的機器上。通過配置后,會將授權規則保存在數據庫中,同時我們可以自行開發一個界面讓用戶輸入。
下載地址:
https://files.cnblogs.com/Terrylee/DBRulesAuthorizationProvider.zip
四. 個性化服務(Profiles):
Profiles是系統面向用戶提供的靈活性的個體信息的容器,一個用戶的Profile可以使以下一種或多種的集合:
(1) 簡單的字符串或其他基礎類型
(2) 一個序列化的實體
(3) 基礎類型及序列化實體的Dictionary
保存個性化信息:
public static void SaveProfile(BaseForm taskForm)2
{3
// Collect profile information4
if (_profile == null) _profile = new ProfileInfo();5
_profile.FormColor = taskForm.FormColor;6
_profile.TextColor = taskForm.TextColor;7
8
// Save Profile Information9
IProfileProvider profileProvider;10
profileProvider = ProfileFactory.GetProfileProvider(); 11
profileProvider.SetProfile(Thread.CurrentPrincipal.Identity, _profile);12
} 加載個性化信息:
public static void LoadProfile(BaseForm taskForm)2
{3
// Lookup profile information4
if (_profile == null)5
{6
IProfileProvider profileProvider;7
profileProvider = ProfileFactory.GetProfileProvider(); 8
_profile = (ProfileInfo) profileProvider.GetProfile(9
Thread.CurrentPrincipal.Identity10
);11
} 12
13
// Apply profile14
if (_profile == null) _profile = new ProfileInfo();15
taskForm.FormColor = _profile.FormColor;16
taskForm.TextColor = _profile.TextColor;17
}五. 嚴格的帳號管理策略:
在應用管理系統中,我們需要有一套嚴格的帳號管理策略,那么嚴格的帳號管理包括那些方面?
(1) 您的應用是否需要強密碼;
(2) 您是否限制嘗試登陸失敗的次數;
(3) 是否對登陸失敗的原因給與過多的提示;
(4) 是否強制推行密碼的有效期限;
(5) 是否根據特殊事件對Account進行無效處理;
(6) 是否對Login進行日志處理;
六. The Security Cache:
在安全應用程序塊中允許對Security相關的信息進行緩存,被緩存的喜訊你可以通過Token進行訪問,通過緩存而不是每次都進行認證的方式提高系統的效率。
總結:在安全應用程序塊中的內容比較多,不能每一個都給出示例,請大家見諒。建議初學的朋友認真看一下Enterprise Library Hands On Lab,做一些Demo多加以理解。會在以后的項目開發中把安全應用程序塊運用的更好。
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com



浙公網安備 33010602011771號