Java 微服务-安全实现

Java 微服务-安全实现,java,spring-boot,microservices,api-gateway,Java,Spring Boot,Microservices,Api Gateway,在微服务部署中,在微服务级别还是在api网关级别处理安全性更好?是否存在这样的场景:一个比另一个更合适?我认为这是您使用某种反向代理作为安全网关的常见方式,它生成某种安全令牌,如SAML 否则,例如,如果您有一些链式调用,比如微服务用户调用微服务事务日志,那么每个微服务都会一次又一次地为自己进行身份验证。这可能会非常昂贵。来自文章: 使用API网关的一个主要好处是它封装了应用程序的内部结构。客户机不必调用特定的服务,只需与网关通信 这仅仅意味着客户端通过API网关与微服务通信,该网关处理任何底层

在微服务部署中,在微服务级别还是在api网关级别处理安全性更好?是否存在这样的场景:一个比另一个更合适?

我认为这是您使用某种反向代理作为安全网关的常见方式,它生成某种安全令牌,如SAML

否则,例如,如果您有一些链式调用,比如微服务用户调用微服务事务日志,那么每个微服务都会一次又一次地为自己进行身份验证。这可能会非常昂贵。

来自文章:

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

这仅仅意味着客户端通过API网关与微服务通信,该网关处理任何底层服务的所有请求

所以,我认为,如果您需要对请求进行任何授权,最好在API网关本身进行授权,因为这样,未经授权的请求永远不会到达您的服务

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

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

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

当然,这是一个高层次的概述,是我的想法,我愿意看看其他人都说了些什么。

谢谢Shubham!这很有用谢谢你,莉拉