asp.net core认证和授权的初始认识--claim、claimsidentity、claimsprincipal
Claim表示一个声明单元,它用来组成ClaimsIdentity。ClaimsIdentity表示一个证件,例如身份证,身份证上面的名字表示一个Claim,身份证号也表示一个Claim,所有这些Claim组成身份证,即ClaimsIdentity。一个人不止有一个能够表示身份的东西,还有驾驶证、户口本等等,这些都是一个一个的CLaimsIdentity,而我们人本身是一个ClaimsPrincipal。用程序来表示就是:
Claim nameClaim = new Claim(ClaimTypes.Name, "pangjianxin");
Claim idClaim = new Claim(ClaimTypes.Sid, "1502xxxxxxxxxx");
Claim genderClaim = new Claim(ClaimTypes.Gender, "female");
Claim countryClaim = new Claim(ClaimTypes.Country, "china");
//....省略身份证上面的其他要素....
ClaimsIdentity id = new ClaimsIdentity("身份证");
id.AddClaim(nameClaim);
id.AddClaim(idClaim);
id.AddClaim(genderClaim);
id.AddClaim(countryClaim);
ClaimsPrincipal principal = new ClaimsPrincipal(id);
上面的代码展现了一个身份主体的构造过程,但是这个身份主体构造完成之后如何保存到客户那里呢?要知道只有保存了这个信息,下次登陆网站的时候拿上这个东西才能访问到你该访问到的资源(Authorize)。在asp.net core中,会将上面的ClaimsPrincipal序列化成一个AuthenticationTicket。也就是一个票根,asp.net core会将这个票据发送给你,当然不是你,而是你的浏览器,浏览器会帮你妥善保管。然后,当你再次访问网站的时候,浏览器会自动带上这个票据(Cookie)去访问资源。AuthenticationTicket中有AuthenticationScheme,这个用来表示认证(Authentication)的方式(Scheme:方案)。比如我们现有的技术有Cookie认证,jwtbear认证、OATH2&openIdConnect等,Scheme作用就是找一个Handler,来实现最终的认证。这个Handler可能是CookieAuthenticationHandler、JwtbearerHandler等等。还有一个重要的东西是AuthenticationOptions,这个用来配置Scheme,并且使用option模式(具体来说,就是这样的:services.Configure(Action(options)))进行配置,然后到某一步需要这个option呢,就在构造函数中注入一个IOption<Toption>的东西来进行注入配置。很灵活哦。这只是冰山一角,要吧这个故事全部讲述完,需要太长的时间和精力了。有时间再进行补充。
asp.net core认证和授权的初始认识--claim、claimsidentity、claimsprincipal的更多相关文章
- ASP.NET Core Authentication系列(一)理解Claim, ClaimsIdentity, ClaimsPrincipal
前言 首先我们来看一下在ASP.NET时代,Authentication是如何使用的.下面介绍的是System.Web.Security.FormsAuthentication: // 登录 Syst ...
- ASP.NET Core 认证与授权[5]:初识授权
经过前面几章的姗姗学步,我们了解了在 ASP.NET Core 中是如何认证的,终于来到了授权阶段.在认证阶段我们通过用户令牌获取到用户的Claims,而授权便是对这些的Claims的验证,如:是否拥 ...
- ASP.NET Core 认证与授权[1]:初识认证
在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用.但是它很难进行扩展,更无法与第三方认证集成,因此,在 ASP.NET Cor ...
- ASP.NET Core 认证与授权[2]:Cookie认证
由于HTTP协议是无状态的,但对于认证来说,必然要通过一种机制来保存用户状态,而最常用,也最简单的就是Cookie了,它由浏览器自动保存并在发送请求时自动附加到请求头中.尽管在现代Web应用中,Coo ...
- ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?
在上一章中,详细介绍了 ASP.NET Core 中的授权策略,在需要授权时,只需要在对应的Controler或者Action上面打上[Authorize]特性,并指定要执行的策略名称即可,但是,授权 ...
- 聊聊 asp.net core 认证和授权
使用asp.net core 开发应用系统过程中,基本上都会涉及到用户身份的认证,及授权访问控制,因此了解认证和授权流程也相当重要,下面通过分析asp.net core 框架中的认证和授权的源码来分析 ...
- ASP.NET Core 认证与授权[7]:动态授权
ASP.NET Core 中基于策略的授权旨在分离授权与应用程序逻辑,它提供了灵活的策略定义模型,在一些权限固定的系统中,使用起来非常方便.但是,当要授权的资源无法预先确定,或需要将权限控制到每一个具 ...
- ASP.NET Core 认证与授权[3]:OAuth & OpenID Connect认证
在上一章中,我们了解到,Cookie认证是一种本地认证方式,通常认证与授权都在同一个服务中,也可以使用Cookie共享的方式分开部署,但局限性较大,而如今随着微服务的流行,更加偏向于将以前的单体应用拆 ...
- ASP.NET Core 认证与授权[4]:JwtBearer认证
在现代Web应用程序中,通常会使用Web, WebApp, NativeApp等多种呈现方式,而后端也由以前的Razor渲染HTML,转变为Stateless的RESTFulAPI,因此,我们需要一种 ...
随机推荐
- C# → 数据库
Database: public static class dbconnection{ static string cons = "data source = (local) ;initia ...
- jar包内的文件导出的注意点
1.截取文件名 windows 和linux 通用 String fp[] = filePath.replaceAll("\\\\","/").split(&q ...
- UVA10817-Headmaster's Headache(动态规划基础)
Problem UVA10817-Headmaster's Headache Time Limit: 4500 mSec Problem Description Input The input con ...
- 微信小程序PHP 微信支付接口调用
小程序端 /** * 微信支付接口 */ wxPaymoney:function (out_trade_no, true_money){ //out_trade_no 后台统一下单接口需要用 var ...
- Shell 文本处理三剑客之grep
grep ♦参数 -E,--extended-regexp 模式是扩展正则表达式 -i,--ignore-case 忽略大小写 -n,--line-number 打印行号 -v,--invert-ma ...
- ASM problem : ORA-15001: diskgroup "DGROUP1" does not exist or is not mounted ORA-15040: diskgroup is incomplete
============================================================= mos中的详细解释: ODA: After Apply ODA 12.2.1 ...
- Luogu4983 忘情
Luogu4983 忘情 定义序列 \(x_1,\ x_2,\ \cdots,\ x_n\) 的值为 \(\frac{((\displaystyle\sum_{k=1}^nx_k\times \bar ...
- netty简单样例
package com.example.demohystrix.process; import io.netty.bootstrap.ServerBootstrap; import io.netty. ...
- 在其他Activity中展示自定义相机拍的照片
在使用相机拍照中,我们需要当点击了确定按钮之后,拍的照片展示在其他Activity的ImageView中,代码如下: 1.首先在自定义相机的Activity中,处理点击拍照确定按钮后的逻辑功能:将图片 ...
- UITableView的编辑操作
继续上篇UITableView和UITableViewController, 打开BNRItemsViewController.m,在类扩展中添加如下属性: @property (nonatomic, ...