Claims-based认证解析
Claims-based认证相关的两个重要的类ClaimsIdentity以及ClaimsPrincipal解析
ClaimsIdentity以及ClaimsPrincipal是.NET下Claims-based认证的主要基石他们继承了接口IIdentity和IPrincipal。
IIdentity封装用户信息
这个接口很简单,它只包含了三个最基本的用户身份信息。

IPrincipal 代表着一个安全上下文
这个安全上下文对象包含了上面的identity以及一些角色和组的信息,每一个线程都会关联一个Principal的对象,但是这个对象是属性进程或者AppDomain级别的。ASP.NET自带的 RoleProvider就是基于这个对象来实现的。
CalimsIdentity和ClaimsPrincipal
在System.Security.Claims命名空间下去,我们可以发现这两个对象。下面我们来做一个小例子,这个小例子会告诉我们这两个对象是如何进行认证和授权的。我们要做的demo很简单,建一个空的mvc站点,然后加上一个HomeController,和两个Action。并且给这个HomeController打上Authroize的标签,但是注意我们没有任何登录的代码,只有这个什么也没有的Controller和两个什么也没有的Action。

当然,结果也是可想而知的,我们得到了401页面,因为我们没有登录。

下面我们就来实现登录,这里的登录非常简单,我们手动去创建这个ClaimsIdentity和ClaimsPrincipal对象,然后将Principal对象指给当前的HttpContext.Current.User。

我们在Global.asax中添加了Application_AuthenticateRequest方法,也就是每次MVC要对用户进行认证的时候都会进到我们这个方法里面,然后我们就这样神奇的把用户给登录了。

当然,我们没有Home/Manager的访问权限,因为我们上面只给了用户Users的Role。 
这里要 注意 一下的是,我们没有设置IsAutheiticated为true,在.NET4.5以前,对于GenericIdentity只要设置它的Name的时候IsAutheiticated就自动设置为true了,而对于ClaimsIdentity是在它有了第一个Claim的时候。在.NET4.5以后,我们就可以灵活控制了,默认ClaimsIdentity的IsAutheiticated是false,只有当我们构造函数中指定Authentication Type,它才为true。
Claims-based认证解析的更多相关文章
- Claims Based Authentication and Token Based Authentication和WIF
		
基于声明的认证方式,其最大特性是可传递(一方面是由授信的Issuer,即claims持有方,发送到你的应用上,注意信任是单向的.例如QQ集成登录,登录成功后,QQ会向你的应用发送claims.另一方面 ...
 - EasyDarwin开源流媒体服务器支持basic基本认证和digest摘要认证解析
		
本文转自EasyDarwin开源团队成员ss的博客:http://blog.csdn.net/ss00_2012/article/details/52262621 RTSP认证作为RTSP标准协议的一 ...
 - drf三大认证解析
		
目录 三大认证 认证模块: 权限模块 频率模块 RABC author组件 认证权限六表. Content_type 认证与权限工作原理+自定义认证类 自定义权限类 admin关联自定义用户表 前后台 ...
 - [SharePoint 2010]关于基于声明(Claims)的用户认证模式
		
转:http://blog.csdn.net/zw_2011/article/details/7417132 SharePoint 2010在用户认证模式上,较之以前的版本有了非常大的改变.在Shar ...
 - Sharepoint学习笔记—习题系列--70-576习题解析 -(Q63-Q65)
		
Question 63You are designing a SharePoint 2010 implementation that will be used by a company with a ...
 - 使用Owin中间件搭建OAuth2.0认证授权服务器
		
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
 - [2014-11-11]使用Owin中间件搭建OAuth2.0认证授权服务器
		
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
 - 使用微服务架构思想,设计部署OAuth2.0授权认证框架
		
1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...
 - API代理网关和OAuth2.0授权认证框架
		
API代理网关和OAuth2.0授权认证框架 https://www.cnblogs.com/bluedoctor/p/8967951.html 1,授权认证与微服务架构 1.1,由不同团队合作引发的 ...
 
随机推荐
- SpringMVC3.2+Spring3.2+Mybatis3.1(SSM~Demo)
			
SpringMVC+Spring+Mybatis 框架搭建 整个Demo的视图结构: JAR: 下载地址:http://download.csdn.net/detail/li1669852599/85 ...
 - rails中 flash 和 flash.now的区别
			
Flash[:notice]’s message will persist to the next action and should be used when redirecting to anot ...
 - Django之模型系统
			
Django模型简介 Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中 Django 支持 sqlite3, MySQL, oracle,PostgreSQL等数 ...
 - Markdown编辑器-图形化
			
SELECT * from yffee_favourable_detail yfd LEFT JOIN yffee_favourable yf on yfd.minor_id = yf.major_i ...
 - 关于拓展jQuery功能插件的写法
			
有两种方法: 1.jQuery.fn.extend() 用于将一个对象的内容合并到jQuery的原型,以提供新的jQuery实例方法 例子: <span id="test"& ...
 - CentOS install搭建SVN服务器
			
安装步骤如下: 1.命令:yum install subversion 之后会打印很多消息,显示 Complete! 则完成. 2.查看 svn 版本:svnserve --version 3.创建S ...
 - spark集群搭建(java)未完待续
			
环境 操作系统:windows10 虚拟机工具:VMware14.1 NUX版本:Centos7.2(64) JDK:1.8(64) 一.安装linux,master(桥接模式上网),slave(na ...
 - js加载事件和js函数定义
			
一 dom文档树加载完之后执行一个函数 在Dom加载完成后执行函数,下面这三个的作用是一样的,window.onload 是JavaScript的,window.onload是在dom文档树加载完和 ...
 - 用fullPage来实现全屏滚动效果
			
[注意]所有的page要用div包裹,id为fullpage.不能直接包在body中 [使用fullpage的步骤] 1.导入 JQuery.js,fullpage.js,fullpage.css ...
 - ASP.NET jQuery 事件里调用后台方法
			
利用js 调用后台写的方法 <script src="js/jquery-1.7.1.min.js"></script> <script> $( ...