欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Spring(26) spring-security-oauth2 官方表结构解析

Spring(26) spring-security-oauth2 官方表结构解析

2025/2/9 11:03:47 来源:https://blog.csdn.net/qq_33204709/article/details/145509762  浏览:    关键词:Spring(26) spring-security-oauth2 官方表结构解析

目录

    • 一、什么是 spring-security-oauth2?
    • 二、spring-security-oauth2 的表结构
      • 2.1 oauth_client_details 客户端详细信息表
      • 2.2 oauth_access_token 认证授权Token记录表
      • 2.3 oauth_refresh_token 刷新授权Token记录表
      • 2.4 oauth_code 授权Code记录表

一、什么是 spring-security-oauth2?

Spring Security OAuth2 是 Spring Security 的一个扩展模块,用于支持 OAuth 2.0 协议。OAuth 2.0 是一个授权框架,允许第三方应用在用户授权下访问其资源,而无需共享用户凭证。

  • Spring Security OAuth2 提供了实现 OAuth 2.0 授权服务器、资源服务器和客户端的功能。

主要功能:

  1. 授权服务器:
    • 负责颁发访问令牌(Access Token)。
    • 支持多种授权模式,如授权码模式、密码模式、客户端凭证模式和简化模式。
  2. 资源服务器:
    • 保护受 OAuth 2.0 保护的资源。
    • 验证访问令牌并授权访问资源。
  3. 客户端:
    • 代表用户或应用访问受保护的资源。
    • 支持获取和使用访问令牌。

二、spring-security-oauth2 的表结构

spring-security-oauth2 的官方表结构文件:

  • https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql
-- used in tests that use HSQL
create table oauth_client_details (client_id VARCHAR(256) PRIMARY KEY,resource_ids VARCHAR(256),client_secret VARCHAR(256),scope VARCHAR(256),authorized_grant_types VARCHAR(256),web_server_redirect_uri VARCHAR(256),authorities VARCHAR(256),access_token_validity INTEGER,refresh_token_validity INTEGER,additional_information VARCHAR(4096),autoapprove VARCHAR(256)
);create table oauth_client_token (token_id VARCHAR(256),token LONGVARBINARY,authentication_id VARCHAR(256) PRIMARY KEY,user_name VARCHAR(256),client_id VARCHAR(256)
);create table oauth_access_token (token_id VARCHAR(256),token LONGVARBINARY,authentication_id VARCHAR(256) PRIMARY KEY,user_name VARCHAR(256),client_id VARCHAR(256),authentication LONGVARBINARY,refresh_token VARCHAR(256)
);create table oauth_refresh_token (token_id VARCHAR(256),token LONGVARBINARY,authentication LONGVARBINARY
);create table oauth_code (code VARCHAR(256), authentication LONGVARBINARY
);

2.1 oauth_client_details 客户端详细信息表

oauth_client_details 表的操作,主要集中在 JdbcClientDetailsService.java 类中。

字段注释
client_id主键(客户端ID)
resources_ids客户端所能访问的资源ID集合(多个资源用,分隔)
client_secret客户端访问密钥
scope客户端申请的权限范围(read/write/trust,多个权限用,分隔)
authorized_grant_types5种oauth授权方式(authorization_code;password;refresh_token;client_credentials)
web_server_redirect_uri回调地址,当grant_type为authorization_codeimplicit时, 在Oauth的流程中会使用并检查与数据库内的redirect_uri是否一致。
authorities客户端所拥有的Spring Security权限值(多个权限用,分隔)
access_token_validity设定客户端的access_token的有效时间值(单位:秒),若不设定值则使用默认的有效时间值(60 * 60 * 12, 12小时)
refresh_token_validity设定客户端的refresh_token的有效时间值(单位:秒),若不设定值则使用默认的有效时间值(60 * 60 * 24 * 30, 30天)
additional_infomation这是一个预留的字段,在Oauth的流程中没有实际的使用,可选,但若设置值,必须是JSON格式的数据
autoapprove设置用户是否自动批准授予权限操作, 默认值为 ‘false’, 可选值包括 ‘true’,‘false’, ‘read’,‘write’.

2.2 oauth_access_token 认证授权Token记录表

oauth_access_token 表的操作主要集中在 JdbcTokenStore.java 类中。

字段注释
client_id认证授权客户端ID
token_idToken标识:通过MD5加密access_token的值
tokenOAuth2AccessToken.java对象序列化内容
user_name用户名,若客户端没有用户名则该值等于client_id
authentication_id根据当前的username、client_id与scope通过MD5加密生成该字段的值
authenticationOAuth2Authentication.java对象序列化内容
refresh_tokenRefreshToken标识:通过MD5加密refresh_token的值
create_time记录创建时间

2.3 oauth_refresh_token 刷新授权Token记录表

oauth_refresh_token 的操作主要集中在 JdbcTokenStore.java 类中。

字段注释
token_idRefreshToken标识:通过MD5加密refresh_token的值
tokenOAuth2RefreshToken.java对象序列化内容
authenticationOAuth2Authentication.java对象序列化内容
create_time记录创建时间

2.4 oauth_code 授权Code记录表

oauth_code 的操作主要集中在 JdbcAuthorizationCodeSerivces.java 类中。

字段注释
authenticationAuthorizationRequestHolder.java对象序列化内容
code存储服务端系统生成的code的值(未加密)
create_time记录创建时间

整理完毕,完结撒花~🌻





参考地址:

1.Spring Security Oauth2 官方表结构解析,字段详解,https://blog.csdn.net/yangxiao_hui/article/details/109100140
2.Oauth2详解-介绍(一),https://www.jianshu.com/p/84a4b4a1e833

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com