黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block
开发人员经常编写需要安全功能的应用程序。这些应用程序通常需要执行一系列不同的安全操作,而且它们还经常与不同的基础安全提供程序(如 Microsoft Active Directory 目录服务、授权管理器、Active Directory 应用程序模式 (ADAM) 和自定义数据库等)进行交互。
安全应用程序块通过收集开发人员必须执行的许多最常见的安全任务,来简化开发人员的工作。每个任务都以一致的方式处理,从特定的安全提供程序中抽象出应用
程序代码并使用最佳做法。您甚至可以通过更改配置来更改基础提供程序,而无需更改基础应用程序代码。
验证应用程序块功能框架如下图所示:

几个基本概念:
(1) Ticket:提供对票证的属性和值的访问,这些票证用于Forms身份验证,对用户进行标识。可以使用FormsIdentity 类的 Ticket 属性访问当前经过身份验证的用户的 FormsAuthenticationTicket。通过将当前User 的 Identity 属性强制转换为类型
FormsIdentity,可以访问当前 FormsIdentity 对象。
(2) Token:与当前执行线程关联的访问标记的句柄,用于获取用户的Windows帐户标记。通常,通过调用非托管代码(如调用
Win32 API LogonUser 函数)来检索该帐户标记。
(3) Identity:Identity 封装有关正在验证的用户或实体的信息。在最基本的级别上,Identity包含名称和身份验证类型。名称可以是用户名或 Windows 帐户名,而身份验证类型可以是所支持的登录协议(如 Kerberos V5)或自定义值。.NET Framework 定义了一个 GenericIdentity 对象和一个更专用的
WindowsIdentity 对象;前者可用于大多数自定义登录方案,而后者可用于在希望应用程序依赖于 Windows 身份验证的情况中。此外,您还可以定义自己的标识类来封装自定义用户信息。
(4) Principal:Principal 表示代码运行时所在的安全上下文。实现基于角色的安全性的应用程序将基于与主体对象关联的角色来授予权限。同标识对象类似,.NET Framework 提供 GenericPrincipal 对象和 WindowsPrincipal 对象。您还可以定义自己的自定义主体类。
下面介绍如何使用Microsoft Enterprise Library 5.0中的验证应用程序模块.
1. 运行EntLibConfig.exe,选择Blocks菜单 ,单击 Add Database Settings
.

2.
点击Authorization
Providers 区块右上角的加号按钮, Add
Authorization Providers然后点击 Add Authorization Rule Provider :

3.
在Authorition Rule Provider面板上右键,点击Add Authorization Rule,我们将新建的Rule名称设置为GetAllCollege,表示只有符合验证表达式的用户或角色才被允许执行获取所以College操作的权限:

4.
点击Rule Expression右边的…按钮,弹出验证表达式编辑对话框:

5.
在Authorition Rule Provider面板上右键,点击Add Authorization Rule,添加一个凭据缓存:

6. 点击
File菜单,单击
Save,保存为一个App.config文件,可以先保存到桌面,之后要用到它.
7. 创建一个新的控制台应用程序,将App.config添加到程序内,并加入需要的Dll文件,在此我们要导入的是 Microsoft.Practices.EnterpriseLibrary.
Security.dll, Microsoft.Practices.EnterpriseLibrary. Security.Cache.CachingStore.dll并添加需要的引用:

8. 测试:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Security.Principal;using Microsoft.Practices.EnterpriseLibrary.Security;namespace test{ class Program { staticvoid Main(string[] args) { //创建一个新的用户 GenericIdentity gID =new GenericIdentity("huang"); IAuthorizationProvider ruleProvider = AuthorizationFactory.GetAuthorizationProvider("Authorization Rule Provider"); //设置该用户隶属于Manage中 IPrincipal principal =new GenericPrincipal(gID, newstring[] { "Manage" }); //验证bool authorized = ruleProvider.Authorize(principal, "GetAllCollege"); if (authorized) { Console.WriteLine("验证成功!"); //保存用户至缓存中 ISecurityCacheProvider secCache = SecurityCacheFactory.GetSecurityCacheProvider("Security Cache"); //保存,并获取一个凭证 IToken token = secCache.SaveIdentity(gID); //通过凭证获取缓存中的用户 IIdentity savedIdentity = secCache.GetIdentity(token); //打印用户信息 Console.WriteLine(savedIdentity.Name); } else { Console.WriteLine("登录失败!"); } } }}
9.
运行结构:

OK,写完收工,睡觉咯,选修课终于上完了,但还要交一篇论文,是关于"哥本哈根气候大会"的,请问哪位朋友帮copy一篇过来呀?哈哈~~
黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block的更多相关文章
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图: 从上图我们可以 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式: ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级) 企业库提供了一个很强大的验证应用程序模 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级) Caching Application Bl ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级) 本篇文章具体官方解释请参照以下链接: h ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block 到目前为止,我们使用的模块都是在同一个配置 ...
- Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
Download dll: http://www.microsoft.com/en-us/download/confirmation.aspx?id=15104 http://www.cnblogs. ...
随机推荐
- Android高手进阶——Adapter深入理解与优化
Android高手进阶--Adapter深入理解与优化 通常是针对包括多个元素的View,如ListView,GridView.ExpandableListview,的时候我们是给其设置一个Adapt ...
- 百度地图js版定位控件
一 概述 百度地图在最新版已加入浏览器定位控件,个人认为应该是既高德地图更新了一个浏览器也能定位功能后,百度不甘落后自己简简单单,草草写了个这个功能的定位控件 GeolocationControl 这 ...
- 编写在浏览器中不弹出警告的ActiveX控件
我们在编写ActiveX控件时,如果用在浏览器中,经常都会弹出现在运行的脚本不安全的提示, 如果给客户使用,将会带来极大不便.按照MSDN的介绍通常有两种一种是实现IObjectSafe接口,一种是通 ...
- OCX控件在IE中无法侦测到键盘消息( MFC ActiveX Control in IE Doesn't Detect Keystrokes)
症状描述: Accelerator keys, such as ARROW keys, are first received by the message pump of the ActiveX co ...
- 【Demo 0004】Java基础-类封装性
本章学习要点: 1. Java封装特性; 2. 掌握类的定义: 3. 掌握类的调用方法; 一.封装特性 Java 纯面向对象语言,面向对象语言遵 ...
- discuz!代码内置颜色大全(收藏)
加闪烁字:[light]文字[/light] 加文字特效:[shadow=255,red,2]文字[/shadow]: 在标签的中间插入文字可以实现文字阴影特效,shadow内属性依次为宽度.颜色和边 ...
- 打开asp出现An error occurred on the server when processing the URL
分享到: 2013-01-21 15:38 提问者采纳 方法一 以管理员身份运行CMD,将目录定位到%windir%\system32\inetsrv\,然后执行appcmd set co ...
- NumPy简明教程
源地址:http://blog.csdn.net/sunny2038/article/details/9002531 http://blog.csdn.net/sunny2038/article/de ...
- Latin1的所有字符编码
ISO-8859-1 (ISO Latin 1) Character Encoding Contents The characters at a glance Character codes and ...
- 如何开发auto complete 智能提示功能
目录(?)[+] 如何开发auto complete 智能提示功能 最近网上好像流传用redis实现,其实智能提示和用什么存储关系不大 07年,我过一个类似的项目 我有几千个名字,随着用户在输入框中不 ...