• 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

     

  • 相关阅读:
    web服务器资源分类场景实践
    web服务器动静资源分离及负载均衡调制
    四层负载均衡
    集群中nginx服务的健康检查及负载均衡模板更新
    源码安装nginx及增加模块,nginx的秒级升级,秒级回滚
    phpadmin+redis实现图形化管理数据库笔记
    cookie和session
    移动硬盘修复工具哪个好?怎么修复教程
    硬盘 SMART 检测参数详解[转]
    磁盘显示为GPT(保护分区)
  • 原文地址:https://www.cnblogs.com/rickie/p/106636.html
Copyright © 2020-2023  润新知