广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何生成JWT
  • 142
分享到

如何生成JWT

2024-04-02 19:04:59 142人浏览 安东尼
摘要

这篇文章主要讲解了“如何生成Jwt”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何生成JWT”吧!Nimbus 库在目前最新的spring Securit

这篇文章主要讲解了“如何生成Jwt”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何生成JWT”吧!

Nimbus 库

在目前最新的spring Security中默认使用了Nimbus的 JOSE 库nimbus-jose-jwt。这个库目前是 JOSE  最常用的类库之一,大部分的改造工作都是围绕这个库开展的。

改造的过程分享

流程上跟 Spring Security 实战干货大致是一样的。

加载证书

证书依然使用 keytool 生成 2048 长度的 RSA 密钥。

这里之前使用了比较“暴力”的方式直接读取 KeyStore 然后使用公私钥,本次将 KeyStore 加载的证书转变为 JOSE 规范中的  JWK(JSON WEB Key)。

JWT

JWT 在 Spring Security 中被定义为org.springframework.security.oauth3.jwt.Jwt对象,对于  JWT 的操作可以抽象为两个方面。

生成 JWT

首先就是生成 JWT。目前的 Spring Security 本身是不提供这个能力的,只有在孵化中的Spring Authorization  Server提供了生成 JWT 的抽象接口JwtEncoder:

@FunctionalInterface public interface JwtEncoder {    Jwt encode(JoseHeader headers, JwtClaimsSet claims) throws JwtEncodingException; }

JWT 的Header和Claims也被相应地抽象为JoseHeader和JwtClaimsSet。

于是我使用Nimbus对JwtEncoder进行了实现,其实是搬运了Spring Authorization  Server的实现。当然也不是原版照搬,只是保证了门面一致,这样后续如果这个项目成熟了之后我们就可以无缝兼容了。

解析 JWT

既然有JwtEncoder必然有JwtDecoder。这个在Spring Security OAuth3  Client中是提供实现的,同样对其稍微加以改造。另外这个解码器不但负责将 JWT 字符串解析为 JWT  对象,它还承担了校验功能,这里有一个委托校验器DelegatinGoAuth3TokenValidator,我们可以灵活定制来执行多个 JWT  校验策略。

Token 对

我们都知道通常 JWT 中的 Token  都是成对出现的。之前只是简单用一个类来封装了accessToken和refreshToken的字符串形态。这次使用了spring ecurity oauth3  core提供的OAuth3AccessTokenResponse:

public final class OAuth3AccessTokenResponse {     private OAuth3AccessToken accessToken;     private OAuth3RefreshToken refreshToken;     private Map<String, Object> additionalParameters; }

这个类表达的内容更加丰富和灵活。对应的 json:

{   "accessToken": {     "tokenValue": "eyJraWQiOiJmZWxvcmRjbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJhbGwiLCJhdWQiOiJyb290IiwiaXNzIjoiaHR0cHM6XC9cL2ZlbG9yZC5jbiIsInNjb3BlcyI6WyJST0xFX0FETUlOIiwiUk9MRV9BUFAiXSwiZXhwIjoxNjE2ODM4NTg4LCJpYXQiOjE2MTY4MzQ5ODgsImp0aSI6IjBiYTUwZjFhLTI0N2YtNDJlYi05NzZiLTkyZWM5NDg2YjA2MCJ9.dwUK4ZgqhalKWu5AA8ZqaHjD2WPerhiF8lmybZGAorbncWdfVk7iAKUdRZunUekZmab_FsVpwprWIQpqSLtp6tz28sI71gO2StEeye5Vv4JRZKys68q2LGOAqMVJnBisEl211b5ASHSlP1qleU_TDxO_rgems76ZFD-kc1KmyelsoiBhmT3aD2_A_3fUmH7mV0jnC0rHauzOpS0AWnuPJaXbGPqrWotkQ_oqly47jipfNsPl_PUY1urng1wSx4QyblS8UgK-n5wJABhSN550WlwNLuC10ZckbhE5gazM0mD86mA_Xepe7LY5rjGNvO-Cz9k44TaURnTdSBdyy_EOiQ",     "issuedAt": {       "epochSecond": 1616834988,       "nano": 891000000     },     "expiresAt": {       "epochSecond": 1616838588,       "nano": 891000000     },     "tokenType": {       "value": "Bearer"     },     "scopes": [       "ROLE_ADMIN",       "ROLE_APP"     ]   },   "refreshToken": {     "tokenValue": "eyJraWQiOiJmZWxvcmRjbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJhbGwiLCJhdWQiOiJyb290IiwiaXNzIjoiaHR0cHM6XC9cL2ZlbG9yZC5jbiIsInNjb3BlcyI6WyJST0xFX0FETUlOIiwiUk9MRV9BUFAiXSwiaWF0IjoxNjE2ODM0OTg4LCJqdGkiOiI3N2RhODk3NC0xMjM0LTQ5NzctOWU1MS1hOGY2NTdjMzA2NjAifQ.O9YYxkevkrTKE7GbK2R5LGphnJ9vd07yFSwPs2gEZ94ObPkIs1wJ5gvlNOIlni_BYMNO-nMB8TiX0w-RQSwo-sbVLqeUHqv6NEXXmPJiWVmXTFVJf2b6lqW5Re7clXGvkFMw14ptAF6cpThDEE5XF4eCI8CDKKPWqNxY-8NvokwIY3NMXB1ofuHHRqjMyVUwNjOv6eaTJFTwebPy6Saem9kvaL_X1v9Drok6azbg5DSP1zKnbVazTaOs4aBZd5Firib3r_BGXdaJWAgJKfpP61__muVdujgkppMVU8fC9pqfnb6IqEaAOIZ69lrezA1K0QFinOhGCC2YZFxFoLL-IQ",     "issuedAt": {       "epochSecond": 1616834988,       "nano": 891000000     },     "expiresAt": null   },   "additionalParameters": {} }

