在Asp.net MVC中使用Authorization Manager (AzMan)进行Windows用户身份认证

背景

创建需要通过Windows用户进行身份认证的Asp.net MVC应用

要点

在Asp.net MVC应用基于Windows用户进行身份认证的方法有很多,如MVC自带的Windows认证就经常被用到。但AzMan(Authorization Manager)提供了在某些场合下相对更灵活多样,更易于维护的快速解决方案。

AzMan是在Microsoft提供的一套授权管理的组件,底层支持XML/AD/ADAM/SQLServer(Vista Only)的存储方式。

Authorization Manager的抽象逻辑结构由四类基本对象构成,分别为用户(Member)、角色(Role)、任务(Task)和操作(Operation):
用户 - 用户可以是一个有效的Windows系统账号、AD/ADAM中定义的账号,也可以是完全由应用系统管理和分配的第三方账号;一个用户可以赋予多个角色权限;
角色 - 角色是一组任务和操作的抽象集合,每个角色可以包含一到多个的任务和操作,另外,也可以包含其它角色,形成“角色组”式的灵活再组合;
任务 - 任务是一组操作的抽象集合,每个任务可以包含一到多个的操作,另外,也可以包含其它任务,构成灵活的任务叠加组合;
操作 - 操作代表系统中的最小功能单位,不可再拆分,也不能再包含其他操作,每个操作都包含一个应用域内唯一的ID标识;

步骤
 
Step 1. 安装AzMan
 
在Windows 2003及更高版本的Windows中,系统会默认包含AzMan。微软这篇文档详细介绍如何在必要时在不同的Windows下安装AzMan:  http://msdn.microsoft.com/en-us/library/ff649313.aspx
 
Sep 2. 创建AzMan授权管理库
 
2.1 运行命令行azman.msc
 
2.2 打开Authorization Manager界面

2.3 默认AzMan处于管理员模式,如需要创建新的授权管理库,需要切换到开发者模式。在主菜单中选择[操作]-[选项...]

2.4 弹出对话框中选择开发者模式,[确定]

2.5 新建策略库:[操作] - [新授权管理库...]

2.6 选择相应选项,本例中选择XML文件格式。 Schema V2.0,需要指定库文件所在路径及文件名

2.7 新库创建完成,界面类似下图所示:

2.8 创建新的应用程序:鼠标右键点击新建的库文件,弹出菜单中选择[新应用程序...]

2.9 输入应用程序名字

2.10 新应用程序创建完成

3. 创建角色

3.1 在[定义] - [角色]节点下右击鼠标,弹出菜单中选择[新角色定义...],在弹出菜单中填写角色名称等相应信息

 

 

3.2 依次建立所有所需的角色: Admin, User, NoAccess

3.3 角色分配节点右击鼠标,选择[新的角色分配...]

3.3 勾选刚刚创建的角色,[确定]

3.4 相应角色处点右键,[分配用户和用户组] - [从Windows和活动目录...]

3.5 以此添加Windows用户或用户组至对应的角色

4. 配置Windows MVC项目

4.1 启动Visual Studio,新建一个Asp.net MVC项目

4.2 复制创建好的库文件之MVC项目目录下的App_Data目录。如果MVC项目事先已经创建,可以在创建AzMan库文件时直接指定到App_Data目录下,这样其实更方便

4.2 创建Class: AuthorisationRoles.cs,内容如下:

        public const string SuperAdmin = "SuperAdmin";
        public const string User = "User";
        public const string NoAccess = "NoAccess";

 4.3 添加ConnectionString至web.config,定义到库文件的连接

  <connectionStrings>
    <add name="LocalPolicyStore" connectionString="msxml://~/App_Data/Authorization.xml"/>
  </connectionStrings>

 4.4 添加RoleManager定义到web.config文件system.web节点下

    <roleManager
      enabled="true"
      cacheRolesInCookie="true"
      defaultProvider="RoleManagerAzManProvider"
      cookieName=".DemoApplication"
      cookiePath="/"
      cookieTimeout="30"
      cookieRequireSSL="true"
      cookieSlidingExpiration="true"
      createPersistentCookie="false"
      cookieProtection="All">
      <providers>
        <add name="RoleManagerAzManProvider"
                type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=2.0.0.0, 
                    Culture=neutral, publicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="LocalPolicyStore"
                applicationName="DemoApplication"/>
      </providers>
    </roleManager>

 5. 在MVC中进行角色认证。在需要限定访问权限的类或方法前用Authoize修饰,如下所示

    [Authorize(Roles=AuthorisationRoles.SuperAdmin + "," + AuthorisationRoles.User)]
    public class HomeController : Controller
    {
    }

 

心得
 
