理解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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 在国内怎么用netflix(netflix为什么在中国用不了)

    SpringClound和SpringBoot集成时Idea报错:Cannotresolveorg.springframework.cloud:spring-cloud-starter-netflix-eureka-server:unknown原因分析:找不到依赖的jar包查看配置的依赖SpringBoot的版本:2.0.7.RELEASESpringCloud的版本:Finchley.RC1它们不匹配造成异常解决方案:更改SpringCloud的版本为Finch

    2022年4月13日
  • java逻辑错误_java代码评审

    java逻辑错误_java代码评审测试文件:hello-jni/src/com/example/hellojni/HelloJni.java/***该文件来自AndroidNDKSample-HelloJni,为了便于说明问题,我作了一些修改。*/packagecom.example.hellojni;publicclassHelloJni{publicnativeStringstringFromJNI…

    2022年9月24日
  • 云存储要发展安全性和可用性问题需解决

    云存储要发展安全性和可用性问题需解决

    2022年3月6日
  • 使用Intellij Idea打包java为可执行jar包

    使用Intellij Idea打包java为可执行jar包自己在实际工作中的需要,使用Idea打包项目为可执行的jar包,网上找了好多文章但总是不成功,多次尝试后终于跑通,所以记录下来,希望可以帮助各位步骤:1.选中Java项目工程名称,在菜单中选择 File->projectstructure… (快捷键Ctrl+Alt+Shift+S)。2.在弹出的窗口中左侧选中”Artifacts”,点击”+”选择ja

    2022年6月17日
  • mac navicat premium15激活码【永久激活】[通俗易懂]

    (mac navicat premium15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
  • postgresql 14 服务器打不开的问题(5432服务器端口失败)

    postgresql 14 服务器打不开的问题(5432服务器端口失败)问题描述:(*注服务器端口默认5432,我的端口号是安装时自己改的)*注意:安装到语言选项时选择C而不是默认安装时的警告:postsql安装后步骤出现问题,安装可能未正确完成,启动数据库服务失败解决方案:打开服务找到postgresql-x64这个服务右键属性就的可以启动服务了psql控制台也可以正常进入了:…

    2022年6月19日

发表回复

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

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