Enterprise Library: Security Application Block概述

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

 

原文地址:https://www.cnblogs.com/rickie/p/106636.html