微服务中使用JWT实现SSO单点登陆token校验的问题?

假如在微服务中使用JWT实现单点登录,一般都会有一个认证中心(也就是登录服务中心),主要是用来验证用户账号密码是否合法,如果合法就生成JWT token值转递给前端。这样的话,前端只要调用接口只要携带这个JWT token就行了。

然后后端需要校验这个token是否合法。如果合法就允许执行接口请求。

现在有个问题就是这个token在哪里校验合适?比如:在网关处校验或者在认证中心去校验。

但是我觉得在上面两处校验都不太合适,如果并发高的话,认证中心或者网关服务压力都比较大。

所以我认为token校验应该在各个资源服务中去,这样可以起到一个负载均衡的效果。比如有资源服务:用户订单服务、用户会员服务

如果我们请求订单服务,那么校验token就在订单服务中校验;如果请求用户会员服务校验token就在会员服务中校验。

这样的好处就是在高并发下,token校验给服务带来的压力就会分散开来了。不好的地方就是每个微服务都需要编写同样的校验token的代码。

同样的,在微服务下做权限校验,也不应该在网关处做用户权限校验,而且交给各个资源服务来做处理。

不知道大家所在的公司微服务项目这个业务是怎么处理的呢?

阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题