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

时间:2017-10-06 16:54:15

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

我误解了春季启动(和一般)微服务的安全性。我想使用Spring框架和微服务构建一个项目,但在架构规划中我陷入了困境。微服务中的安全性应该如何?在我看来,在所有项目中应该是一个组件,所有请求都抛出组件并传播到其他组件。我可以找到它的Spring Cloud Zuul,它是微服务中的api网关,我有意想做一个响应网关的项目,并在组件中增加安全性。我的意思是它将类似于包含Spring Cloud Zuul,Spring Security,Spring Data JPA依赖项的项目。您认为提供安全性的好方法怎么样?是否有可能建立类似的东西?

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:2)

我认为这里的答案可能对您有所帮助,他们正在谈论使用防火墙来限制来自出站IP的访问,并且只允许zuul网关访问所有微服务。

Don't allow direct calls to Microservices. Only allow through API Gateway

答案 2 :(得分:1)

我认为您可以考虑使用OAuth。 它使用JWT(Jason web令牌),这是一个与所有请求/响应一起传递的令牌。 您可以在此处找到详细信息:https://nordicapis.com/api-security-oauth-openid-connect-depth/