验证微服务架构的每个服务中的访问令牌(JWT)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证微服务架构的每个服务中的访问令牌(JWT)相关的知识,希望对你有一定的参考价值。

我有一个使用微服务架构实现的应用程序。有一个使用jwt标准的认证服务(A),在应用程序中还有其他服务,如S1,S2,S3等。现在例如S1接收请求,它应该验证令牌以查看用户是否被授权。验证可以通过以下方式实现:

  • 将令牌从S1发送到A,然后A验证令牌并将结果发送到S1(这是一种开销)
  • 验证S1内的令牌(这是每个服务中的重复操作,还需要每个服务中的密钥或公钥/私钥,用于签名/验证)

我不是在问这些方法是如何工作的。问题是,哪一个更好?或者在这种情况下最佳做法是什么?

答案

我建议将您的身份验证服务打包在另一个微服务中并与之通信以进行身份​​验证。 (基本上是你的第一选择。)

在微服务生态系统中,如果不是数百个运行(理想情况下)相互独立的应用程序,则可能有10个。使用第二个选项,每次启动新服务时都添加了样板。但也许更重要的是,您已将所有微服务与当前的身份验证方案相结合。最好将所有auth放在接口后面,并将所有auth逻辑隐藏在一个分开的位置。

另一答案

我认为你需要考虑两种解决方案并考虑什么是权衡。

拥有单一服务处理授权:

  • 单点故障。如果有人犯了错误,那么整个生态系统就会崩溃。
  • 增加了众所周知的问题的封装。
  • 减少所有相关服务的工作量。

对每项服务实施授权:

  • 为每项服务提供更多独立性(这是“微服务”的本质)
  • 为您提供保护每项服务的灵活性。可能会有所不同,具体取决于每个人的意图。

最后,您需要找到您的需求,并根据什么为您带来更多好处。我刚刚列举了一些优点和缺点,但我认为我的想法是在这个主题上投入时间,然后根据您认为最适合您团队的决定做出决定。

以上是关于验证微服务架构的每个服务中的访问令牌(JWT)的主要内容,如果未能解决你的问题,请参考以下文章

授权和微服务

JWT 访问令牌:矛盾?

使用 jwt 在微服务中进行身份验证

Day916.基于JWT令牌的安全认证架构 -SpringBoot与K8s云原生微服务实践

架构微服务 Spring Boot

在spring boot微服务中设置JWT令牌生成中的两个主题