JWT 注销:在微服务架构中的服务之间共享被列入黑名单的无效令牌
Posted
技术标签:
【中文标题】JWT 注销:在微服务架构中的服务之间共享被列入黑名单的无效令牌【英文标题】:JWT logout: Sharing of blacklisted invalid token among services in microservices architecture 【发布时间】:2021-09-16 20:32:44 【问题描述】:我正在从事一个涉及 4 个服务的微服务项目 - Auth Service、Service-A、Service-B 和 Service-C。
所有服务都是使用 Spring Boot 实现的。 Auth Service 负责对登录用户进行身份验证并生成 JWT 不记名令牌。每个 Service-A/B/C 都有 JWT 过滤器,用于检查令牌的有效性,然后提供对 Rest API 的访问。
现在我想实现注销功能。注销请求转到身份验证服务。身份验证服务使用 Redis。令牌被添加到设置了 ttl 的无效令牌列表中,以便在到期后自动删除令牌。
现在,Service-A/B/C 中的 JWT 过滤器如何访问列入黑名单的令牌,以便批准/拒绝 Rest API 访问?如果所有服务都部署在同一个系统中,则服务可以轻松访问 Redis。如果服务部署在不同的系统中,它们如何访问无效令牌?
-
我是否应该实现 pub/sub 消息传递,并且每个服务都将侦听注销事件并更新其列入黑名单的令牌
或者在微服务环境中有更好的方法吗?
【问题讨论】:
【参考方案1】:一种可能的解决方案是在 API 网关级别实施过滤器。见以下链接...https://softwareengineering.stackexchange.com/a/430024/395671
【讨论】:
以上是关于JWT 注销:在微服务架构中的服务之间共享被列入黑名单的无效令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何在微服务架构中使用 docker-compose 最好地处理共享服务以进行本地开发?