SpringBoot OAuth2客户端请求响应日志显示headers={masked}问题求助
解决WebClient请求/响应Headers显示{masked}的问题
1. 修正日志配置
确保日志级别覆盖WebClient核心包,且仅指定需要屏蔽的Header:
logging: level: org.springframework.web.reactive.function.client: TRACE # 扩大日志范围到WebClient全包 org.springframework.web.reactive.function.client.ExchangeFunctions: TRACE pattern: console: "%d [%t] %-5level %logger{36} - %msg%n" encoder: mask: headers: - "authorization" # 仅屏蔽授权头,其余Header正常输出 spring.codec.log-request-details: true
2. 确认WebClient配置生效
检查WebClient构建代码,确保enableLoggingRequestDetails配置正确(以下为Kotlin写法):
@Bean fun webClient(oauth: OAuth2AuthorizedClientExchangeFilterFunction): WebClient { return WebClient.builder() .exchangeStrategies( ExchangeStrategies.builder() .codecs { configurer -> configurer.defaultCodecs().enableLoggingRequestDetails(true) } .build() ) .filter(oauth) .build() }
Java对应写法:
@Bean public WebClient webClient(OAuth2AuthorizedClientExchangeFilterFunction oauth) { return WebClient.builder() .exchangeStrategies( ExchangeStrategies.builder() .codecs(configurer -> configurer.defaultCodecs().enableLoggingRequestDetails(true)) .build() ) .filter(oauth) .build(); }
3. 排查OAuth2 Filter影响
临时将org.springframework.security.oauth2.client日志级别设为DEBUG,确认授权头正常添加,同时排查该Filter是否存在额外的Header屏蔽逻辑。
4. 检查全局日志屏蔽配置
如果项目使用Logback自定义MaskingFilter或其他日志增强插件,确保这些配置未全局屏蔽所有Header,仅针对authorization头处理。
完成以上配置后重启应用,即可查看除authorization外的完整请求/响应Headers,以及请求体、响应体的详细日志(需日志级别支持)。
内容的提问来源于stack exchange,提问作者Hak Sh.
相关产品推荐
相关产品推荐

