Rickie Lee's blog

Welcome to my blog. I'm mainly involved in .Net platform and corresponding technologies. Thanks.

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  383 随笔 :: 3 文章 :: 1243 评论 :: 112 引用

Enterprise Library: Security Application Block概述

 

Written by: Rickie Lee (rickieleemail#yahoo.com)

My blog:http://www.cnblogs.com/rickie

Enterprise Library Security Application Block (v1.0)帮助开发人员在应用程序中实现通用的安全相关功能。应用程序可以使用该Application Block实现许多功能,如认证和授权、检索角色(Role)和Profile信息、缓存用户Profile信息等。

Security Application Block可以在如下情况帮助你实现相应功能:

l         认证(Authentication

l         授权(Authorization

l         角色管理(Role Management

l         Profile管理(Profile Management

l         缓存安全相关凭据(Caching Security Related Credentials

 

Role-based Security

Security Application Block基于.Net FrameworkRole-based安全特性构建,.Net Framework允许你在System.Security.Principal命名空间创建如下2个相关的对象:IdentityPrincipal。通过 Principal 对象可以发现主体的标识或角色,该对象包含对 Identity 对象的引用。
Enterprise_SecurityAB_IdentityPrincipal.JPG

IIdentity 接口定义用于访问名称和身份验证类型(如 Kerberos V5 NTLM)的属性。所有 Identity 类均实现 IIdentity 接口。

IPrincipal 定义一个属性和一种方法,前者用于访问关联的 Identity 对象,而后者用于确定 Principal 对象所标识的用户是否为给定角色的成员。所有 Principal 类都实现 IPrincipal 接口以及任何必需的附加属性和方法。

通过使用上述2个相关的对象,.Net Framework可以让你分离认证和授权功能。

 

Security配置文件

通过Configuration Console配置管理工具来配置Security Application Block配置文件,一般情况需要分别设置AuthenticationAuthorizationProfileRolesSecurity Cache等提供程序(Provider)。

1)配置Authentication Provider

可以选择Database Authentication Provider,同时Data Access Application BlockCryptography Application Block会自动加入到Configuration Console配置界面中。

Enterprise_SecurityAB_AuthenticationProvider1.JPG

下面分别设置Data Access Application BlockCryptography Application Block的属性:

设置Data Access Application Block的相关属性,如Connection StringDatabase InstanceDatabase Type等等,如下图所示:
Enterprise_SecurityAB_AuthenticationProvider2.JPG

 

Cryptography Application Block的相关属性,如Hash ProviderSymmetric Provider等。因为需要设置Security Application BlockAuthentication ProviderHashProvider属性(该Provider用来散列凭据密码),因此这里为Cryptography Application Block添加一个Hash Provider,并设置Hash Provider相应的属性为:

AlgorithmType: System.Security.Cryptography.SHA1Managed, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Name: sha1

SaltEnabled: False

 

然后开始设置Security Application BlockAuthentication Provider属性,如下图所示:

Enterprise_SecurityAB_AuthenticationProvider3.JPG

 

2)配置Authorization Provider

Authorization Provider可以设置AzManProviderAuthorization Rule Provider。这里分别添加一个AzManProviderAuthorization Rule Provider

AzManProvider而言,需要设置Name, Application, AuditIdentifierPrefix, Scope, and Store Location等属性。

Authorization Rule Provider而言,需要增加新的Rule,并进一步使用规则表达式编辑器(Rule Expression Editor)定义和命名Rule。如下图定义一个新的RuleHire Employee

Enterprise_SecurityAB_AuthenticationProvider4.JPG

 

3)配置Profile Provider

Profile Provider可以为Profile Database ProviderCustom Profile Provider,这里选择创建Profile Database Provider,并设置DatabaseName属性。

 

4)配置Role Provider

Role Provider可以为Active Directory ProviderRole Database ProviderCustom Roles Provider等,这里分别创建Active Directory ProviderRole Database Provider,并设置相应的属性。

 

5)配置Security Cache Provider

Security Cache ProviderCaching Store ProviderCustom Cache Provider二个选项,这里选择创建Caching Store Provider。同时,一个新的Caching Application Block会添加到Configuration Console配置工具内。

Caching Application BlockCache Manager节点新增加一个Custom Cache Storage,并设置相应的属性:

Name: Null Storage

Type: Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

 

然后,设置Security Application BlockSecurity Cache节点下Caching Store Provider的相关属性:

AbsoluteExpiration: 60

CacheManager: Default Cache Manager(上一步创建的Custom Cache Manager

Name: Caching Store Provider

SlindingExpiration: 10

 

最后,别忘了设置Security Application Block的缺省Provider实例,如AuthenticationAuthorizationProfileRolesSecurity Cache。如下图所示:
Enterprise_SecurityAB_DefaultProviderInstance.JPG

***

具体如何在应用程序中调用Security Application Block,可以参考Enterprise Library中附带的Security Application Block QuickStart或随后的相关文章。

 

运行QuickStart应用程序

1)运行如下SetUpQuickStartsDB.bat文件或者菜单项Setup QuickStart Database

C:\Program Files\Microsoft Enterprise Library\QuickStarts\Security\SetUpQuickStartsDB.bat

SetUpQuickStartsDB.bat负责在EntLibQuickStarts数据库内创建Security QuickStart应用程序所必须的数据表和存储过程对象,如果EntLibQuickStarts数据库不存在,上述SQL脚本也负责创建。

其实,SetUpQuickStartsDB.bat是通过调用如下SecurityQuickStartsDb.sql文件来完成。

C:\Program Files\Microsoft Enterprise Library\QuickStarts\Security\SecurityQuickStartsDb.sql

2)然后就可以运行测试Security QuickStart应用程序。

 

