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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【R语言】plyr包和dplyr包

一、plyr包 plyr扩展包主要是实现数据处理中的“分割-应用-组合”(split-apply-combine)策略。此策略是指将一个问题分割成更容易操作的部分,再对每一部分进行独立的操作,最后将各部分的操作结果组合起来。 plyr扩展包中的主要函…

【DeepSeek】DeepSeek小模型蒸馏与本地部署深度解析DeepSeek小模型蒸馏与本地部署深度解析

一、引言与背景 在人工智能领域,大型语言模型(LLM)如DeepSeek以其卓越的自然语言理解和生成能力,推动了众多应用场景的发展。然而,大型模型的高昂计算和存储成本,以及潜在的数据隐私风险,限制了…

程序员也可以这样赚钱

最近有朋友和我交流了关于程序员副业的想法,我想借这个机会对目前软件开发常用的兼职平台做一个梳理。 以下是程序员接副业的靠谱平台推荐,结合政策合规性、平台口碑及实际操作性整理,覆盖国内外主流选择: 一、国内综合型平台 程序…

【AI】在Ubuntu中使用docker对DeepSeek的部署与使用

这篇文章前言是我基于部署好的deepseek-r1:8b模型跑出来的 关于部署DeepSeek的前言与介绍 在当今快速发展的技术环境中,有效地利用机器学习工具来解决问题变得越来越重要。今天,我将引入一个名为DeepSeek 的工具,它作为一种强大的搜索引擎&a…

代码随想录算法【Day39】

Day39 198.打家劫舍 class Solution { public:int rob(vector<int>& nums) {if (nums.size() 0) return 0;if (nums.size() 1) return nums[0];vector<int> dp(nums.size());dp[0] nums[0];dp[1] max(nums[0], nums[1]);for (int i 2; i < nums.size…

TCP三次握手全方面详解

文章目录 (1) 三次握手各状态CLOSE状态SYN_SENT状态SYN_RECV状态ESTABLISHED状态 (2) 为什么握手时的seqnum是随机值&#xff0c;以及acknum的功能(3) 三次握手中的半连接队列&#xff08;SYN队列&#xff09;和全连接队列&#xff08;ACCEPT队列&#xff09;半连接队列全连接队…

数据结构与算法-递归

单路递归 二分查找 /*** 主函数&#xff1a;执行二分查找。* * param a 要搜索的数组&#xff08;必须是已排序的&#xff09;* param target 目标值* return 返回目标值在数组中的索引&#xff1b;如果未找到&#xff0c;则返回 -1*/ public static int binarySearch(int[] …

软中断和tasklet的区别是什么?

软中断和 tasklet 都是 Linux 内核中用于实现异步事件处理的机制&#xff0c;它们的主要区别如下&#xff1a; 实现机制 软中断&#xff1a;是一种基于软件触发的中断机制&#xff0c;在内核中是一组静态定义的、预先分配好的软中断向量。每个软中断都有一个唯一的编号和对应…

Termux安装ssh实现电脑ssh

Termux下载 点击下载 在 Termux 中安装并使用 SSH&#xff0c;按照以下步骤操作&#xff1a; 1. 更新软件包列表 pkg update && pkg upgrade2. 安装 OpenSSH pkg install openssh3. 设置 SSH 密码&#xff08;必须&#xff0c;否则无法使用 SSH 服务器&#xff09…

深入理解 C++17 std::is_swappable

文章目录 深入理解 C17 std::is_swappable引言std::is_swappable 概述std::is_swappable 的工作原理std::is_swappable 的变体注意事项结论 深入理解 C17 std::is_swappable 引言 在 C 编程中&#xff0c;交换两个对象的值是一个常见的操作。为了确保代码的通用性和安全性&am…

51单片机之冯·诺依曼结构

一、概述 8051系列单片机将作为控制应用最基本的内容集成在一个硅片上&#xff0c;其内部结构如图4-1所示。作为单一芯片的计算机&#xff0c;它的内部结构与一台计算机的主机非常相似。其中微处理器相当于计算机中的CPU&#xff0c;由运算器和控制器两个部分构成&#xff1b;…

w~Transformer~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12406495 #transformer~x1 太可怕了都到6了 太强~~ DeepMind 表示&#xff0c;他们提出的算法蒸馏&#xff08;AD&#xff09;是首个通过对具有模仿损失的离线数据进行顺序建模以展示上下文强化学习的方法。同时基于观察…

c#对接deepseek 聊天AI接口

注意&#xff1a;不是免费 对接文档&#xff1a;对话补全 | DeepSeek API Docs 注册地址&#xff1a;DeepSeek 申请key 在线请求示例 apifox deepseek - deepseek

23.PPT:校摄影社团-摄影比赛作品【5】

目录 NO12345​ NO6 NO7/8/9/10​ 单元格背景填充表格背景填充文本框背景填充幻灯片背景格式设置添加考生文件夹下的版式 NO12345 插入幻灯片和放入图片☞快速&#xff1a;插入→相册→新建相册→文件→图片版式→相框形状→调整边框宽度左下角背景图片&#xff1a;视图→…

创新领先!珈和科技获评省级企业技术中心

为充分发挥中小企业创新主体作用&#xff0c;提高自主创新、集成创新和引进消化吸收再创新能力&#xff0c;增强创新驱动发展的动力&#xff0c;做好专精特新“小巨人”企业的培育工作。 近日&#xff0c;湖北省经信厅对申报2024年湖北省中小企业技术中心的企业进行审核认定并…

Android车机DIY开发之软件篇(十二)编译Automotive OS错误(3)

Android车机DIY开发之软件篇(十二)编译Automotive OS错误(3) 问题 [ 85% 113538/132897] //hardware/interfaces/neuralnetworks/1.1/utils:neuralnetworks_utils_hal_1_1 clang src/Device.cpp [ 85% 113539/132897] //hardware/interfaces/neuralnetworks/1.1/utils:neural…

初次体验Tauri和Sycamore (2)

原创作者&#xff1a;庄晓立&#xff08;LIIGO&#xff09; 原创时间&#xff1a;2025年2月8日&#xff08;首次发布时间&#xff09; 原创链接&#xff1a;https://blog.csdn.net/liigo/article/details/145520637 版权所有&#xff0c;转载请注明出处。 关键词&#xff1a;Sy…

iPhone 在华销量大幅下挫

iPhone在乔布斯时代缔造的神话在中国正逐渐走向没落&#xff0c;挤牙膏式的升级方式类似于诺基亚的N70系列&#xff0c;毫无新意的创新能力&#xff0c;求稳着陆的经营理念&#xff0c;工艺和美学不再独领风骚&#xff0c;甚至拍照领域和AI增强计算&#xff0c;折叠屏等技术领域…

vs封装dll 给C#使用

一&#xff0c;vs创建控制台应用 创建控制台应用得好处时&#xff0c;我们可以自己测试接口&#xff0c;如果接口没有问题&#xff0c;改成dll重新编译一遍就可以。 二&#xff0c; 创建一个c 类&#xff0c;将所需提供得功能 封装到类中。 这样可以将 所有功能&#xff0c;进…

悬链线的方程及其推导过程

悬链线的方程及其推导过程 悬链线是描述理想链条或柔软绳索在重力作用下的自然形态的数学曲线。其特征在于&#xff1a;如果将一根均匀、不可伸长的链条两端悬挂在固定点上&#xff0c;链条所呈现的形状就会遵循一种特殊的曲线&#xff0c;这个曲线就是悬链线。 悬链线的方程…