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

Token的组成部分

一、头部

通常包含两部分信息:令牌类型和签名算法。

例如在 JWT 中,头部会指明这是一个 JWT(typ字段,值为JWT),并且说明所使用的签名算法(如alg字段,可能的值包括HS256RS256等)。

这部分内容是一个 JSON 对象(例如下方),然后会进行 Base64Url 编码,形成 token 的第一部分。

{"typ": "JWT", "alg": "HS256"}

二、载荷

包含了用户或其他实体相关的信息。这些信息可以分为标准声明和自定义声明。标准声明包括一些预定义的字段,如sub(代表主题,通常是用户 ID)、exp(过期时间)、iat(令牌发布时间)等。 

  • 例如,一个包含用户 ID 为12345,用户角色为admin,并且在2024 - 11 - 30T12:00:00Z过期的载荷信息,JSON 对象如下:
       {"sub": "12345","role": "admin","exp": 1701331200}

三、签名

签名是用于验证 token 的真实性和完整性的部分。它是通过对头部和载荷进行加密计算得到的。具体的计算方式取决于头部中指定的签名算法。如果是HS256算法(一种对称加密算法),则会使用一个密钥,将编码后的头部和载荷作为输入,通过 HMAC - SHA256 算法计算出签名。这个签名是 token 的第三部分。签名的存在确保了 token 在传输过程中没有被篡改,接收方可以使用相同的算法和密钥来验证签名的正确性。

得到签名后,整个 JWT 令牌就是header.payload.signature的格式,例如:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NSIsInJvbGUiOiJhZG1pbiIsImV4cCI6MTcwMTMzMTIwMH0.signed_signature(其中signed_signature是实际计算得到的签名部分)。

四、简单访问令牌示例

  • 标识符(Identifier)

    • 假设令牌标识符是token_abcdef
  • 权限范围(Scope)
    • 权限范围是["read", "write"],表示该令牌具有读取和写入权限。
  • 有效期(Validity Period)
    • 有效期从2024 - 10 - 01T00:00:00Z2024 - 10 - 31T23:59:59Z
  • 整个令牌可能在系统中以一个对象的形式存储或者传输,如下:
     {"identifier": "token_abcdef","scope": ["read", "write"],"validityPeriod": {"start": "2024 - 10 - 01T00:00:00Z","end": "2024 - 10 - 31T23:59:59Z"}}


http://www.mrgr.cn/news/57189.html

相关文章:

  • WPF基础权限系统
  • 运动监测网站毕设基于SpringBootSSM框架的计算机毕业设计
  • RabbitMQ进阶_可靠性
  • AgentSims的沙盒模拟,BitNet是什么?Agent S 多智能体又是什么?#AIGC知识库精选10月N3...
  • Data+AI下的云数仓未来已来!
  • 理解 React 中的 ReactElement、children 和 ReactNode
  • 基于Django的推荐系统、人脸识别登录、微信支付Demo、打卡门禁系统
  • vue3项目开发一些必备的内容,该安装安装,该创建创建
  • 错误0x80070522:客户端没有所需的特权
  • Docker容器间链路管理
  • 物理安全(Physical Security)
  • Vlan和Trunk
  • aeo认证需要什么材料
  • 字节跳动研究人员提出机器人大模型GR-2,具备世界建模和强大泛化能力
  • Java并发编程实战指南:JUC核心类、线程池、线程安全集合与死锁破解
  • HarmonyOS 模块化设计
  • 信息安全工程师(64)其他恶意代码分析与防护
  • Qt/C++学习系列之简单记录1
  • 华为鸿蒙 NEXT系统为什么这么火,招聘岗位有这些可以参考,由于贸易战,技术隔离,技术壁垒等原因,鸿蒙势必与IOS平风秋色!
  • 【Verilog】CRC-24
  • Windows系统PyCharm右键运行.sh文件
  • 海报在线制作系统小程序源码
  • QPainter抗锯齿设置
  • 动态规划之简单多状态 dp 问题(上)
  • 【Qt】控件——Qt多元素控件、常见的多元素控件、多元素控件的使用、List Widget、Table Widget、Tree Widget
  • socket套接字