java - Spring Boot 微服务中的安全问题

标签 java spring spring-mvc spring-security spring-cloud

我对 spring boot(和一般)中微服务的安全性有误解。我想使用 Spring 框架和微服务构建一个项目,但在架构规划中我卡住了。微服务的安全性到底应该如何?在我看来,在所有项目中都应该是一个组件,所有请求都将抛出该组件并传播到其他组件。我能找到的是 Spring Cloud Zuul,它是微服务中的 api 网关,我想做一个项目来响应网关并在组件中添加安全性。我的意思是它将类似于包含 Spring Cloud Zuul、Spring Security、Spring Data JPA 依赖项的项目。您如何看待提供安全性的好方法?是否可以构建类似的东西?

最佳答案

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

  • Zuul 中单个路由级别 的安全性。
  • 每个内部服务的安全性

这是我们 Spring Cloud 项目中使用的安全模型的流程图,

  1. 当 Zuul 收到请求时,它会检查该请求是否存在路由。
  2. 如果路由存在,则根据自定义配置检查路由是否安全。
  3. 如果路由是安全的,则对请求进行身份验证。
  4. 在 Zuul 对请求进行身份验证后,Zuul 会再次检查请求路由到的内部服务是否根据配置受到保护。
  5. 如果内部服务是安全的,则在将服务路由到内部服务之前,根据用户凭据(存储在自定义配置中)创建一个新的身份验证 header 。
  6. 一旦内部服务收到来自 Zuul 的请求,它会检查请求是否需要进行身份验证。
  7. 一旦通过身份验证,处理请求并发回响应。

关于java - Spring Boot 微服务中的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46610519/

相关文章:

java - 使用 spring StoredProcedure 将参数输出为 Integer

java - Spring Data、REST 和 ManyToMany 关系

java - 应用程序范围记录器的最佳实践

java - Spring MVC为什么会响应404并报告“在DispatcherServlet中未找到带有URI […]的HTTP请求的映射”?

java - 从监听器访问对象

java - 为什么这个奇怪的顺序发生在 Java 的 PriorityQueue 中?

java - 无法在Intellij中编译gradle vaadin项目

java - 是否有任何 java/spring 方法可以使用 HttpServletRequest 存储当前登录用户的 session 信息?

java - ApiController 的自定义注释前缀/api 不起作用 Spring Boot

java - 在java中从csv中读取带逗号的值