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

时间:2016-12-15 10:45:30

标签: spring-security jwt spring-cloud netflix-zuul

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

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

我们看到有两种方法可以帮助我们实现目标:

  1. 在每个应用程序中嵌入JWT引擎以生成令牌(@consumer端)并进行评估(@provider端)。通过初始交换密钥,令牌交换应该可以顺利进行任何未来的通信。
  2. 拥有一个外部(应用程序)JWT引擎,它位于分布式应用程序的所有微服务通信之间,负责所有令牌生命周期,包括加密 - 解密和验证。
  3. 根据https://jwt.io上列出的选项#1,有很多选项可供选择,但考虑到头顶令牌生成和管理增加了微服务,我们更愿意选择第二个选项分散网关。

    经过一番研究并查看各种API网关后,我们还没有遇到一个轻量级的解决方案/工具,它可以满足我们的需求,并帮助我们为一个由许多微服务组成的应用程序获得集中引擎。

    有人知道一个这样的工具/解决方案吗?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)