Authorization and Profile Application Block 1.0研究总结

** ** _ By Ben _



Authorization and Profile Application Block 1.0研究报告 ** ** ** **

** 1. ** 课题简介

利用 WindowsPrincipal 或 GenericPrincipal 可以实现验证授权 . 但权限只能分到角色 . 利用 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 ( 因为 Block 的 AzManProvider 需要 Authorization Manager [AzMan])

** 三大组件 ** :

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

  2. Microsoft.ApplicationBlocks.Common.dll 此 Block 的 Provider 定义层

  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 + SP 3A , .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 **

普通的 WindowsPrincipal 或 GenericPrincipal 实现不了复杂的业务 , 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 的逻辑之用 . 引用 Common 和 Security 项目

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

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

  1. 使用 XML

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

  1. 使用 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 Manager 的 MMC 上设置用户权限 ( 略 )

如附件中 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 < identitiesSupported >

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

< storeLocation > AzXmlProvider.xml < identitiesSupported >

< identityName > primaryIdentity

附件定义了两个 Authorization Provider: Microsoft.ApplicationBlocks.Security.Authorization.AzManProvider 和 Microsoft.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 来灵活实现用户的验证授权动
Published At
Categories with Web编程
Tagged with
comments powered by Disqus