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 Framework的Role-based安全特性构建,.Net Framework允许你在System.Security.Principal命名空间创建如下2个相关的对象:Identity和Principal。通过 Principal 对象可以发现主体的标识或角色,该对象包含对 Identity 对象的引用。
IIdentity 接口定义用于访问名称和身份验证类型(如 Kerberos V5 或 NTLM)的属性。所有 Identity 类均实现 IIdentity 接口。
IPrincipal 定义一个属性和一种方法,前者用于访问关联的 Identity 对象,而后者用于确定 Principal 对象所标识的用户是否为给定角色的成员。所有 Principal 类都实现 IPrincipal 接口以及任何必需的附加属性和方法。
通过使用上述2个相关的对象,.Net Framework可以让你分离认证和授权功能。
Security配置文件
通过Configuration Console配置管理工具来配置Security Application Block配置文件,一般情况需要分别设置Authentication、Authorization、Profile、Roles和Security Cache等提供程序(Provider)。
(1)配置Authentication Provider
可以选择Database Authentication Provider,同时Data Access Application Block和Cryptography Application Block会自动加入到Configuration Console配置界面中。
下面分别设置Data Access Application Block和Cryptography Application Block的属性:
设置Data Access Application Block的相关属性,如Connection String、Database Instance和Database Type等等,如下图所示:
Cryptography Application Block的相关属性,如Hash Provider和Symmetric Provider等。因为需要设置Security Application Block中Authentication Provider的HashProvider属性(该Provider用来散列凭据密码),因此这里为Cryptography Application Block添加一个Hash Provider,并设置Hash Provider相应的属性为:
AlgorithmType: System.Security.Cryptography.SHA1Managed, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b
Name: sha1
SaltEnabled: False
然后开始设置Security Application Block的Authentication Provider属性,如下图所示:
(2)配置Authorization Provider
Authorization Provider可以设置AzManProvider或Authorization Rule Provider。这里分别添加一个AzManProvider和Authorization Rule Provider。
对AzManProvider而言,需要设置Name, Application, AuditIdentifierPrefix, Scope, and Store Location等属性。
对Authorization Rule Provider而言,需要增加新的Rule,并进一步使用规则表达式编辑器(Rule Expression Editor)定义和命名Rule。如下图定义一个新的Rule:Hire Employee
(3)配置Profile Provider
Profile Provider可以为Profile Database Provider或Custom Profile Provider,这里选择创建Profile Database Provider,并设置Database和Name属性。
(4)配置Role Provider
Role Provider可以为Active Directory Provider、Role Database Provider或Custom Roles Provider等,这里分别创建Active Directory Provider和Role Database Provider,并设置相应的属性。
(5)配置Security Cache Provider
Security Cache Provider有Caching Store Provider和Custom Cache Provider二个选项,这里选择创建Caching Store Provider。同时,一个新的Caching Application Block会添加到Configuration Console配置工具内。
在Caching Application Block中Cache Manager节点新增加一个Custom Cache Storage,并设置相应的属性:
Name: Null Storage
Type: Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=
然后,设置Security Application Block中Security Cache节点下Caching Store Provider的相关属性:
AbsoluteExpiration: 60
CacheManager: Default Cache Manager(上一步创建的Custom Cache Manager)
Name: Caching Store Provider
SlindingExpiration: 10
最后,别忘了设置Security Application Block的缺省Provider实例,如Authentication、Authorization、Profile、Roles和Security Cache。如下图所示:
***
具体如何在应用程序中调用Security Application Block,可以参考Enterprise Library中附带的Security Application Block QuickStart或随后的相关文章。
运行QuickStart应用程序
(1)运行如下SetUpQuickStartsDB.bat文件或者菜单项Setup QuickStart Database。
C:\Program Files\Microsoft
SetUpQuickStartsDB.bat负责在EntLibQuickStarts数据库内创建Security QuickStart应用程序所必须的数据表和存储过程对象,如果EntLibQuickStarts数据库不存在,上述SQL脚本也负责创建。
其实,SetUpQuickStartsDB.bat是通过调用如下SecurityQuickStartsDb.sql文件来完成。
C:\Program Files\Microsoft
(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