You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security 5使用JdbcOauth2AuthorizedClientService持久化OAuth2授权客户端报错

JdbcOauth2AuthorizedClientService 持久化授权信息失败并返回500错误

尝试在无状态微服务中使用JdbcOauth2AuthorizedClientService持久化access_token、refresh_token等授权客户端信息,但遇到以下错误,无法获取所需资源,授权客户端信息也从未保存到Postgres中。

错误信息

[invalid_token_response] 尝试获取OAuth 2.0访问令牌响应时出错:500内部服务器错误:"{"timestamp":1672302575797,"status":500,"error":"Internal Server Error","exception":"org.glassfish.jersey.server.internal.process.MappableException","message":"java.lang.IllegalArgumentException: Unsupported contentType: application/json","path":"/oauth2-v1/oauth2/token"}"

使用InMemoryOAuth2AuthorizedClientService实现时,OAuth2流程运行正常,错误信息看起来与JDBC/数据库连接无关。此实现选择是参考Stack Overflow相关答案做出的。

Postgres数据库表结构

CREATE TABLE oauth2_authorized_client (
  client_registration_id varchar(100) NOT NULL,
  principal_name varchar(200) NOT NULL,
  access_token_type varchar(100) NOT NULL,
  access_token_value bytea NOT NULL,
  access_token_issued_at timestamp NOT NULL,
  access_token_expires_at timestamp NOT NULL,
  access_token_scopes varchar(1000) DEFAULT NULL,
  refresh_token_value bytea DEFAULT NULL,
  refresh_token_issued_at timestamp DEFAULT NULL,
  created_at timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
  PRIMARY KEY (client_registration_id, principal_name)
);

已尝试的操作

  • 查阅LobHandler接口文档,其中提到不同数据库驱动对BLOB数据类型的处理行为不同,针对Postgres,文档建议创建wrapAsLob=true的DefaultLobHandler

内容的提问来源于stack exchange,提问作者Randy Mujica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:45:32