spring boot 2 集成JWT实现api接口认证

  • Post author:
  • Post category:其他


JSON Web Token(JWT)是目前流行的跨域身份验证解决方案。

官网:

https://jwt.io/


本文使用spring boot 2 集成JWT实现api接口验证。


一、JWT的数据结构

JWT由header(头信息)、payload(有效载荷)和signature(签名)三部分组成的,用“.”连接起来的字符串。

JWT的计算逻辑如下:

(1)signature = HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), secret)

其中私钥secret保存于服务器端,不能泄露出去。

(2)JWT = base64UrlEncode(header) + “.” + base64UrlEncode(payload) + signature

下面截图以官网的例子,简单说明


二、JWT工作机制

客户端使用其凭据成功登录时,服务器生成JWT并返回给客户端。

当客户端访问受保护的资源时,用户代理使用Bearer模式发送JWT,通常在Authorization header中,如下所示:

Authorization: Bearer <token>

服务器检查Authorization header中的有效JWT ,如果有效,则允许用户访问受保护资源。JWT包含必要的数据,还可以减少查询数据库或缓存信息。


三、spring boot集成JWT实现api接口验证

开发环境:

IntelliJ IDEA 2019.2.2

jdk1.8

Spring Boot 2.1.11

1、创建一个SpringBoot项目,pom.xml引用的依赖包如下

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.3</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>

2、定义一个接口的返回类

package com.example.jwtdemo.entity;


import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;

@Data
@NoArgsConstructor
@ToString
public class ResponseData<T> implements Serializable {
    /**
     * 状态码:0-成功,1-失败
     * */
    private int code;

    /**
     * 错误消息,如果成功可为空或SUCCESS
     * */
    private String msg;

    /**
     * 返回结果数据
     * */



版权声明:本文为gdjlc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。