***

作者:Rickie Lee (rickieleemail#yahoo.com)

本文参考Microsoft Enterprise Library Security Application Block文档及其QuickStart

 

References:

1. Microsoft Enterprise Library: Security Application Block.

2. Rickie, Microsoft patterns & practices Enterprise Library January 2005 [中文稿], http://www.cnblogs.com/rickie/archive/2005/01/30/99443.html

3. Rickie, Enterprise Library released! http://www.cnblogs.com/rickie/archive/2005/01/29/99106.html

 

posted on 2005-02-21 03:19 Rickie 阅读(10586) 评论(15)  编辑 收藏 所属分类: E.Enterprise Library

评论

没有研究过微软.NET的权限部分,不知道是否有部门这个概念,如果没有,是否意味着微软这部分是鸡肋?
  回复  引用  查看    

#2楼  2005-02-21 09:14 progame      
如果要部门这个概念 可以看做是支持继承的RBAC模型
这个block中对AD的集成才是精华所在
  回复  引用  查看    

#3楼 [楼主] 2005-02-21 09:19 Rickie      
部门这个概念,其实相当于Group或Role,Security Application Block充分支持。
  回复  引用  查看    

#4楼 [楼主] 2005-02-21 09:23 Rickie      
另外补充一下,Enterprise Library系列Application Blocks提供了充分的扩展性及Source Code,可以满足企业开发的定制要求。

不过,在定制之前,最好是先了解该Application Blocks提供的相关功能。

  回复  引用  查看    

的确应该这样,我现在就在尝试把EL的功能都用到我的系统中
  回复  引用  查看    

#6楼  2005-02-21 10:35 笑望人生      
非常可惜的一点,就是它必须使用Sql Server数据库来存储用户和角色信息。我不得不对此进行比较大的重构,来支持我们使用的Ms Access数据库。
  回复  引用  查看    

估计正式版本会有支持,但从企业盈利角度,微软肯定首推MS SQL Server,毕竟系统会越来越大,MS ACCESS并发性等都很差。
  回复  引用  查看    

#8楼  2005-03-04 12:58 venjiang [未注册用户]
DNN和Rainbow中使用了Microsoft.ScalableHosting ,同样都是M$弄的,这两都者有何区别,楼主可以介绍一下嘛.

.NET 1.x Membership API and Microsoft.ScalableHosting
说明: http://blog.coryisakson.com/PermaLink,guid,dea4059d-42bf-4b8e-be27-d722987871c1.aspx
  回复  引用    

#9楼  2005-03-04 13:23 Rickie      
Sorry, I don't know Microsoft.ScalableHosting you mentioned.
*
Hope other guys can give some discription. Thanks.

  回复  引用  查看    

#10楼  2005-03-30 12:12 Jacky [未注册用户]
好文,支持!
  回复  引用    

#11楼  2005-06-07 14:49 edwinyeah [未注册用户]
我有两个问题想请教一下:
1、authorization provider信息是存储在.config文件中,那么,在c/s 程序中,岂不是很容易被不怀好意者修改?而且每一个client的.config是独立的,那么岂不是要为每一个client配置authorization provider信息?

2.感觉enterprise lib中的每一个quick start程序,第一次调用ent lib的方法时都是很慢的,随后的调用才变快,就连简单的configration block中的read xml demo都是这样。请问这是为什么?
  回复  引用    

#12楼  2005-07-21 18:53 jaron [未注册用户]
谁亲自做过例子,能不能发过我参考一下,我做的那个例子不能运行,不懂为什么?
或者谁有更详细中文文档,请给我一份,谢谢!
e-mail:jaronzhang@yahoo.com.cn
  回复  引用    

#13楼  2007-10-09 10:30 xuanfeng      
@progame

请问怎么让公共安全组件与AD集成?
  回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-02-21 03:59 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: