第三方登录在集群环境下的重大bug

Blade 未结 1 878
3395733618
3395733618 剑圣 2021-04-02 09:32

一、该问题的重现步骤是什么?

  1. 第三方登录bladex使用的justauth,然后在blade-starter-social这个模块里面有个SocialUtil工具类

image.png

是这样写的,多的我就不截图了,都差不多,注意这里的构造方法

2. 以AuthWeChatOpenRequest为例

image.png

image.png

image.png

image.png

一层层往里面看,这里使用的state缓存是一个,使用ConcurrentHashMap实现的缓存。

是存在blade-auth服务的内存中的,如果blade-auth微服务有多个实例(集群环境),会出现第三方登录state读不到,导致state不正确而无法登录的bug。

不过在单机的情况下是没有这个问题的


二、你期待的结果是什么?实际看到的又是什么?

期待在集群环境下,第三方登录没有此bug。实际上blade-auth微服务有多个实例的时候是会出现登录不了的问题的。

image.png

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

2.7.2   centos7

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

实际上,justauth的官方文档里面就有自定义redis缓存state的实现。照抄一遍就可以把state缓存到redis中,所有的blade-auth微服务都去redis中取state,即可。

然后SocialUtil工具类在new各个平台的authRequest时使用另一个构造方法。

image.png

image.png


我自己已经等不及了,自己改了。

1条回答
提交回复