Spring boot 如何使用JWT

507a1235704b517c65e12ec706c45a74.jpeg


这一系列课程将包含 Spring Boot 许多关键的技术和工具,包括 Mybatis-Plus、Redis、Mongodb、MinIO、Kafka、MySQL、消息队列(MQ)、OAuth2 等 相关内容

JSON Web Token(JWT)是一种用于在网络上安全传输信息的开放标准(RFC 7519)。JWT通常用于身份验证和信息交换,并使用JSON格式表示信息,包含三部分:Header、Payload 和 Signature。下面是JWT的详细参数说明:

  1. Header(头部):JWT头部通常包含两部分:令牌类型(typ)和所使用的签名算法(alg)。通常,头部会采用Base64编码,但不会加密。

    示例:

    093dde8b7889dc6650f7617ea2ebe198.jpeg
  • typ(token type):指定令牌的类型,通常为 "JWT"。

  • alg(algorithm):指定用于签名令牌的算法,例如 HMAC SHA256(HS256)或 RSA SHA256(RS256)。

Payload(负载):JWT的负载部分包含声明(claims),声明是关于实体(通常是用户)和其他数据的陈述。声明分为三种类型:注册声明、公共声明和私有声明。通常,Payload中包含一些标准的声明,以及应用程序特定的自定义声明。

示例:

d64821e187cb8be3bf19e43dca2b0bcc.jpeg
  • sub(subject):声明令牌的主题,通常是用户的唯一标识符。

  • name:用户的姓名或其他相关信息。

  • iat(issued at):令牌的颁发时间,以UNIX时间戳表示。

Signature(签名):签名部分用于验证JWT的完整性,确保令牌在传输过程中没有被篡改。签名的计算需要使用头部和负载部分的数据以及一个密钥。签名通常以Base64编码的字符串形式附加在JWT的末尾。

示例如下:

9adc23052a8ad435ec1a5949bd44f0e5.jpeg

签名的生成方式取决于所选的签名算法。

JWT还可以包括其他标准声明,如:

  • iss(issuer):令牌的颁发者。

  • exp(expiration time):令牌的过期时间。

  • nbf(not before):令牌生效时间。

  • aud(audience):令牌的受众。

  • jti(JWT ID):令牌的唯一标识符。

自定义声明可以根据需要添加,以传递额外的信息。

03afd0d4f42f115976e474db21ffab84.jpeg

在Spring Boot框架中实现JWT(JSON Web Token)验证逻辑,通常涉及以下几个步骤:

添加相关依赖:首先,你需要在pom.xml文件中添加JWT和Spring Security的相关依赖。这是一个基本的依赖配置示例:

87aa08369c692b23ea66449903568ca4.jpeg

创建JWT工具类:编写一个JWT工具类,用于生成和验证JWT令牌。下面是一个示例JWT工具类:

b42b5f1657f6f4a985eef7fb95180cca.jpeg
5f85d6634d475663db5d7156916eb530.jpeg

创建Spring Security配置:配置Spring Security以启用JWT令牌验证。以下是一个示例配置:

07a05539f9a0cf7d2e3480952538d1fc.jpeg

创建JWT验证过滤器:编写一个JWT验证过滤器,它将在每个请求中验证JWT令牌。以下是一个示例JWT验证过滤器:

9a6430e4c62ae8eaadf0ba23b763593a.jpeg

1629394cd10bd8ef82c685938e933455.jpeg创建用户认证服务:实现一个用户认证服务接口(UserDetailsService),它将从数据库或其他数据源中验证用户的凭据。以下是一个示例:

3a2461d46ca2a72421cd1b9df9488270.jpeg

创建控制器:创建一个REST控制器来处理认证请求和受保护资源的请求。以下是一个示例:

7bc140986cd9693e2a4fc0784ef7f400.jpeg

创建实体类:创建实体类来表示JWT请求和响应的数据。以下是示例:

6a8101741842444e373b289ad2329349.jpeg

这是一个完整的Spring Boot应用程序,用于JWT验证。你需要根据你的需求进行适当的修改,如更改SECRET,实现自定义用户认证逻辑以及其他配置。

在这个示例中,当用户在/api/authenticate端点提供正确的用户名和密码时,系统将生成一个JWT令牌,用户将在后续请求中使用该令牌来访问受保护的资源。确保在实际应用中使用更强大的安全措施,如HTTPS来保护通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值