Spring Oauth2 JDBC 实现中 OAUTH_CLIENT_TOKEN 表的目的是啥

Posted

技术标签:

【中文标题】Spring Oauth2 JDBC 实现中 OAUTH_CLIENT_TOKEN 表的目的是啥【英文标题】:What is the purpose of the OAUTH_CLIENT_TOKEN table in a Spring Oauth2 JDBC implementationSpring Oauth2 JDBC 实现中 OAUTH_CLIENT_TOKEN 表的目的是什么 【发布时间】:2021-12-26 00:56:05 【问题描述】:

您知道 OAUTH_CLIENT_TOKEN 表在 Spring Oauth2 服务器的 JDBC 实现中的用途是什么吗?

似乎永远不会填充该表,但是当客户端使用“客户端凭据”获取令牌时,其令牌会保存到 OAUTH_ACCESS_TOKEN 中,而不是使用空用户名保存到 OAUTH_CLIENT_TOKEN 中。

这里的表架构实际上非常相似。

drop table if exists oauth_client_token;
create table oauth_client_token
(
    token_id          VARCHAR(255),
    token             LONGBLOB,
    authentication_id VARCHAR(255),
    user_name         VARCHAR(255),
    client_id         VARCHAR(255)
);

drop table if exists oauth_access_token;
create table `oauth_access_token`
(
    token_id          VARCHAR(255),
    token             LONGBLOB,
    authentication_id VARCHAR(255) PRIMARY KEY,
    user_name         VARCHAR(255),
    client_id         VARCHAR(255),
    authentication    LONGBLOB,
    refresh_token     VARCHAR(255)
);

同样配置到 AuthorizationServerConfigurerAdapter

@Bean
public JdbcClientTokenServices clientTokenServices() 
    return new JdbcClientTokenServices(this.dataSource);


@Bean
public TokenStore tokenStore() 
    return new JdbcTokenStore(this.dataSource);

【问题讨论】:

您似乎指的是旧版spring-security-oauth project 中的一个表。这个项目是deprecated。请迁移到支持 OAuth 2.0 客户端支持的 Spring Security 版本。您可以按照官方迁移指南here。 @EleftheriaStein-Kousathana 谢谢我不知道它已被弃用...我发现另一个关于新授权服务器的主题here 【参考方案1】:

那张桌子似乎不再使用了。旧版 Spring oauth2 授权服务器将于 5 月 22 日结束。

【讨论】:

以上是关于Spring Oauth2 JDBC 实现中 OAUTH_CLIENT_TOKEN 表的目的是啥的主要内容,如果未能解决你的问题,请参考以下文章

Spring Oauth2 - 重新加载主体

如何绕过 Grails 异常处理以使用 Spring Oauth2?

Spring Boot + OAuth2 + Google Login - 如何实现注销

带有jdbc令牌存储的spring boot oauth2给出oauth_access_token关系不存在

任何用户的 jdbc-authentication 访问被拒绝 [OAUTH2]

如何使用 spring-social-security SocialAuthenticationFilter 指定 OAuth2 范围?