Enterprise Library Step By Step系列(五):安全应用程序块——入门篇

简介:
写在前面:按照本系列随笔的风格,还是立足于初学者,所以在入门篇里面介绍的比较简单,在进阶篇里面多介绍一些进一步的探索内容。避免给初学者一种觉得安全应用程序块很复杂的感觉。
一.     安全应用程序块概述:
安全应用程序块通过一个或多个安全机制,帮助开发人员在应用程序中实现通用的安全相关任务。
需要提高扩展性,以便在不改变应用程序代码的情况下更改认证或授权方式。
提供了以下几个方面的功能:
1 .认证
2 .授权
3 .角色管理
4 Profile 管理
二.     几个重要的概念:
1.          Credential(令牌)
2.          Identity(身份)
3.          Principal(主体特征)
三.     使用三部曲:
在进行使用前请确保项目中有 App.config Web.config 文件,并且需要数据库中有相关的表和存储过程,具体可参见数据库 EntLibQuickStarts Enterprise Library 的示例库)。
1 .定义配置文件:
1 )运行 Enterprise Library Configuration  配置工具,打开项目中的配置文件;
2 )右击 Application ,选择 New | Security Application Block ,创建一个安全应用程序块;
3 )在 Security Application Block | Authentication  节点上右击,选择   New | Database Authentication Provider ,创建一个数据库认证 Provider
4 )根据在数据访问应用程序块中所讲的,设置数据库的连接字符串;
5 )右击 Cryptography Application Block | Hash Providers ,选择 New | Hash Algorithm Provider ,创建一个加密 Provider ,并设置 SaltEnabled True
6 )选择 Security Application Block | Authentication | Database Provider 设置  Database  属性为  Database Instance并且设置 HashProvider 属性为SHA1Managed
7 )选择 Security Application Block ,设置它的 DefaultAuthenticationInstance Database Provider


8 )选择 File | Save All 保存全部。
至此,关于认证部分的配置已经做完。仅仅有这些还不够,我们还要进行设置角色。
9 )选择 Security Application Block ,右击 Roles ,选择 New | Role Database Provider 创建一个角色的数据库 Provider
10 )设置 Database 属性为 Database Instance
11 )选择 Security Application Block 节点,设置 DefaultRolesInstance ,为 Role sD atabase Provider

12 )保存全部 File | Save All
至此,所有的配置文件的工作已经做完。最后别忘了,做拷贝目录
1 copy  " $(ProjectDir)\*.config "   " $(TargetDir) "
2 .创建 Security Provider 实例:
1 IAuthenticationProvider authprovider;
2             authprovider  =  AuthenticationFactory.GetAuthenticationProvider();
3 .执行 Security Provider 命令:
 1   public   static   bool  Authenticate( string  username,  string  password)
 2          {
 3            bool authenticated = false;
 4
 5            
 6            NamePasswordCredential credentials;
 7            credentials = new NamePasswordCredential(username, password);
 8 
 9            IAuthenticationProvider authprovider;
10            authprovider = AuthenticationFactory.GetAuthenticationProvider();
11 
12            IIdentity identity;
13            authenticated = authprovider.Authenticate(credentials, out identity);
14 
15            if (!authenticated)
16            {
17                throw new SecurityException("Invalid username or password.");
18            }

19            
20          
21            
22            IRolesProvider rolesprovider;
23            rolesprovider = RolesFactory.GetRolesProvider();
24 
25            IPrincipal principal;
26            principal = rolesprovider.GetRoles(identity);
27 
28            // Place user's principal on the thread
29            Thread.CurrentPrincipal = principal;
30            
31            return authenticated;
32        }
入门篇就到这里了,安全应用程序块内容比较多,所以有些步骤里面我没有截图,请大家谅解。在进阶篇里面,我会分别介绍认证,授权(包括授权规则),角色,个性化服务,以及严格的帐号管理策略, Security Cache ,包括第三方的基于数据库角色授权的插件等。


















本文转自lihuijun51CTO博客,原文链接:  http://blog.51cto.com/terrylee/67603 ,如需转载请自行联系原作者




相关文章
|
安全 编译器 开发者
【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式
【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式
617 0
|
XML 编解码 文字识别
PyMuPDF 1.24.4 中文文档(八)(4)
PyMuPDF 1.24.4 中文文档(八)
719 1
|
机器学习/深度学习 自然语言处理 搜索推荐
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
848 1
|
算法
如何避免死锁?
如何避免死锁?
214 0
|
测试技术 Android开发
Android App获取不到pkgInfo信息问题原因
Android App获取不到pkgInfo信息问题原因
961 0
|
存储 算法 安全
深入详解ThreadLocal
在我们日常的并发编程中,有一种神奇的机制在静悄悄地为我们解决着各种看似棘手的问题,它就是 ThreadLocal 。
21725 9
深入详解ThreadLocal
|
存储 安全 Linux
使用Tag策略实现文件访问及管理权限实践
本文具体阐述了如何借助阿里云资源访问管理(RAM)服务,结合标签功能来实行文件访问及管理权限的细节控制。
443 0
|
机器学习/深度学习 监控 安全
深度学习驱动下的智能监控系统:图像识别技术的革新与应用
【4月更文挑战第2天】 在智能监控领域,图像识别技术正经历着一场由深度学习推动的变革。本文深入探讨了基于深度学习的图像识别技术如何强化智能监控系统的功能和效率,并分析了其在实际应用中的表现和挑战。通过研究最新的研究成果和技术趋势,我们揭示了深度学习算法在处理视频流、实时监测和异常行为检测方面的先进性,以及这些技术如何转化为提高安全水平的创新应用。
|
机器学习/深度学习 自然语言处理 算法框架/工具
Python 智能项目:1~5(3)
Python 智能项目:1~5(3)
203 0
|
监控 关系型数据库 MySQL
CentOS8.5下安装部署开源监控系统Zabbix 6.0LTS
CentOS8.5下安装部署开源监控系统Zabbix 6.0LTS
1366 0
CentOS8.5下安装部署开源监控系统Zabbix 6.0LTS