当前位置: 首页 > article >正文

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证2)

  根据参考文献8中的介绍,JWT Token主要分为3个部分:
  1)标题(Header):主要记录令牌类型、签名算法(加密算法)类型,格式为Json字符串,然后使用Base64编码字符串;
  2)有效负载(Payload):包括账号、姓名、颁发者等信息的声明集合,格式为Json字符串,然后使用Base64编码字符串。该部分为Token的关键内容,从中可以获取所用用户账号信息,但由于仅用Base64处理,没有什么安全性可言,最好不要在其中放置密码等敏感数据。参考文档8中将声明信息分为3类:已注册声明(参考文献10)、公共声明(参考文献9)、自定义声明(约定好的、在各个系统之间传递的数据);
  3)签名(Signature):该部分内容的产生方式是用标题中指定的加密算法,使用密钥对标题和有效负载加密或签名(如下图所示)。签名部分的数据起到防篡改的作用,只要密钥未泄露,接收JWT Token的一方根据标题和有效负载,使用相同的算法及密钥应该也能生成相同的签名(非对称算法应该是完成验签),只要和Token中的签名一致即表明Token未被篡改,是可信的。

在这里插入图片描述
  分析参考文献1-7,生成JWT Token主要使用Claim、SigningCredentials、JwtSecurityToken和JwtSecurityTokenHandler类:
  1)Claim:与之前基于Cookie、Session认证中的声明类一样,保存各类用户信息,Token中有效负载部分的主体内容即为Claim对象实例;
  2)SigningCredentials:加密类,该类的构造函数可以接收密钥及加密算法类型,以支持签名/验签操作;
  3)JwtSecurityToken:该类为Token的结构化数据类,如下图所示,通过该类可以设置Token中的有效负载、加密方式、过期时间等数据;
在这里插入图片描述
  4)JwtSecurityTokenHandler:该类的WriteToken函数基于JwtSecurityToken实例生成Token字符串。

  上一篇文章中的测试程序使用参考文献4的代码创建Token,将Token字符串放到参考文献8提供的Token解析页面,可以看到能正确的从Token中将标题和有效负载中的内容还原。
在这里插入图片描述
  找了个在线解析Base64字符串的页面,将Token中的有效负载内容解码,可以看到原始内容,因此最好不要在其中放置敏感内容,以防数据泄露。
在这里插入图片描述

参考文献:
[1]https://www.jianshu.com/p/a2804e72d296
[2]https://blog.csdn.net/sD7O95O/article/details/85043160
[3]https://www.cnblogs.com/qiongkangle/p/13347283.html
[4]https://www.cnblogs.com/xbhp/p/17401507.html
[5]https://www.cnblogs.com/superstar/p/16491428.html
[6]https://blog.csdn.net/weixin_44877917/article/details/140609294
[7]https://blog.csdn.net/qq_40287041/article/details/143368882
[8]https://jwt.io/introduction
[9]https://www.iana.org/assignments/jwt/jwt.xhtml
[10]https://tools.ietf.org/html/rfc7519#section-4.1


http://www.kler.cn/a/451097.html

相关文章:

  • TLDR:终端命令的简洁百科全书
  • MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
  • YOLO模型格式转换:pt -> onnx -> rknn
  • ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
  • web-密码安全口令
  • JavaScript中函数调用时的参数传递
  • 数据结构与算法易错问题总结
  • 云备份项目--工具类编写
  • Unity AVPro Video使用和WebGL播放视频流
  • 谷歌浏览器的网络安全检测工具介绍
  • 【Linux网络编程】第十三弹---构建HTTP响应与请求处理系统:从HttpResponse到HttpServer的实战
  • 【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)
  • 基于谱聚类的多模态多目标浣熊优化算法(MMOCOA-SC)求解ZDT1-ZDT4,ZDT6和工程应用--盘式制动器优化,MATLAB代码
  • vite + vue3 + tailwind 启动之后报错
  • 回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测
  • 【es6复习笔记】rest参数(7)
  • Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果
  • Java爬虫获取1688 item_search_img接口详细解析
  • openjdk17 从C++视角看 String的intern的jni方法JVM_InternString方法被gcc编译器连接
  • 【逆向篇】Web逆向WebPack结构分析
  • 阿里云 Java 后端一面,什么难度?
  • 第11周作业
  • 全国硕士研究生入学考试(考研)常识详解之分数构成:初试成绩、复试成绩及复录比
  • C++练习:图论的两种遍历方式
  • 无人直播源码
  • 管理面板Ajenti的在Windows10下Ubuntu24.04/Ubuntu22.04里的配置管理