微服务到微服务的安全通信

问题描述 投票:0回答:1

我想在不同的微服务之间进行通信,但是出现的问题是,微服务已通过jwt令牌进行了保护,我无法找到一种方法来从第一个微服务向另一个微服务发送安全呼叫。有没有一种方法可以直接与service方法通信,因为如果我打开api,它将被滥用。

或者我必须通过api网关来通过api gate方式发送每个请求并从那里进行安全的通信。

java spring jwt microservices communication
1个回答
0
投票
网关API通常用于向通常有1个端点进行对话的外部用户隐藏微服务的复杂性。

而且网关也可以处理安全性并验证用户身份(许多公司的确如此)。>>

现在,当您通过网关并且经过身份验证的请求到达客户端时,通常您已经在该请求上拥有了一个用户身份(网关在请求中所放置的身份)。

所以您知道用户“ John Smith”已经触发了请求。

现在,如果您需要调用另一个微服务,则应该决定(并再次决定):

    是否需要身份验证(也许不必在微服务之间确保内部通信的安全性[
  1. 如果您确实需要微服务之间的身份验证,谁会对请求进行身份验证?如果它是网关,则所有身份验证逻辑都存在,但是您必须为每个请求进行额外的跃点,这可能会增加成本或者,如果它是直接调用,则每个微服务必须实现一个authenticatat逻辑。当然,有诸如Spring Security之类的东西,其他语言/生态系统也有类似的解决方案,但是总的来说这很难实现。

  2. 如果您确实进行了从微服务A到微服务B的经过身份验证的调用,并且该流是由触发对服务A的请求的用户John Smith发起的,则应确定该调用的语义是否为:

  3. 用户“ John Smith”与服务B联系,或...

      服务A代表用户John Smith与服务B联系。如果您具有任何类型的权限系统,这对于授权确实非常重要。
  4. 在技术实施方面,通常可以使用所需令牌将JWT标头添加到请求中。如果请求已通过身份验证,并且您需要生成用户身份,则只需在请求上放置几个标头即可。

0
投票

0
投票
网关API通常用于向通常有1个端点进行对话的外部用户隐藏微服务的复杂性。

而且网关也可以处理安全性并验证用户身份(许多公司的确如此)。>>

现在,当您通过网关并且经过身份验证的请求到达客户端时,通常您已经在请求上拥有了用户身份(网关在请求上添加了用户身份)。

所以您知道用户“ John Smith”已经触发了请求。

现在,如果您需要调用另一个微服务,则应该决定(并再次决定):

    是否需要身份验证(也许不必在微服务之间确保内部通信的安全性[
  1. 如果您确实需要微服务之间的身份验证,谁会对请求进行身份验证?如果它是网关,则所有身份验证逻辑都存在,但是您必须为每个请求进行额外的跃点,这可能会增加成本或者,如果它是直接调用,则每个微服务必须实现一个authenticatat逻辑。当然,有诸如Spring Security之类的东西,其他语言/生态系统也有类似的解决方案,但是总的来说这很难实现。

  2. 如果您确实进行了从微服务A到微服务B的身份验证调用,并且该流是由触发了对服务A的请求的用户John Smith发起的,则应确定该调用的语义是否为:

  3. 用户“ John Smith”与服务B联系,或...

      服务A代表用户John Smith与服务B联系。如果您具有任何类型的权限系统,这对于授权确实非常重要。
  4. 在技术实施方面,通常可以使用所需令牌将JWT标头添加到请求中。如果请求已通过身份验证,并且您需要生成用户身份,则只需在请求上放置几个标头即可。
© www.soinside.com 2019 - 2024. All rights reserved.