首页 > 其他分享 >JWT令牌

JWT令牌

时间:2024-07-08 11:20:18浏览次数:12  
标签:令牌 验证 JWT System token claims

首先在pom.xml引入依赖

<!--jwt坐标-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>4.4.0</version>
        </dependency>

引入测试类

        <!--单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

测试类代码

生成JWT令牌测试类代码

@Test //生成jwt令牌
    public void testGen(){
        // 初始化一个Map用于存储JWT的声明(claims)
        Map<String,Object> claims = new HashMap<>();
        // 模拟入参
        claims.put("id",1);
        claims.put("username","zxd");

        // 创建JWT,设置用户声明、过期时间和签名算法
        String token = JWT.create()
                .withClaim("user",claims)// 添加载荷
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 7))//添加过期时间
                .sign(Algorithm.HMAC256("itzxd"));//指定算法,配置秘钥,此秘钥不可泄露
        System.out.println(token);
    }

解析和验证JWT令牌测试类代码

@Test //token解析
    public void testParse(){
        // 模拟用户传递过来的token
        String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6Inp4ZCJ9LCJleHAiOjE3MjEwMTI2OTZ9.xe7TEy1H7UmBxt0I-QjW1wOD43a7kFCyymnWvFyHfpc";
        // 创建JWT验证器,使用HMAC256算法,密钥为"itzxd"
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("itzxd")).build();
        // 使用验证器验证JWT令牌的有效性,并返回解析后的JWT对象
        DecodedJWT decodedJWT = jwtVerifier.verify(token);
        // 提取JWT中的声明(claims)
        Map<String, Claim> claim = decodedJWT.getClaims();
        // 输出声明中名为"user"的值
        System.out.println(claim.get("user"));

        // 如果篡改了头部和载荷部分的数据,验证失败
        // 如果篡改了秘钥部分,验证失败
        // token过期,验证失败
    }

 

标签:令牌,验证,JWT,System,token,claims
From: https://www.cnblogs.com/ZXDZXD/p/18289554

相关文章

  • JWT原理
    JWTJWT(jsonwebtoken)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算......
  • HTTPS 与 JWT 认证的关系
    HTTPS(HyperTextTransferProtocolSecure)和JWT(JSONWebToken)是Web安全领域中常用的两个不同的技术,它们在一起工作以确保数据的安全传输和认证。下面是它们各自的作用及相互关系的详细说明:HTTPS定义:HTTPS是HTTP的安全版本,通过SSL/TLS(SecureSocketsLayer/Transport......
  • 为什么JWT 比 session 更适合于分布式系统
    在分布式系统中,JWT(JSONWebToken)比传统的session更适合用于身份验证和授权,主要有以下几个原因:1.无状态性JWT:无状态:JWT是无状态的,每个JWT包含了所有必要的用户信息和验证数据,服务器不需要存储会话数据。客户端持有JWT,并在每次请求时将其发送给服务器进行验证。扩展性......
  • JWT可以用在非HTTPS通信中(也就是HTTP通信中吗)?
    虽然JWT可以在非HTTPS的HTTP通信中使用,但这样做是不安全的。以下是详细原因及建议:安全性风险数据泄露:明文传输:在HTTP中,所有数据都是明文传输的。如果使用JWT,令牌在网络中传输时可能会被中间人(如网络监听者)截获。JWT中通常包含用户信息和身份验证数据,这些信息一旦......
  • JWT 的核心工作原理是什么?集群中的其他 服务如何验证这个JWT 呢?
    JWT(JSONWebToken)是一种用于身份验证和信息交换的紧凑、URL安全的令牌。JWT的核心工作原理包括三个主要部分:头部(Header)、载荷(Payload)和签名(Signature)。以下是对JWT核心工作原理的详细解释以及在集群环境中如何验证JWT的说明。JWT核心工作原理头部(Header):头部通常包括......
  • golang 中 Jwt 的验证及续期使用
    创建Utils的Jwt文件,用于创建JwtToken 和  验证并继期packageutilsimport("errors""fmt""github.com/dgrijalva/jwt-go""strings""time")//生成JwtToken//@ParamsecretKey表示jwtsecretKey【***......
  • 字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析
    在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介绍这个问题。字......
  • 揭秘JWT:从CTF实战到Web开发,使用JWT令牌验证
    揭秘JWT:从CTF实战到Web开发,使用JWT令牌验证介绍JWT(JSONWebTokens)是一种开放标准(RFC7519),它定义了一种紧凑且自包含的方式,用于在网络上安全地传输信息。这种信息可以验证和信任,因为它是数字签名的。JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。「优点」:「无状态」:服......
  • 手把手带你使用JWT实现单点登录
    JWT(英文全名:JSONWebToken)是目前最流行的跨域身份验证解决方案之一,今天我们一起来揭开它神秘的面纱!一、故事起源说起JWT,我们先来谈一谈基于传统session认证的方案以及瓶颈。传统session交互流程,如下图:当浏览器向服务器发送登录请求时,验证通过之后,会将用户信息存入seesion中......
  • flasksession伪造和jwt伪造
    flasksession伪造基本理论session是在服务端用来存储用户信息的,类似于来宾登记表,通过http报文中的cookie进行传递.由于flask轻量级的设计,因此session是存储在客户端的,因此也带来了flasksession伪造的风险.flask中的session通过app.secret_key=...来设置.flasksession通......