Spring Cloud Gateway中的身份验证

时间:2018-08-17 08:37:04

标签: java spring spring-boot spring-cloud spring-cloud-gateway

我是Spring Cloud的新手。我正在尝试集成Spring Cloud网关( spring cloud Finchley.SR1 )只是为了对我的请求进行身份验证和路由。

  

我的应用程序堆栈如下

  • 主仪表板应用程序是使用spring mvc和angular构建的。它具有登录页面和仪表板。身份验证集成在其中,可以根据数据库对用户凭据进行身份验证。我还使用 hazelcast 在此应用中进行会话复制。
  • 一组下游服务,一旦用户登录到上方的仪表板并在其中导航,就会被调用。
  • 使用spring cloud网关构建的 API网关:目前,它仅进行路由。

spring: cloud: gateway: routes: - id: customers uri: http://localhost:8282/customers predicates: - Path=/customers/** - Header=employeeId, \d+ filters: - RewritePath=/customers/(?<segment>.*), /$\{segment} - id: rates uri: http://localhost:8383/rates predicates: - Path=/rates/** filters: - RewritePath=/rates/(?<segment>.*), /$\{segment}

  

需要实施以下

  • 第一个请求将到达网关,我需要检查用户是否已通过身份验证,如果未通过身份验证,则需要显示仪表板应用程序(即第一个应用程序)的登录页面,否则允许用户继续。
  • em>
  • 一旦用户登录并在仪表板内部导航,则对下游服务的api请求也将通过 api网关。如果用户未通过身份验证,我也需要对这些请求进行身份验证并发送403状态。
  

我无法弄清楚如何在 spring cloud gateway app 中处理这些身份验证。是否可以利用我在主仪表板应用中添加的hazelcast会话复制,并使用它来验证网关中的用户?

     

或者使用Spring Cloud Suite工具还有什么更好的方法,我可以在这里使用它。一个示例应用程序将很有用

1 个答案:

答案 0 :(得分:0)

就我而言,我在Spring Security 2.0.5中自定义了AuthenticationWebFilter类。 我在AuthenticationWebFilter中自定义了ServerAuthenticationConverter类和SuccessHandler,FailureHandler和ReactiveAuthenticationManager类。 如果您使用Spring安全性,建议您搜索WebFilter。 希望对您有所帮助。