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秒

 

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值