EnterpriseLibraryStepByStep系列(六):安全應用程式塊——進階篇
一. 認證(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;
}
{
bool authorized = false;
IAuthorizationProvider ruleProvider;
ruleProvider = AuthorizationFactory.GetAuthorizationProvider();
authorized = ruleProvider.Authorize(Thread.CurrentPrincipal, rule);
return authorized;
}
三. 角色(Roles):
在角色中,有兩類基本的授權策略:
基於角色:Role Based
基於資源:Resource Based
關於角色授權在GotDotnet上有一個基於資料庫的角色授權企業庫外掛,大家可以下載下來,安裝在自己的機器上。通過配置後,會將授權規則儲存在資料庫中,同時我們可以自行開發一個介面讓使用者輸入。
下載地址:
[url]http://www.cnblogs.com/Files/Terrylee/DBRulesAuthorizationProvider.zip[/url]
四. 個性化服務(Profiles):
[url]http://www.cnblogs.com/Files/Terrylee/DBRulesAuthorizationProvider.zip[/url]
四. 個性化服務(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}
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}
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) 您是否限制嘗試登陸失敗的次數;
(3) 是否對登陸失敗的原因給與過多的提示;
(4) 是否強制推行密碼的有效期限;
(5) 是否根據特殊事件對Account進行無效處理;
(6) 是否對Login進行日誌處理;
六. The Security Cache:
在安全應用程式塊中允許對Security相關的資訊進行快取,被快取的喜訊你可以通過Token進行訪問,通過快取而不是每次都進行認證的方式提高系統的效率。
總結:在安全應用程式塊中的內容比較多,不能每一個都給出示例,請大家見諒。建議初學的朋友認真看一下Enterprise Library Hands On Lab,做一些Demo多加以理解。會在以後的專案開發中把安全應用程式塊運用的更好。
本文轉自lihuijun51CTO部落格,原文連結:http://blog.51cto.com/terrylee/67606 ,如需轉載請自行聯絡原作者
相關文章
- 【webpack 系列】進階篇Web
- IAST技術進階系列(六):API安全治理與防護初探ASTAPI
- 帶你深度解鎖Webpack系列(進階篇)Web
- 正規表示式系列之中級進階篇
- Asp.Net MVC 系列--進階篇之FilterASP.NETMVCFilter
- python入門與進階篇(六)之高階語法及用法Python
- 「Mybatis系列」Mybatis高階應用MyBatis
- React 進階之路(六)React
- 區塊鏈應用在網路安全的六個案例區塊鏈
- 實現微信小程式編譯和執行環境系列(進階篇)微信小程式編譯
- 函式進階應用3函式
- 區塊鏈的應用領域——公益(六)區塊鏈
- React 進階系列:Hooks 該怎麼用ReactHook
- 《區塊鏈安全白皮書-技術應用篇(2018年)》區塊鏈
- 「區塊鏈進階系列」什麼是Web3.0?區塊鏈Web
- iOS逆向之旅(進階篇) — 程式碼注入iOS
- Dagger 2 系列(五) -- 進階篇:@Scope 和 @Singleton
- Asp.Net MVC4系列--進階篇之AJAXASP.NETMVC
- Asp.Net MVC4 系列--進階篇之ViewASP.NETMVCView
- SpringCloud系列之Nacos應用篇SpringGCCloud
- vue高階進階系列——用typescript玩轉vue和vuexVueTypeScript
- ArkWeb高階安全模式 - 提升應用安全性Web模式
- Android應用開發進階Android
- 進階 Redis 技術與應用Redis
- JRebel過期啟用(二)進階篇
- 高階前端進階系列 - webview前端WebView
- CDN應用進階 | 正確使用CDN 讓你更好規避安全風險
- 安卓應用安全指南六、困難問題安卓
- [一天一個進階系列] - MyBatis基礎篇MyBatis
- Asp.Net MVC4 系列--進階篇之Model(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Model(2)ASP.NETMVC
- Asp.Net MVC4 系列-- 進階篇之路由(1)ASP.NETMVC路由
- Asp.Net MVC4 系列--進階篇之路由 (2)ASP.NETMVC路由
- Asp.Net MVC系列--進階篇之controller(1)ASP.NETMVCController
- Asp.Net MVC4系列--進階篇之Helper(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Helper(2)ASP.NETMVC
- Dagger 2 系列(六) -- 進階篇:Component 依賴、@SubComponent 與多 Component 下的 Scope 使用限制
- React進階篇1React