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

Spring Authorization Server 1.1.1 Schema及相关技术问题咨询

Spring Authorization Server 1.1.1 相关问题解答

1. Spring Authorization Server 1.1.1 版本 Schema

以下是官方定义的核心表结构(以MySQL为例,其他数据库可调整对应数据类型):

-- 已注册客户端表
CREATE TABLE oauth2_registered_client (
    id VARCHAR(100) NOT NULL PRIMARY KEY,
    client_id VARCHAR(100) NOT NULL,
    client_id_issued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    client_secret VARCHAR(200) DEFAULT NULL,
    client_secret_expires_at TIMESTAMP DEFAULT NULL,
    client_name VARCHAR(200) NOT NULL,
    client_authentication_methods VARCHAR(1000) NOT NULL,
    authorization_grant_types VARCHAR(1000) NOT NULL,
    redirect_uris VARCHAR(1000) DEFAULT NULL,
    post_logout_redirect_uris VARCHAR(1000) DEFAULT NULL,
    scopes VARCHAR(1000) NOT NULL,
    client_settings VARCHAR(2000) NOT NULL,
    token_settings VARCHAR(2000) NOT NULL
);

-- 授权记录表
CREATE TABLE oauth2_authorization (
    id VARCHAR(100) NOT NULL PRIMARY KEY,
    registered_client_id VARCHAR(100) NOT NULL,
    principal_name VARCHAR(200) NOT NULL,
    authorization_grant_type VARCHAR(100) NOT NULL,
    authorized_scopes VARCHAR(1000) DEFAULT NULL,
    attributes TEXT DEFAULT NULL,
    state VARCHAR(500) DEFAULT NULL,
    authorization_code_value TEXT DEFAULT NULL,
    authorization_code_issued_at TIMESTAMP DEFAULT NULL,
    authorization_code_expires_at TIMESTAMP DEFAULT NULL,
    authorization_code_metadata TEXT DEFAULT NULL,
    access_token_value TEXT DEFAULT NULL,
    access_token_issued_at TIMESTAMP DEFAULT NULL,
    access_token_expires_at TIMESTAMP DEFAULT NULL,
    access_token_metadata TEXT DEFAULT NULL,
    access_token_type VARCHAR(100) DEFAULT NULL,
    access_token_scopes VARCHAR(1000) DEFAULT NULL,
    oidc_id_token_value TEXT DEFAULT NULL,
    oidc_id_token_issued_at TIMESTAMP DEFAULT NULL,
    oidc_id_token_expires_at TIMESTAMP DEFAULT NULL,
    oidc_id_token_metadata TEXT DEFAULT NULL,
    refresh_token_value TEXT DEFAULT NULL,
    refresh_token_issued_at TIMESTAMP DEFAULT NULL,
    refresh_token_expires_at TIMESTAMP DEFAULT NULL,
    refresh_token_metadata TEXT DEFAULT NULL,
    user_code_value TEXT DEFAULT NULL,
    user_code_issued_at TIMESTAMP DEFAULT NULL,
    user_code_expires_at TIMESTAMP DEFAULT NULL,
    user_code_metadata TEXT DEFAULT NULL,
    device_code_value TEXT DEFAULT NULL,
    device_code_issued_at TIMESTAMP DEFAULT NULL,
    device_code_expires_at TIMESTAMP DEFAULT NULL,
    device_code_metadata TEXT DEFAULT NULL,
    FOREIGN KEY (registered_client_id) REFERENCES oauth2_registered_client(id)
);

-- 授权同意记录表
CREATE TABLE oauth2_authorization_consent (
    registered_client_id VARCHAR(100) NOT NULL,
    principal_name VARCHAR(200) NOT NULL,
    authorities VARCHAR(1000) NOT NULL,
    PRIMARY KEY (registered_client_id, principal_name),
    FOREIGN KEY (registered_client_id) REFERENCES oauth2_registered_client(id)
);

2. 是否可以修改Schema中的表名和列名

可以修改,Spring Authorization Server提供了充足的扩展性支持自定义表结构:

  • 针对oauth2_registered_client表:自定义JdbcRegisteredClientRepository,要么实现RegisteredClientRepository接口,要么通过NamedParameterJdbcTemplate指定自定义表名和列名,同时自定义RegisteredClientRowMapper完成字段映射。
  • 针对oauth2_authorization和oauth2_authorization_consent表:同理,自定义JdbcOAuth2AuthorizationService和JdbcOAuth2AuthorizationConsentService,替换默认SQL语句和RowMapper,适配自定义的表名与列名即可。

3. oauth_client_details 与 oauth2_registered_client 的区别

  • 所属框架不同:oauth_client_details是旧版Spring Security OAuth 2.x(已归档)的客户端表;oauth2_registered_client是新一代OAuth2授权服务器实现Spring Authorization Server的客户端表。
  • 字段设计差异:oauth_client_details字段零散,单独存储scope、authorized_grant_types等配置;oauth2_registered_client采用更紧凑的设计,用逗号分隔字符串存储客户端认证方法、授权类型、作用域等,还新增了client_settings和token_settings字段,以JSON格式存储客户端的精细化配置(如token过期时间、是否强制PKCE等)。
  • 功能支持范围:oauth2_registered_client原生支持OAuth2.1规范的新特性(如PKCE、客户端认证方法扩展),而oauth_client_details仅支持旧版OAuth2规范,对新特性支持有限。
  • 扩展性:oauth2_registered_client的JSON配置字段可轻松扩展配置,无需修改表结构;oauth_client_details若要扩展需新增字段,灵活性较差。

4. 关于指定链接的Schema是否正确

该链接的Schema属于旧版Spring Security OAuth项目(已归档),并非Spring Authorization Server 1.1.1的Schema,因此对于Spring Authorization Server来说是不正确的,不能直接使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:56:10