首页 > 其他分享 >JWT的基本使用

JWT的基本使用

时间:2024-08-07 14:55:34浏览次数:9  
标签:基本 Web 令牌 自定义 JWT jwt 签名 使用

引言


在当今数字化时代,Web应用的安全性已成为开发者和企业关注的焦点。随着分布式系统和微服务架构的兴起,传统的会话管理认证方法,例如基于Cookie和session的会话,已经显示出了其局限性。
正是在这种背景下,JSON Web Tokens(JWT)作为一种轻量级、自包含的认证机制应运而生。JWT允许安全地在用户和服务器之间传递信息,由于其简洁和灵活性,迅速成为现代Web应用和移动应用中的流行选择。
本文将深入探讨JWT的核心概念、工作原理以及如何在实际开发中应用JWT。我们将分析JWT的优势,包括跨语言和平台的兼容性、无状态的可扩展性以及其内建的安全性。同时,我们也会讨论JWT在安全性、性能和易用性方面的挑战。
本篇文章的目标读者是有一定Web开发经验的开发者和架构师,他们希望在现有项目中实现或优化基于JWT的认证机制。通过对JWT的深入分析和实战演练,读者将获得必要的知识和工具,以构建更安全、更高效的Web应用。
在接下来的内容中,我们将首先介绍JWT的基本概念和组成部分,然后通过一个实际的案例来演示如何创建和使用JWT。我们还将讨论JWT的安全最佳实践,以及如何避免常见的陷阱和误区。
随着我们逐步深入,您将发现JWT不仅是一个强大的认证工具,更是一个能够提升应用性能和用户体验的利器。

一、JWT的定义和组成

JWT的三个主要部分:

Header(头部):主要是令牌类型和签名算法的(如HS256或RS256)。

Payload(负载):自定义的一些个人信息

Signature(签名):签名用于验证消息在传输过程中未被篡改,并且,对于使用私钥签名的令牌,还可以验证发送者的身份。签名是使用头部中指定的算法和密钥生成的。

二、上手实战

我们的背景是在springboot项目中的测试类中来演示

这是jwt的依赖

生成jwt的代码实现


    public void jwtgenerated(){

        //设置自定义信息
        Map<String,Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("username","admin");
        //生成jwt
        String jwt = Jwts.builder()
                .setClaims(claims)//自定义信息
                .signWith(SignatureAlgorithm.HS256, "admin")//设置签名
                .compact();
        System.out.println(jwt);

    }

运行结果得出jwt令牌如图下

把jwt令牌拿到官网上去解析,得出令牌的类型以及自定义的消息如图下

解析jwt的代码实现

public void jwtparsed(){
        Claims jwtparsed = Jwts.parser()
                .setSigningKey("admin")
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9.DoefybUuf8_d9YUkyhMAYbs3awq94mnRwW3wyaftTsI")
                .getBody();
        System.out.println(jwtparsed);

    }

运行结果得到了自定义消息

 设置有效时间

.setExpiration(new Date(System.currentTimeMillis()+60*1000))//设置过期时间60秒

 

标签:基本,Web,令牌,自定义,JWT,jwt,签名,使用
From: https://blog.csdn.net/qq_55482652/article/details/140989007

相关文章

  • 最火的十大 Chrome 插件:安装指南、功能介绍及使用技巧
    最火的十大Chrome插件:安装指南、功能介绍及使用技巧Chrome插件能够显著提升我们的浏览器体验,从提高生产力到增强隐私保护,功能多种多样。以下是当前国内最火的十大Chrome插件,我们将为你提供详细的安装指南、功能介绍及使用技巧,并附上可访问的使用文档链接。1.AdBlock......
  • 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认
    原文链接:https://www.cnblogs.com/wwssgg/p/17984105今天运行项目的时候出现了这个错误....查了一下解决的方法。 具体方案如下: 1、先确认安装IIS的时候有没有装Asp.Net,如果没安装的话,安装上即可。(XTHS:采用这步,就可以了!) 2、IIS采用了更安全的web.config管理机制,默......
  • 使用python读取mysql数据,并记录到本地的文件中
    上次写过一次读取sqlserver数据,写入本地文件。今天分享一下mysql的。原理相似,希望对大家有小小的帮忙PS,我是3.6.13版本python,上一版本用包mysql-connector,一直不成功,查询官方文档,发现这个版本的PYTHON简直是奇葩的存在了。基本所有版本都支持,就是几个小版本排除在外了。......
  • node.js 多版本管理 nvm的安装和使用
    #安装nvm#项目链接#https://github.com/nvm-sh/nvm#1、安装与更新使用curl或wgetcurl-o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh|bash#或wget-qO-https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh|bash#......
  • 【运维自动化-配置平台】如何使用云资源同步功能(腾讯云为例)
    云资源同步是通过apikey去单向同步云上的主机资源和云区域信息,目前支持腾讯云和亚马逊云。主要特性1、蓝鲸配置平台周期性的单向只读同步云主机和vpc(对应蓝鲸云区域)信息,第一次全量,后面增量2、默认同步到主机池,也可自定义主机池模块,需要手动分配到业务3、主机随云控制台销毁而......
  • wget使用
    wget使用常用方法1、下载单个文件wgethttp://URL2、将下载的文件重命名wgethttp://URL-Oname3、下载限速wget--limit-rage=128khttp://URL4、断点续传wget-chttp://URL5、后台下载wget-bhttp://URL6、指定UAwget--user-agent="myua"http:/URL7、......
  • OxyPlot使用说明
    锁定Y轴的缩放和移动在Axis坐标轴上设置IsZoomEnabled和IsPanEnabled为false。varrightAxis=newLinearAxis{Position=AxisPosition.Right,Title="RightYAxis",Key="RightYAxis",Minimum=-0.02,Maximum=1,IsZoomEnabled=......
  • 【Pyspark-驯化】一文搞懂Pyspark中的withColumnRenamed函数的使用技巧
    【Pyspark-驯化】一文搞懂Pyspark中的withColumnRenamed函数的使用技巧 本次修炼方法请往下查看......
  • 您知道Jmeter中Redirect Automatically 和 Follow Redirects的使用场景吗?
    相信很多使用过jmeter的同学都没有关注过请求中的RedirectAutomatically 和 FollowRedirects选项,如下图:在JMeter中,RedirectAutomatically 和 FollowRedirects 是与HTTP请求重定向相关的两个选项,它们之间是有很大区别的,本文就详细的说明二者的区别!RedirectAuto......
  • 程序设计部分 函数的递归 第4关:使用递归进行自动分析
    任务描述本关任务:计算逆波兰表达式的值。相关知识放苹果问题把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?注意:5,1,1和1,5,1是同一种分法。我们可以先假设有一个函数count(m,n)能告诉我们m个苹果放n个盘子有多少种放法,然后在此基础上进行......