jwt实现oauth2.0 java_SpringBoot 整合 oauth2(五)实现 jwt 及 扩展

本文介绍了如何在Java SpringBoot应用中结合OAuth2.0使用JWT,包括JWT的优点、结构以及如何配置JWTTokenConfig和AuthorizationServerConfig。通过增加TokenEnhancer扩展JWT,添加自定义信息到token中。
摘要由CSDN通过智能技术生成

什么是jwt,即 json web token。JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。也是一种token,但是和token有一些不同。

jwt优点:

自包含

防篡改

可自定义扩展

JWT的结构

JWT包含了使用.分割的三部分:

Header 头部

Payload 负载

Signature 签名

比如:eyJpc3MiOiJKb2huIFd1IEpXVCIsImlhdCI6MTQ0MTU5MzUwMiwiZXhwIjoxNDQxNTk0NzIyLCJhdWQiOiJ3d3cuZXhhbXBsZS5jb20iLCJzdWIiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiZnJvbV91c2VyIjoiQiIsInRhcmdldF91c2VyIjoiQSJ9

三个新东西

什么是自包含?

字符串里包含用户信息。

什么是防篡改?

签名用于验证消息的发送者以及消息是没有经过篡改的。

可扩展是什么意思?

你可以在Payload部分加入自己想加入的json字符串

那我们既然token的实现方式那么优秀,为什么还要有jwt呢,这就需要了解他们的生成机制。

token生成的其实就是一个UUID,和业务没有丝毫的关系,这样带来最大的问题,就是需要人工持久化处理token(像处理分布式下的sessionId一样)。但是jwt就不需要,因为自包含,所以token里有身份验证信息,不需要做后台持久化处理,前端每次请求被保护的资源时请求头里带上该token就可以实现。

好了开始正文。

本文建立在第三节的基础上。这里是顺风车

1. 新增JwtTokenConfig

@Configuration

public class JwtTokenConfig{

@Bean

public TokenStore jwtTokenStore(){

return new JwtTokenStore(jwtAccessTokenConverter());

}

/**

* token生成处理:指定签名

*/

@Bean

public JwtAccessTokenConverter jwtAccessTokenConverter(){

JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();

accessTokenConverter.setSigningKey("internet_plus");

return accessTokenConverter;

}

}

jwtTokenStore方法返回一个TokenStore对象的子对象JwtTokenStore,供给认证服务器取来给授权服务器端点配置器,通俗点就是让MyAuthorizationServerConfig能注入到值。

jwtAccessTokenConverter方法是根据签名生成JwtToken,同样也需要在MyAuthorizationServerConfig类里注入。

修改MyAuthorizationServerConfig 的 configure方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值