Java 使用Spring Boot的微服务中的安全问题

Java 使用Spring Boot的微服务中的安全问题,java,spring,spring-mvc,spring-security,spring-cloud,Java,Spring,Spring Mvc,Spring Security,Spring Cloud,我误解了spring boot(和general)中微服务的安全性。我想用Spring框架和微服务构建一个项目,但在架构规划方面我遇到了困难。微服务的安全性到底应该如何?在我看来,在所有的项目中都应该有一个组件,所有的请求都会抛出该组件并扩展到其他组件。我能找到的是SpringCloudZuul,它是微服务中的api网关,我想到了制作一个项目,它是对网关的响应,并在组件中添加安全性。我的意思是,它将类似于一个包含SpringCloudZuul、SpringSecurity和SpringDataJ

我误解了spring boot(和general)中微服务的安全性。我想用Spring框架和微服务构建一个项目,但在架构规划方面我遇到了困难。微服务的安全性到底应该如何?在我看来,在所有的项目中都应该有一个组件,所有的请求都会抛出该组件并扩展到其他组件。我能找到的是SpringCloudZuul,它是微服务中的api网关,我想到了制作一个项目,它是对网关的响应,并在组件中添加安全性。我的意思是,它将类似于一个包含SpringCloudZuul、SpringSecurity和SpringDataJPA依赖项的项目。您认为提供安全性的好方法是什么?有可能构建这样的东西吗?

我想这里的答案可能会对你有所帮助,他们说的是使用防火墙限制从出站IP的访问,只允许zuul gateway访问所有微服务


在我参与的项目中,我们在几个不同的级别上使用了安全性:

  • Zuul中,个人路线级别的安全性
  • 每个内部服务的安全性
这是Spring云项目中使用的安全模型的流程图

  • 当Zuul收到一个请求时,它会检查该请求是否存在路由
  • 如果存在路由,则根据自定义配置检查路由是否安全
  • 如果路由是安全的,则对请求进行身份验证
  • 在Zuul对请求进行身份验证后,Zuul再次检查请求路由到的内部服务是否基于配置进行了安全保护
  • 如果内部服务是安全的,则在将服务路由到内部服务之前,基于用户凭据(存储在自定义配置中)创建新的身份验证标头
  • 一旦内部服务接收到来自Zuul的请求,它将检查请求是否需要进行身份验证
  • 经过身份验证后,处理请求并将响应发送回

  • 我认为你可以考虑使用OAuth. 它使用JWT(JasonWebToken),这是一个与所有请求/响应一起传递的令牌。
    您可以在此处找到详细信息:

    您可以在网关中添加身份验证,您查看过JSON Web令牌吗?您可以在网关上验证和管理令牌,然后将它们传递给各个服务。如果我在网关组件中添加安全配置并对用户进行验证,那么问题不在于如何为其他服务中的方法添加安全性。我的意思是,例如@PreAuthorize()@PostAutorize(),等等。我只想添加一个位置安全配置以及与此相关的所有内容。我没有想象力怎么做。我不想在所有服务中重复安全配置