oauth2 redis mysql_OAuth2 令牌还能存入 Redis ?越玩越溜!

本文我将从三个方面来做优化:令牌往哪里存?

客户端信息入库

第三方应用优化

好,我们分别来看。

「注意,本文的案例在本系列第三篇文章的基础上修改而来。」

1.令牌往哪里存?

在我们配置授权码模式的时候,有两个东西当时存在了内存中:InMemoryAuthorizationCodeServices 这个表授权码存在内存中。

InMemoryTokenStore 表示生成的令牌存在内存中。

授权码用过一次就会失效,存在内存中没什么问题,但是令牌,我们实际上还有其他的存储方案。

我们所使用的 InMemoryTokenStore 实现了 TokenStore 接口,我们来看下 TokenStore 接口的实现类:

86caa00864a068934c56264bcf923aa0.png

可以看到,我们有多种方式来存储 access_token。InMemoryTokenStore,这是我们之前使用的,也是系统默认的,就是将 access_token 存到内存中,单机应用这个没有问题,但是在分布式环境下不推荐。

JdbcTokenStore,看名字就知道,这种方式令牌会被保存到数据中,这样就可以方便的和其他应用共享令牌信息。

JwtTokenStore,这个其实不是存储,因为使用了 jwt 之后,在生成的 jwt 中就有用户的所有信息,服务端不需要保存,这也是无状态登录,关于 OAuth2 结合 JWT 的用法,松哥本系列未来的文章中,也会详细介绍,这里就不再多说。

RedisTokenStore,这个很明显就是将 access_token 存到 redis 中。

JwkTokenStore,将 access_token 保存到 JSON Web Key。

虽然这里支持的方案比较多,但是我们常用的实际上主要是两个,RedisTokenStore 和 JwtTokenStore,JwtTokenStore 的比较复杂,我会在后面专门写文章来单独介绍,这里先来跟大家演示存入 RedisTokenStore。

首先我们启动一个 Redis 服务,然后给 auth-server 添加 Redis 依赖:

org.springframework.boot

spring-boot-starter-data-redis

依赖添加成功后,在 application.properties 中添加 redis 配置:spring.redis.host=127.0.0.1

spring.redis.port=6379

spring.redis.password=123

配置完成后,我们修改 TokenStore 的实例,如下:@Configuration

public class AccessTokenConfig{

@Autowired

RedisConnectionFactory redisConnectionFactory;

@Bean

TokenStore tokenStore(){

return new RedisTokenStore(redisConnectionFactory);

}

}

然后分别启动 auth-server、client-app 以及 user-server,走一遍第三方登录流程,然后我们发现,派发的 access_token 在 redis 中也有一份:

94ef339734bf129ed518966cb893130c.png

可以看到,数据都存到 Redis 中了,access_token 这个 key 在 Redis 中的有效期就是授权码的有效期。正是因为 Redis 中的这种过期机制,让它在存储 access_token 时具有天然的优势。

2.客户端信息入库

在前面的文章中,客户端信息我们是直接存储在内存中的,像下面这样:@Override

public void configure(ClientDetailsServiceConfigurer cli

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值