我使用springcloudgateway实现了一个网关服务,将请求路由到不同的下游微服务。我有一些消费者通过x509双向ssl认证。当证书在网关中被剥离时,必须从身份验证对象获取用户,并将其作为请求的一部分传播到下游微服务。
我尝试在身份验证后过滤器中使用reactivesecuritycontext从身份验证对象中检索此用户并将其设置为header,但身份验证对象始终返回为“null”。我用的代码是
ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication)
.map((authentication)
我的安全配置类如下所示。
@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http)
{
return http
.x509(Customizer.withDefaults())
.authorizeExchange(exchanges -> exchanges.anyExchange().authenticated())
.build();
}
有没有人可以帮助回答一个好的方法来读取过滤器中的身份验证,或者在将请求转发到下游之前将用户从身份验证设置为请求。
暂无答案!
目前还没有任何答案,快来回答吧!