我对 spring boot(和一般)中微服务的安全性有误解。我想使用 Spring 框架和微服务构建一个项目,但在架构规划中我卡住了。微服务的安全性到底应该如何?在我看来,在所有项目中都应该是一个组件,所有请求都将抛出该组件并传播到其他组件。我能找到的是 Spring Cloud Zuul,它是微服务中的 api 网关,我想做一个项目来响应网关并在组件中添加安全性。我的意思是它将类似于包含 Spring Cloud Zuul、Spring Security、Spring Data JPA 依赖项的项目。您如何看待提供安全性的好方法?是否可以构建类似的东西?
最佳答案
在我参与的项目中,我们在几个不同的级别使用了安全性:
- Zuul 中单个路由级别 的安全性。
- 每个内部服务的安全性
这是我们 Spring Cloud 项目中使用的安全模型的流程图,
- 当 Zuul 收到请求时,它会检查该请求是否存在路由。
- 如果路由存在,则根据自定义配置检查路由是否安全。
- 如果路由是安全的,则对请求进行身份验证。
- 在 Zuul 对请求进行身份验证后,Zuul 会再次检查请求路由到的内部服务是否根据配置受到保护。
- 如果内部服务是安全的,则在将服务路由到内部服务之前,根据用户凭据(存储在自定义配置中)创建一个新的身份验证 header 。
- 一旦内部服务收到来自 Zuul 的请求,它会检查请求是否需要进行身份验证。
- 一旦通过身份验证,处理请求并发回响应。
关于java - Spring Boot 微服务中的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46610519/