实际应用中发现AzMan的确在特定场景下可以大大加快开发速度,降低维护成本。因为AzMan是已经封装好了最常用到的基于角色/任务/操作的权限分配和管理工具,Asp.net可以直接调用,因此加快了开发速度。如应用程序使用的环境经常需要针对特定用户的权限变更(增删改),AzMan.msc可以快速地完成所需操作,因此降低了维护成本
 
因本例中使用的是基于文件存储的库,因此第一次发布MVC应用需同时发布该库文件(App_Data文件夹下)。但之后可能对权限的维护是针对已发布的线上库文件进行,所以后续发布要小心不要用开发测试的库文件覆盖线上的库文件,在对线上库文件进行修改前,适当备份也可降低风险。
 

转载于:https://www.cnblogs.com/heuyang/p/4977251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC with Entity Framework and CSS by Lee Naylor 2016 | ISBN: 1484221362 | English | 608 pages | True PDF | 30 MB This book will teach readers how to build and deploy a fully working example retail website using Microsoft ASP.NET MVC and Entity Framework technologies and recommendations. This book contains several solutions to real world issues that developers will frequently encounter. Whether you are a novice developer or an experienced .NET developer wishing to learn more about MVC and Entity Framework, author Lee Naylor will teach you how to develop a detailed database driven example website using Microsoft ASP.NET and Entity Framework Code First with fully explained code examples including: • Filtering and Searching Related Data using Linq • Using code first migrations to automatically update the database plus seeding data from code • How to use Visual Studio Scaffolding views and controllers • Manage CRUD operations including model binding as recommended by Microsoft and dealing with cascading deletions correctly • Input and data validation using Attributes • Sorting and paging through data and routing for friendly URL formats • Authorization and Authentication using Microsoft Identity v2 by making use of Microsoft example code including correct use of redirection after login and registration • Advanced techniques including managing data concurrency conflicts and using two database contexts • Asynchronous database access and paging • Azure deployment using Code First Migrations, remote debugging and viewing/editing your remote data • CSS Styling including animation and media queries What You Will Learn: • Get up and running quickly with ASP.NET MVC and Entity Framework building a complex web site to display and manage several related entities • How to integrate Identity code into a project • Advanced topics including: Asynchronous database access and managing data conflicts • Working with Microsoft Azure including remote debugging and database access • CSS skills including animations and media queries for use with tablet or mobile/cell phone devices Who This Book Is For: People wanting to learn ASP.NET MVC and Entity Framework ranging from novice developers new to the subject through to more experienced ASP.NET web forms developers looking to migrate from web forms to MVC and Entity Framework. The book assumes some programming knowledge such as object-oriented programming concepts and a basic knowledge of C#.
之前在一家公司里用过Knockout,是easyui 和 Knockout结合 的。下面的这本应该不错。 目录 前言 第一部分入门指南 第1章MVC介绍 创建第一个项目 分析HomeController 分析View 理解URL结构 小结 第2章Bootstrap介绍 默认菜单 含有下拉列表和搜索框的菜单 按钮 警告框 主题 小结 第3章Knockout.js介绍 安装Knockout.js 基本示例 何为MVVM? 创建ViewModel 小结 第4章数据库应用 Entity Framework介绍 Code First Database First 创建测试数据 小结 第二部分数据处理 第5章表的查询、排序、分页 Author查询 Author排序 Author分页 小结 第6章表单处理 在表单集成Knockout 共享View和ViewModel 在模态框进行删除操作 空表格 小结 第7章服务器端ViewModel 为什么要创建服务器端ViewModel? AuthorViewModel 更新Authors列表 更新Add/Edit表单 更新Delete模态框 小结 第8章Web API介绍 安装Web API 更新Authors列表 更新Authors的Add/Edit表单 小结 第三部分代码架构 第9章创建全局过滤器 Authentication过滤器 Authorization过滤器 Action过滤器 Result过滤器 Exception过滤器 Web API全局验证 用Result过滤器进行自动映射 Web API错误处理 MVC错误处理 小结 第10章添加验证与授权 Authentication概述 Authorization概述 实现一个Authentication过滤器 实现一个Authorization过滤器 小结 第11章使用Attribute定义URL路由 Attribute路由基础知识 路由前缀 路由约束 小结 第12章胖模型、瘦控制器 关注点分离 服务与行为 小结 第四部分应用实例 第13章构建购物车 购物车需求 购物车项目 JavaScript捆绑与最小化 小结 第14章构建数据模型 Code—First模型 定义DbContext并初始化数据 视图模型 小结 第15章布局实现 共享布局 购物车摘要 分类菜单 小结 第16章图书列表 主页 特色图书 按分类筛选图书 小结 第17章添加购物车 图书详情 自定义组件和自定义绑定 保存购物车项 小结 第18章更新或删除购物车 购物车详情 购物车详情上的Knockout应用 完成购物车

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值