一. 认证(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、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!