2017-06-12 115 views

回答

2

this文章:

使用API​​网关是它封装了应用程序的内部结构的一个主要优点。客户不必调用特定服务,而只需与网关通话。

这仅仅意味着客户端通过API网关与微服务对话,并且该网关处理针对任何基础服务的所有请求。

因此,我认为如果您需要对请求进行任何授权,在API网关本身进行授权是有益的,因为这样未授权的请求永远不会到达您的服务。

但是,这也不是一个完整的解决方案。让我们考虑一个实际验证用户的服务。此服务将始终由尚未获得授权的用户访问,因此,在服务级别而不是API网关上实施此服务的安全性是有意义的。

此外,请考虑创建订单的服务。如果任何内部服务可以调用此服务并创建订单,而不需要任何令牌(或任何其他认证过程),该怎么办?现在可以使用多种方式解决此问题,例如:

  • 对内部服务的网络访问受限制,例如在除API网关之外的其他服务中可以访问此服务。
  • 向所有服务添加/代理安全令牌(如JWT),并在每个服务中验证针对该令牌的请求。

当然,这是一个高层次的概述,是我的想法,我愿意看看别人有什么要说的。

+0

谢谢Shubham!这非常有用 –

1

我想说这是常见的方式使用某种反向代理作为安全网关,它会生成某种类型的安全令牌,如SAML。否则,例如,如果您有一些链接的调用,例如微服务用户调用微服务事务日志,则每个微服务都会一次又一次地为其自身授予权限。这可能会相当昂贵。

+0

谢谢Dudelilama –