.net core 之Claim


 

假设有这样一家动物园,这家动物园要门票,门票要从动物园门口的售票室买,购买后,能得到一张纸质的票据。纸很特殊,动物园验票能通过纸张来判断门票是不是真的,还能看出你有没有涂改门票。门票上还有时间,指示什么时候门票到期,只要门票没有到期,你就可以随意进出动物园

嗯,这么长个例子,其实和Claim没什么关系 :)

门票上有什么?我们来假设一下

门票上有,姓名,票价,性别,地址,【等等身份证一类的东东】

好了,我们假设的门票就这样,从门票的第二行(姓名...)开始,每一行都是一个Claim

有了上面的铺垫,我们接下来正式介绍下Claim

释义

Claim 本意有

  • vt.声称;索取;断言;需要
  • vi.提出要求
  • n.索赔;声称;(根据权利而提出的)要求;断言

断言是比较准确的释义,另外可以理解成声明,每一条claim 都代表了一条票据的信息,比如示例票据上的姓名等等。claim 的基本组成是 typevalue,上面票据中左侧的就是type右面就是value

在 .net core 基础类库中是含有Claim的实现类的,它的位置是

System.Security.Claims.Claim 

我们看一个真是的claim的例子

{
  "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } 

这个例子中含有3个claim

  • sub subject 主题,往往指Id
  • name 就是name
  • iat issue at 发出时间

这个例子中的 type 都是 JWT RFC中的标准jwt claim,上面这个例子是一个jwt票据的一部分,而在identity 中,默认使用的是cookie 身份认证,所以使用的不是 jwt 票据,而是加密cookie票据(identity没有这样定义,这样写是为了和jwt票据区分开),但是票据里面的内容,jwt和 加密cookie都是一样的都是——“claim

再回顾下 claim是什么? 就是一条一条的 type-value 键值对,里面存储了身份证明信息

而承载claim的东西就是票据,票据有很多种 jwt 和cookie 都是主流,不过应用场景不一样,by the way 票据的英文名称是“token” ,你需要记住它,后续的文章中,我们会学习如何同时使用支持移动后端验证(jwt token)以及仅仅使用 jwt token


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM