Claim表示一个声明单元,它用来组成ClaimsIdentity。ClaimsIdentity表示一个证件,例如身份证,身份证上面的名字表示一个Claim,身份证号也表示一个Claim,所有这些Claim组成身份证,即ClaimsIdentity。一个人不止有一个能够表示身份的东西,还有驾驶证、户口本等等,这些都是一个一个的CLaimsIdentity,而我们人本身是一个ClaimsPrincipal。用程序来表示就是:

  1. Claim nameClaim = new Claim(ClaimTypes.Name, "pangjianxin");
  2. Claim idClaim = new Claim(ClaimTypes.Sid, "1502xxxxxxxxxx");
  3. Claim genderClaim = new Claim(ClaimTypes.Gender, "female");
  4. Claim countryClaim = new Claim(ClaimTypes.Country, "china");
  5. //....省略身份证上面的其他要素....
  6. ClaimsIdentity id = new ClaimsIdentity("身份证");
  7. id.AddClaim(nameClaim);
  8. id.AddClaim(idClaim);
  9. id.AddClaim(genderClaim);
  10. id.AddClaim(countryClaim);
  11. 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>的东西来进行注入配置。很灵活哦。这只是冰山一角,要吧这个故事全部讲述完,需要太长的时间和精力了。有时间再进行补充。

claim、claimsidentity、claimsprincipal的更多相关文章

  1. Scheme、Claim、ClaimsIdentity、ClaimsPrincipal介绍

    在 token 创建.校验的整个生命周期中,都涉及到了  Scheme.Claim.ClaimsIdentity.ClaimsPrincipal 这些概念,如果你之前有使用过微软的 Identity ...

  2. Identity入门1:Claims、ClaimsIdentity、ClaimsPrincipal详解【转】

    在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OWIN的 ...

  3. asp.net core认证和授权的初始认识--claim、claimsidentity、claimsprincipal

    Claim表示一个声明单元,它用来组成ClaimsIdentity.ClaimsIdentity表示一个证件,例如身份证,身份证上面的名字表示一个Claim,身份证号也表示一个Claim,所有这些Cl ...

  4. ASP.NET Core Identity Hands On(2)——注册、登录、Claim

    上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...

  5. ASP.NET Core Identity 实战(2)——注册、登录、Claim

    上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...

  6. 【windows 访问控制】十、词汇列表和对应C#类、枚举、命名空间

    principals:主体 主体包含标识(identity 对用来来说就是用户名,对程序来说就是SID)和用户角色(role 对用户来说就是 组名 对程序来说就是组SID)subject:主体.主语i ...

  7. ASP.NET没有魔法——ASP.NET OAuth、jwt、OpenID Connect

    上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与Jwt以及OpenID Connect之间的关系与区别. 本文主要内 ...

  8. IdentityServer4之Clients、Scopes、Claims与Token关联

    IdentityServer4之Clients.Scopes.Claims与Token关联 参考 官方文档:client.identity_resource.api_resource:三类配置项介绍描 ...

  9. ASP.NET OAuth、jwt、OpenID Connect

    ASP.NET OAuth.jwt.OpenID Connect 上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与J ...

随机推荐

  1. 利用ionic3进行上一行和左一行不动,中间移动的功能

    首先在html中的写法是 <ion-header> <ion-navbar> <ion-title>历史数据</ion-title> </ion- ...

  2. Request库的安装与使用

    Request库的安装与使用 安装 pip install reqeusts Requests库的7个主要使用方法 requests.request() 构造一个请求,支撑以下各方法的基础方法 req ...

  3. 兄弟连 企业shell笔试题 16-31

    企业实践题16:企业案例:写网络服务独立进程模式下rsync的系统启动脚本 例如:/etc/init.d/rsyncd{start|stop|restart} .要求:1.要使用系统函数库技巧.2.要 ...

  4. drf序列化大总结

    目录 一.APIView的请求生命周期 二.序列化组件 视图类中使用序列化 Meta配置类中的配置 自定义校验规则 入库方法 自定义字段 如果有群改操作 重(难)点 三.视图家族 四.路由组件 五.权 ...

  5. vue路由+vue-cli实现tab切换

    第一步:搭建环境 安装vue-cli cnpm install -g vue-cli安装vue-router cnpm install -g vue-router使用vue-cli初始化项目 vue ...

  6. PMP--2.2 效益管理计划

    一.文件背景概述 ​​​1. 所需文件/数据 制定效益管理计划需要使用商业论证和需求评估中的数据和信息,例如,成本效益分析数据. 成本效益分析数据是在商业论证和需求评估中得到的,在成本效益分析中已经把 ...

  7. jmeter-json提取器提取的内容含”引号

    这时如果直接赋值会报错  解决方法: 1.用vars.get("Object")提取变量的值 2.用代码提取,最后把提取到的Object或Array转为String

  8. 浅析 .NET 中 AsyncLocal 的实现原理

    目录 前言 1.线程本地存储 2.AsyncLocal 实现 2.1.主体 AsyncLocal<T> 2.2.AsyncLocal<T> 在 ExecutionContext ...

  9. HTML连载67-手风琴效果、2D转换模块

    一.手风琴效果 <style> *{ margin:0; padding:0; } ul{ width: 960px; height: 300px; margin:100px auto; ...

  10. ext4文件系统启动自检的必要性

    最近我们发现多个用户设备掉电后重启,系统不工作. 研究这些返修设备,发现这些设备的表象是网络连接失败,DNS resolve不了.进一步发现/etc/resolv.conf为空,所以应用程序没法进行D ...