.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Authorization and Profile Application Block 1.0研究总结

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 By Ben


Authorization and Profile Application Block 1.0研究报告

1.  课题简介

利用WindowsPrincipalGenericPrincipal可以实现验证授权. 但权限只能分到角色. 利用Authorization and Profile Application Block 1.0 不仅有效实现权限分配到角色, 更能分配到任务, 操作

2. 研究过程

2.1. 概述

Authorization and Profile Application Block是一个.net验证授权开发工具. 基于windows passport管理和NTLM 等实现用户验证授权.

利用AzMan实现很方便灵活地实现Authorization、可以随意定制profile内容方便开发使用、可以有多种profile数据存储介质……

运行Authorization and Profile Application Block对系统需求环境l:

1)        .NET Framework version 1.1

2)        数据存储(比如:profile数据使用Sql保存, 则需要Sql Server)

3)        Windows Server 2003 or Windows 2000 Server with Service Pack 4 (因为BlockAzManProvider需要Authorization Manager [AzMan])

三大组件:

1)                    Microsoft.ApplicationBlocks.Security.dll    Block的一些对象概念定义层

2)                    Microsoft.ApplicationBlocks.Common.dll   BlockProvider定义层

3)                   Microsoft.ApplicationBlocks.Security.Providers.dll  可以插入应用系统business层的Provider的逻辑层

安装Block

下载位置:http://www.microsoft.com/downloads/details.aspx?FamilyId=BA983AD5-E74F-4BE9-B146-9D2D2C6F8E81&displaylang=en

安装后运行 [安装位置] \Security\Database\Profile.sql 安装profile存储数据库(demo使用).

(过程略)

2.2.  研究环境

WinXP, SQL Server 2000 + SP3A, .Net

附件:   (点击下载Demo附件)     

DemoApp项目:  win应用项目

Microsoft.Interop.Security.AzRoles.dll: Authorization Manager

Common 项目:  Auth Pro 提供

Security/Security项目: Auth Pro提供

Security/Providers项目:  Auth Pro提供的Authorization Profile的处理器

2.3. 研究思路

1. 了解熟悉asp.net 一般验证授权的所有做法

2. 认识Authorization and Profile Application Block

3. 配置Authorization and Profile Application Block开发使用环境

4. 使用Block, 设计profile解决方案demo

5. 使用Block, 设计Authorization解决方案demo

6. 总结使用Block的使用和设计思想

 

2.4.  Block设计架构


也由此可知
Authorization Profile是基本独立管理的, 管理结构也基本相同.

Configuration:

可以保存到config文件里或其他介质

数据存储:

可以是sql, xml等介质

由架构图可以看出Block主要实现或提供了什么

 

1.     Extended Principal

普通的WindowsPrincipalGenericPrincipal实现不了复杂的业务, ExtendedPrincipal继承IPrincipal基础上还自定义了:

       Bool CheckAccess 根据是否有权限

       StringCollection GetRoles 获所有角色

      

2.     Authorization Provider Interface

提供IAuthorizationProvider:

       Initialize

       StringCollection GetRoles

       Bool CheckAccess

 

3.     Profile Provider Interface

提供 IProfileProvider:
Initialize
Object Create
IdentitiesSupported 

可选:

 è  IProfileReaderProvider
è  IProfileWriterProvider

 

2.5.Authorization 模块

2.5.1. 开发应用

è  在自定义的solution里加入Block提供的Common, Security两个Project

è  新建Providers项目, 用来处理Authorization的逻辑之用. 引用CommonSecurity项目

è  创建自定义的Provider class, 必须:Based on IAuthorizationProvider并实现它的三个方法

这里介绍使用XMLAzMan管理用户权限两种开发应用方法

1)        使用XML

如附件中Providers项目下的Authorization/AzXmlProvider.cs. 主要是CheckAccess 方法中根据当前用户的请求, AzXmlProvider.xml 对应配置位置检查用户是否有权限执行任务.

2)        使用AzMan

如果使用AzMan(windows 2003 administration tools/windows 2000 server sp4中自带的Authorization Manager), 则要引用Microsoft.Interop.Security.AzRoles.

方法简介:

1.       c:/windows/system32下找到azRoles.dll

2.       使用.net 1.1自带的tlbimp command line 工具将azroles.dll这个COM dll转换: tlnimp azroles.dll /out: Microsoft.Interop.Security.AzRoles.dll /namespace: Microsoft.Interop.Security.AzRoles

3.       Providers项目再引用Microsoft.Interop.Security.AzRoles.dll

4.       Authorization ManagerMMC上设置用户权限()

如附件中Providers项目下的Authorization/AzManProvider.cs. 实现IAuthorizationProvider 的三个方法都是调用AzMan的方法.

2.5.2. Configuration的设置

设置要引用的Provider

如附件的app.config:      

<authorizationProviders>

         <provider name="azmanProvider" type="Microsoft.ApplicationBlocks.Security.Authorization.AzManProvider, Microsoft.ApplicationBlocks.Security.Providers">

              <storeLocation>msxml://c:/AzMan.xml</storeLocation>

              <identitiesSupported>

                   <identityName>primaryIdentity</identityName>

              </identitiesSupported>

         </provider>

         <provider name="AzXmlProvider" type="Microsoft.ApplicationBlocks.Security.Authorization.AzXmlProvider, Microsoft.ApplicationBlocks.Security.Providers">

              <storeLocation>AzXmlProvider.xml</storeLocation>

              <identitiesSupported>

                   <identityName>primaryIdentity</identityName>

              </identitiesSupported>

         </provider>

</authorizationProviders>

 

附件定义了两个Authorization Provider: Microsoft.ApplicationBlocks.Security.Authorization.AzManProviderMicrosoft.ApplicationBlocks.Security.Authorization.AzXmlProvider标识名分别是azmanProvider, AzXmlProvider.

应用Provider, 见代码:

ExtendedPrincipal principal =      ExtendedPrincipal.Create(Thread.CurrentPrincipal.Identity);

             

principal.AuthorizationProvider =

     "azmanProvider"; // or AzXmlProvider;

 

2.6.    Profile模块

, 不重点介绍, 具体的请见附件DemoApp项目下的Form1.cs

3.总结

1)        Authorization and Profile Application Block 1.0提供了接口, 可以让我们自定义Provider 来灵活实现用户的验证授权动作.

2)        权限分配可以细分到operation, 而且用户权限完全基于Authorization Manager(XML等配置)来自由设置

3)        使用非常方便, 有效地提高验证授权的开发质量

 

4.  参考资料

序号

名称

来源

1

Help for Auth Pro AB 1.0

Block的安装目录

2

Designing Application-Managed Authorization.pdf

 

3

MS - Building Secure ASP.NET Applications.pdf

 

4

 

 

5

 

 

6

 

 




相关文章

相关软件