感谢各位的阅读,以上就是“如何生成JWT”的内容了,经过本文的学习后,相信大家对如何生成JWT这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何生成JWT

本文链接: https://www.lsjlt.com/news/83208.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何生成JWT
    这篇文章主要讲解了“如何生成JWT”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何生成JWT”吧!Nimbus 库在目前最新的Spring Securit...
    99+
    2022-10-19
  • thinkphp6 (JWT)token生成与解密
    安装 首先在框架中安装JWT:composer require firebase/php-jwt 安装后在tp框架中或者框架中的模块新建一个目录 目录里新建一个类文件 如: 以下是代码(写入新建的token类文件): ...
    99+
    2023-08-31
    php 开发语言
  • TP6 使用jwt生成token加密解密
    第一步,需要安装TP6框架,如果没有安装我给你一个composer composer create-project topthink/think tp 第二步,需要安装一个PHP的jwt插件,也使用composer composer req...
    99+
    2023-09-05
    php java 开发语言
  • 浅谈node使用jwt生成的token应该存在哪里
    答:通常存储在客户端里。 jwt 即 JSON Web Token,是一种认证协议,一般用来校验请求的身份信息和身份权限。 早上逛某乎的时候,遇到一位同学在问这个问题,很好奇jwt的...
    99+
    2022-11-12
  • SpringBoot-JWT生成Token和拦截器的使用(访问受限资源)
    目录1.什么是JWT2.JWT生成token2.1 添加依赖2.2 生成token2.3 使用拦截器解析token1.什么是JWT JWT官方的定义是:JSON Web令牌(JWT)...
    99+
    2022-11-13
  • 如何生成PDF
    这篇文章将为大家详细讲解有关如何生成PDF,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、后台生成PDFthinkphp利用MPDF插件示例代码:public ...
    99+
    2022-10-19
  • Go语言如何使用golang-jwt/jwt/v4进行JWT鉴权详解
    目录前言1.什么是JWT2.JWT的数据结构2.1 Header2.2 Payload2.3 Signature2.4 Base64URL3使用JWT安装生成Token总结前言 最近...
    99+
    2022-11-11
  • java如何生成jar
    将*.class文件压缩成一个文件交付给用户使用,那么这样的文件就称为jar文件。如果要想生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。此命令是随JDK一起安装的,直接在命令行中输入jar,即可看...
    99+
    2018-08-01
    java入门 java 生成 jar
  • powerdesigner如何生成sql
    本篇内容介绍了“powerdesigner如何生成sql”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!powerdesigner生成sql方...
    99+
    2023-07-05
  • JWT如何整合Springboot
    这篇文章将为大家详细讲解有关JWT如何整合Springboot,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.基于JWT认证1.1 认证流程首先,前端通过Web表单将自己的用户名和密码发送到后端的接口。...
    99+
    2023-06-21
  • nodejs如何实现jwt
    这篇文章主要介绍“nodejs如何实现jwt”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现jwt”文章能帮助大家解决问题。1.为什么需要会话管理我们用nodejs为前端或者其他服...
    99+
    2023-07-05
  • 如何生成csr文件
    如何生成csr文件CSR,Certificate Signing Request,是制作SSL 证书的必要步骤。一个 CSR 文件中描述了 SSL 证书持有人的信息(如个人姓名或公司名称)、联系地址等,用于验证 SSL 证书和域名是同一个人...
    99+
    2023-06-04
  • matlab如何生成图像
    这篇文章主要介绍“matlab如何生成图像”,在日常操作中,相信很多人在matlab如何生成图像问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”matlab如何生成图像”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-04
  • github如何生成地址
    GitHub是全球最大的开源代码托管平台,许多开发者在GitHub上分享了自己的代码,让整个开发社区受益。使用GitHub的过程中,掌握如何生成GitHub地址非常重要。GitHub的每个项目都有一个独特的Web地址,在生成这个地址之前,你...
    99+
    2023-10-22
  • navicat如何生成er图
    这篇文章主要介绍了navicat如何生成er图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Navicat软件真是一个好东西。今天需要分析一...
    99+
    2022-10-18
  • vue如何生成标签
    在vue中生成标签的方法:1.新建vue.js项目;2.在项目中添加button按钮,并绑定@click事件;3.初始化data;4.使用this.itemArr.push方法生成标签;具体步骤如下:首先,在vue-cli中创建一个vue....
    99+
    2022-10-03
  • 如何生成ssl证书
    生成ssl证书的方法利用在线CSR生成工具,生成CSR文件。将CSR提交到证书服务商。当收到您的订单和CSR后,如果是域名验证型证书,在域名验证之后即可颁发证书。若是其他类型的证书需要通过CA机构进行验证之后才可颁发。...
    99+
    2022-10-06
  • word如何生成目录
    这篇文章主要介绍“word如何生成目录”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“word如何生成目录”文章能帮助大家解决问题。word生成目录的方法:首先打开你的Word文档,并进入或者输入一些...
    99+
    2023-07-01
  • 二维码如何生成
    小编给大家分享一下二维码如何生成,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设...
    99+
    2023-06-17
  • PHP中token如何生成
    这篇文章主要为大家展示了“PHP中token如何生成”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP中token如何生成”这篇文章吧。php token的生成接口特点汇总:因为是非开放性的,...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作