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.mzph.cn/pingmian/57404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九、pico+Unity交互开发——触碰抓取

一、VR交互的类型 Hover(悬停) 定义:发起交互的对象停留在可交互对象的交互区域。例如,当手触摸到物品表面(可交互区域)时,视为触发了Hover。 Grab(抓取) 概念&#xff…

京东笔试题

和谐敏感词 🔗 题目地址 🎉 模拟 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();String s scanner.next();String[] words new String[…

【毕业设计】基于SpringBoot的网上商城系统

前言 🔥本系统可以选作为毕业设计,运用了现在主流的SSM框架,采用Maven来帮助我们管理依赖,所选结构非常合适大学生所学的技术,非常合适作为大学的毕业设计,难以适中。 🔥采用技术:Sp…

vscode使用socks5代理ssh-remote

Host 192.168.x.x HostName 192.168.x.x User root Port 22 ProxyCommand C:\Program Files (x86)\Nmap\ncat.exe --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p

aeo认证需要什么材料

AEO(Authorized Economic Operator)认证,即经认证的经营者认证,是企业信用管理体系的一种高级认证。申请AEO认证时,企业需要准备一系列的材料以证明其符合认证标准。以下是一份详细的AEO认证申请材料清单: …

C++:模板(2)

目录 非类型模板参数 模板的特化 概念 函数模板特化 类模板特化 全特化 偏特化 模板的分离编译 分离编译的概念 模板的分离编译 ​编辑 模板总结 非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参:在模板参数列表中,跟在class…

linux更改系统时间

测试环境和生产环境代码完全一致,但是生产环境代码碰到了问题,报错类似time expired,猜测和系统时间有关系,修改之后确实好了。测试如下: 参考:centos7时间同步教程_centos7 时间同步,如果遇到…

HttpURLConnection构造请求体传文件

HttpURLConnection构造请求体传文件 在Java中,使用HttpURLConnection构造请求体传输文件,你需要做以下几步: 1、创建URL对象指向你想要请求的资源。 2、通过URL打开连接,转换为HttpURLConnection实例。 3、设置请求方法为POST。 …

深入解析JavaScript中的箭头函数及其在React中的应用(箭头函数与传统函数的区别、如何在不同上下文中使用箭头函数)

文章目录 1. 引言2. 箭头函数的定义与用法3. 箭头函数与传统函数的区别3.1 this绑定3.2 不能作为构造函数3.3 arguments对象 4. 如何在不同上下文中使用箭头函数4.1 在类方法中使用箭头函数4.2 在回调函数中使用箭头函数 5. 深入探讨箭头函数在React中的应用5.1 在事件处理器中…

JS之JSON.stringfy和JSON.parse

JSON.stringify 和 JSON.parse 是 JavaScript 中用于处理 JSON 数据的两个非常重要的方法。它们分别用于将 JavaScript 对象转换为 JSON 字符串,以及将 JSON 字符串解析为 JavaScript 对象。 JSON.stringify JSON.stringify 方法用于将一个 JavaScript 值&#xf…

架构演进史

软件架构是软件工程的基石,它不仅影响着系统的性能、可维护性和可扩展性,也直接关系到开发团队的效率和项目的成功。随着技术的不断发展和业务需求的变化,软件架构经历了多个阶段的演进。本文将详细探讨这些阶段及其背后的驱动因素。 1. 单体…

【Flutter】基础入门:自定义Widget

在 Flutter 开发中,除了使用丰富的内置 Widgets 构建界面外,自定义 Widget 是让你的应用更灵活和个性化的重要手段。Flutter 允许你根据需求自定义 StatelessWidget 和 StatefulWidget,以实现复杂的 UI 组件或功能模块。 本教程将通过实例讲…

GB/T28181-2022规范解读、应用场景和技术实现探究

GB/T28181-2022和GB/T28181-2016区别 GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》与 GB/T28181-2016 相比,主要有以下区别: 术语和定义方面: 术语删减:GB/T28181-2022 删除了 “联网系统信息”“数…

Win安装Redis

目录 1、下载 2、解压文件并修改名称 3、前台简单启动 4、将redis设置成服务后台启动 5、命令启停redis 6、配置文件设置 1、下载 【下载地址】 2、解压文件并修改名称 3、前台简单启动 redis-server.exe redis.windows.conf 4、将redis设置成服务后台启动 redis-server -…

pikachu靶场CSRF-post测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、抓包使用burp生成csrf脚本 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.1) 2、使用工具/软件 Burp sui…

java实现动态切换数据源的注解@DS

DS 注解通常用于多数据源的 Spring 项目中,主要作用是动态切换数据源。通过这个注解,你可以在运行时根据需求选择不同的数据库连接。 Mapper DS("master") public interface BaseDataCarrierExamineMapper {/*** 查询承运商考核** param id 承…

老机MicroServer Gen8再玩 OCP万兆光口+IT直通

手上有一台放了很久的GEN8微型服务器,放了很多年,具体什么时候买的我居然已经记不清了 只记得开始装修的时候搬家出去就没用了,结果搬出去有了第1个孩子,孩子小的时候也没时间折腾,等孩子大一点的时候,又有…

【去哪儿-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

RabbitMQ service is already present - only updating service parameters

Windows下卸载RabbitMQ之后,然后重新注册RabbitMQ服务的时候,报错以下信息: D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin>D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin\rabbitmq-service.bat install RabbitMQ service is already …

kafka自定义配置信息踩坑

org.apache.kafka.common.config.ConfigException: Invalid value 0 for configuration acks: Expected value to be a string, but it was a java.lang.Integer 场景描述: 单个kafka使用springboot框架自带的 yml 配置完全OK(因为底层会帮我们处理好类…