WebFlux安全上下文问题(身份验证缺少用户详细信息)#5225

时间:2018-04-11 20:20:59

标签: spring-security

高级别摘要

使用WebFlux安全配置时,在" ReactiveUserDetailsS​​ervice"期间,用户详细信息范围填充在Authentication对象内。 AuthorizationManager中缺少调用。

实际行为

我们自定义" ReactiveAuthorizationManager"内的身份验证对象没有在我们的自定义" ReactiveUserDetailsS​​ervice"中填充的用户详细信息。

预期行为

内部的验证对象" ReactiveAuthorizationManager"应该在" ReactiveUserDetailsS​​ervice"

中填充链中的用户详细信息

分步流程

以下是我们的流程和详细摘要。

  1. AuthenticationWebFilter(我们创建自己的AuthenticationWebFilter实例并注册各自的经理,处理程序,入口点等。)。
  2. CustomReactiveAuthenticationManager(我们自己的)已在AuthenticationWebFilter
  3. 中注册
  4. CustomReactiveUserDetailsS​​ervice(我们自己的)已在ReactiveAuthenticationManager中注册
  5. 一旦ReactiveUserDetailsS​​ervice调用远程服务器并成功验证请求,就会在身份验证中填充范围(用户详细信息)。
  6. 其余的都是安全框架流:调用Success处理程序。
  7. 然后是" SecurityContextServerWebExchangeWebFilter"被称为。
  8. 最后执行AuthorizationWebFilter并注册" AuthorizationManager"被调用。
  9. CustomAuthorizationManager(我们自己的)在" authorizeExchange.pathMatchers.access"
  10. 中注册
  11. 我们发现Authentication对象在到达自定义AuthorizationManager时缺少UserDetails。
  12. 示例

    我创建了以下git存储库以供参考。调用GET / v1 / context API,调用" RbsAuthorizationManager"并注意那里的授权缺少" userDetails"。

    https://github.com/psathesh/auth-client-java-reactive

    打开问题 https://github.com/spring-projects/spring-security/issues/5225

    相关参考资料: Spring Webflux Websocket Security - Basic Authentication

0 个答案:

没有答案