基于微服务架构的中央 JWT 管理系统

Central JWT management system for my micro-service based architecture

我们在基于微服务的架构中构建我们的应用程序来实现我们的应用程序。与微服务一样,我们现在看到服务之间发生了很多跨服务交互。

为了保护端点,我们计划在此类安全交换之间实施基于 JWT 的身份验证。

我们看到有 2 种方法可以帮助我们实现它:

  1. 在每个应用程序中嵌入一个 JWT 引擎以生成令牌(@consumer 端)并评估(@provider 端)。通过初始密钥交换,令牌交换应该可以顺利进行任何未来的通信。
  2. 有一个外部(对应用程序)JWT 引擎,它位于分布式应用程序的所有微服务通信之间,负责所有令牌生命周期,包括其加密-解密和验证。

根据 https://jwt.io 中列出的选项 #1,有很多选项可以做到这一点,但考虑到微服务的开销令牌生成和管理,我们更愿意选择第二个选项通过去中心化网关。

经过相当多的研究和查看各种 API 网关后,我们还没有找到一个轻量级 solution/tool 可以满足我们的需要并帮助我们为一个应用程序获得集中式引擎许多微服务。

有人知道这样的 tool/solution 吗?

如果您对此方法有任何其他意见,请告诉我。

这两种场景都可以在 Spring Cloud Zuul 中实现。

更多信息: http://cloud.spring.io/spring-cloud-static/Brixton.SR7/#_router_and_filter_zuul http://cloud.spring.io/spring-cloud-static/Brixton.SR7/#_configuring_authentication_downstream_of_a_zuul_proxy

我也更喜欢选项 2,但您为什么要寻找框架?

中央应用程序应该只负责管理私钥和发行令牌。包括解决一项服务的框架可能过多

你也可以考虑实现验证服务,但由于应用程序是你的,我建议使用非对称密钥并在本地验证令牌,而不是向中央应用程序执行远程验证请求。您可以为您的微服务提供一个简单的库来下载密钥并执行验证。嵌入 JWT.io 的任何库或从头开始构建它。验证 JWT 非常简单

如果您需要在到期时间之前拒绝令牌,例如使用黑名单,则需要中央服务。但是我不推荐这个方案,因为破坏了 JWT 的无状态