迁移至Spring Security 6后认证失败:缺失client_secret参数
Spring Security 6迁移后OAuth请求丢失client_secret参数问题
我正在把微服务迁移到Spring Boot 3.0.2,配套使用Spring Security 6版本,但后台向OAuth Provider构建请求体时出了问题。查看日志发现client_secret字段始终被遗漏,导致请求缺失该参数,OAuth Provider返回401 UNAUTHORIZED,错误信息如下:
Decoded [{error=true, type=invalid_client, message=Missing client_secret parameter, details={name=OAuth2Error, message=Missing client_secret parameter, headers={WWW-Authenticate=Basic realm="Service"}, code=401, error=invalid_client, error_description=Missing client_secret parameter}}]
需要说明的是,在迁移到Spring Security 6之前(使用Spring Security 5.X版本),这个功能是正常运行的。
- 应用能正确从环境变量中读取
client_secret的值 - 日志明确显示
client_secret字段在请求构建时被忽略 - 之前用Spring Security旧版本发送的请求里包含
client_secret参数,能成功通过验证 - 我的Spring配置里已经正确配置了client_id和client_secret相关项
- 我尝试过多种方式重写WebSecurityConfig,但都没能解决问题
内容的提问来源于stack exchange,提问作者Guilherme Marcelino da Silva
相关产品推荐
相关产品推荐

