理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文

理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文

大家好,又见面了,我是全栈君。

这篇英文博文是 Andrew Lock 写的 Introduction to Authentication with ASP.NET Core 。

以下是简单的阅读笔记:

———————————–

ASP.NET Core 的验证模型是 claims-based authentication 。Claim 是对被验证主体特征的一种表述,比如:登录用户名是…,email是…,用户Id是…,其中的“登录用户名”,“email”,“用户Id”就是ClaimType。

You can think of claims as being a statement about…That statement consists of a name and a value.

对应现实中的事物,比如驾照,驾照中的“身份证号码:xxx”是一个claim,“姓名:xxx”是另一个claim。

一组claims构成了一个identity,具有这些claims的identity就是 ClaimsIdentity ,驾照就是一种ClaimsIdentity,可以把ClaimsIdentity理解为“证件”,驾照是一种证件,护照也是一种证件。

ClaimsIdentity的持有者就是 ClaimsPrincipal ,一个ClaimsPrincipal可以持有多个ClaimsIdentity,就比如一个人既持有驾照,又持有护照。

————————————

理解了Claim, ClaimsIdentity, ClaimsPrincipal这三个概念,就能理解生成登录Cookie为什么要用下面的代码?

var claimsIdentity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, loginName) }, "Basic");
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
await context.Authentication.SignInAsync(_cookieAuthOptions.AuthenticationScheme, claimsPrincipal);

要用Cookie代表一个通过验证的主体,必须包含Claim, ClaimsIdentity, ClaimsPrincipal这三个信息,以一个持有合法驾照的人做比方,ClaimsPrincipal就是持有证件的人,ClaimsIdentity就是证件,”Basic”就是证件类型(这里假设是驾照),Claim就是驾照中的信息。 

转载于:https://www.cnblogs.com/dudu/p/6367303.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108675.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无阻塞情况connect生产EINPROGRESS错[通俗易懂]

    无阻塞情况connect生产EINPROGRESS错[通俗易懂]今天的游戏开发client测试程序,非常多,因为出现client。后connect成功。代码证recv系统调用。后来发现,可能是由于socket默认模式被阻止,这将使很多client接处于链接却不能数据传输状态。后来改动socket为非堵塞模式,但在connect的时候,发现返回值为-1,刚開始以为是connect出现错误,但在server上看到了链接是ESTABLISED…

    2022年7月16日
    17
  • html5 sexteen,Teen Sex on the Rise in Guangzhou

    html5 sexteen,Teen Sex on the Rise in GuangzhouSexamongmiddleschoolstudentsmaybecontributingtogrowingsterilityproblemsamongyoungwomeninGuangzhou,thecapitalofsouthChina’sGuangdongProvince,saysaprominentlocaldoctor.Puppy…

    2022年5月10日
    44
  • docker部署mysql 实现远程连接[通俗易懂]

    1.dockersearchmysql查看mysql版本2.dockerpullmysql要选择starts最高的那个name进行下载3.dockerimages查看下载好的镜像4.启动mysql实例dockerrun–namedockermysql-p3307:3306-eMYSQL_ROOT_PASS…

    2022年4月11日
    47
  • 关于图像特征提取

     网上发现一篇不错的文章,是关于图像特征提取的,给自己做的项目有点类似,发出来供大家参考。      特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。特征的定义       至今为止特征没有万能和精确的定义。特征的精确定义往往

    2022年4月9日
    43
  • 【科普】显示器VGA、DVI、HDMI、DP等各种接口详细科普

    由于显示器接口十分众多,比如说VGA、DVI、HDMI、DP等等等等,而每个接口都有各种型号,很容易让小白绕晕,因此这里详细介绍一下各个接口以及接口的相关型号参数。

    2022年4月9日
    72
  • spark处理大数据的几个实例介绍

    spark处理大数据的几个实例介绍在集群中跑应用,而不是在shell中感受写spark应用的过程整个过程为:1、案例分析:要用哪些spark的RDD的API2、编程实现:用到scala,3、提交到集群执行:如何提交到集群,文件是否先传到HDFS上4、监控执行结果:通过web可以看到介绍了四个案例:比如统计1千万个人的平均身高,如果用其他语言,估计要好几小时,因为磁盘读写,要反复计算用了sp

    2022年6月7日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号