在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标识;

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
{
}
在Asp.net MVC中使用Authorization Manager (AzMan)进行Windows用户身份认证的更多相关文章
- (转)Asp.Net MVC中身份认证和授权
MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: < ...
- 转载 ASP.NET MVC中使用ASP.NET Identity
转载原地址: http://blog.jobbole.com/90695/ 在之前的文章中,我为大家介绍了OWIN和Katana,有了对它们的基本了解后,才能更好的去学习ASP.NET Identit ...
- [转]ASP.NET MVC中你必须知道的13个扩展点
本文转自:http://www.cnblogs.com/ejiyuan/archive/2010/03/09/1681442.html ScottGu在其最新的博文中推荐了Simone Chiaret ...
- Asp.net MVC中的ViewData与ViewBag
Asp.net MVC中的ViewData与ViewBag 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它 ...
- ASP.NET MVC中使用Ninject
ASP.NET MVC中使用Ninject 在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事 ...
- 在ASP.NET MVC中使用Castle Windsor
平常用Inject比较多,今天接触到了Castle Windsor.本篇就来体验其在ASP.NET MVC中的应用过程. Visual Studio 2012创建一个ASP.NET MVC 4网站. ...
- ASP.NET Identity系列02,在ASP.NET MVC中增删改查用户
本篇体验在ASP.NET MVC中使用ASP.NET Identity增删改查用户. 源码在这里:https://github.com/darrenji/UseIdentityCRUDUserInMV ...
- ASP.NET MVC中你必须知道的13个扩展点
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能 [转]
在 Asp.NET MVC 中使用 SignalR 实现推送功能 罗朝辉 ( http://blog.csdn.net/kesalin ) CC许可,转载请注明出处 一,简介 Signal 是微软支持 ...
随机推荐
- LeetCode——Jump Game
Description: Given an array of non-negative integers, you are initially positioned at the first inde ...
- python网络编程socket /socketserver
提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...
- [转]提高 Linux 上 socket 性能,加速网络应用程序的 4 种方法
原文链接:http://www.ibm.com/developerworks/cn/linux/l-hisock.html 使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在 ...
- 前端自动化工具 -- Gulp 使用简介
gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用 ...
- JavaScript基础概念
1.JavaScript在浏览器中是解释执行的: 2.JavaScript是一中弱类型的语言,在使用变量前,可以不用先申明: 3.JavaScript使用了对象对象程序设计思想: 4.JavaScri ...
- 组合数学 - 置换群的幂运算 --- poj CARDS (洗牌机)
CARDS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1448 Accepted: 773 Description ...
- java初始化构造函数调用顺序
类初始化时构造函数调用顺序: (1)初始化对象的存储空间为零或null值: (2)调用父类构造函数: (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式: (4)调用本身构造函数. 例子 ...
- ajax案例源码
html文件中demo2_index.html ---------------------------------------------------------------------------- ...
- 【GOF23设计模式】状态模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_状态模式.UML状态图.酒店系统房间状态.线程对象状态切换 package com.test.state; public ...
- [Tool] 使用Sublime Text开发Objective-C
[Tool] 使用Sublime Text开发Objective-C 前言 随着iPhone的热卖,开发iPhone APP所使用的Objective-C,也慢慢成为了热门的程序语言之一.本篇文章介绍 ...