首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微型服务对微型服务通信的安全保障

微型服务对微型服务通信的安全保障
EN

Stack Overflow用户
提问于 2020-03-04 06:44:29
回答 2查看 4.8K关注 0票数 3

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

或者,我必须通过api网关通过api网关发送每个请求,并在那里进行安全的通信。

EN

回答 2

Stack Overflow用户

发布于 2020-03-04 07:36:53

这完全取决于您的项目的确切需求。

网关API通常用于向外部用户隐藏微服务的复杂性,外部用户通常有一个端点可供交谈。

此外,网关还可以处理安全性并对用户进行身份验证(许多公司确实这样做)。

现在,当您通过网关并通过身份验证的请求到达客户端时,通常在请求上已经有了一个用户标识(网关对请求进行了哪些操作)。

所以你知道用户“约翰·史密斯”触发了这个请求。

现在,如果您需要调用另一个微服务,您应该做出决定(还是您的决定):

microservices(

  • If是否需要身份验证(可能不需要在之间保护内部通信)您确实需要在微服务之间进行身份验证,由谁来验证请求?如果它是一个网关,那么所有的身份验证逻辑都在那里,但是您必须为每个请求进行额外的跳,如果它是一个直接调用,那么每个微服务必须实现一个身份验证逻辑。当然,还有类似spring安全性的东西,其他语言/生态系统也有类似的解决方案,但一般来说,这是很难实现的。如果您确实从microservice A到microservice B进行了身份验证调用,并且流程是由用户John Smith发起的,从而触发了服务A的请求,那么您应该决定调用的语义是否是:。

代码语言:javascript
复制
- User "John Smith" contacts the service B, or...
- Service A contacts Service B on behalf of user John Smith. This is really important for authorization if you have any kind of permissions system.

在技术实现方面,

  1. 通常可以向请求中添加一个带有所需令牌的JWT头。如果请求已经过身份验证,并且需要生成用户标识,那么只需在请求中放置几个头即可。
票数 6
EN

Stack Overflow用户

发布于 2021-05-26 08:38:34

您可以有两个api网关:

  • 一个暴露在
  • 之外,另一个用于容器内的微服务通信。

暴露在外部的令牌进行验证,并将索赔发送到用于验证路由保护的微服务。

在微服务通信之间,发送您已经拥有的与第二个网关的声明。希望这能有所帮助。如果你找到了其他的方法,请告诉我们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60520398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档