From a4ac439555fd918f1bc7333286cec871693ff704 Mon Sep 17 00:00:00 2001 From: "shengzhaoli.shengz" Date: Thu, 19 Oct 2023 15:31:36 +0800 Subject: [PATCH] db table html v3.0.0 --- others/db_table_description_3.0.0.html | 234 +++++++++++++++++++------ 1 file changed, 176 insertions(+), 58 deletions(-) diff --git a/others/db_table_description_3.0.0.html b/others/db_table_description_3.0.0.html index 4024298..b730909 100644 --- a/others/db_table_description_3.0.0.html +++ b/others/db_table_description_3.0.0.html @@ -2,7 +2,7 @@ - 数据库表说明(oauth.ddl) + 数据库表说明 - spring-oauth-server @@ -172,97 +172,215 @@ - oauth2_authorization - create_time - 数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段) + oauth2_authorization + id + varchar + 主键 - token_id + registered_client_id + varchar - 从服务器端获取到的access_token的值. + 外键, 关联oauth2_registered_client的id字段 - token - - 这是一个二进制的字段, 存储的数据是OAuth2AccessToken.java对象序列化后的二进制数据. - + principal_name + varchar + 认证名称, 一般指用户名或clientId; 对应OIDC中的sub字段 - authentication_id - - 该字段具有唯一性, 是根据当前的username(如果有),client_id与scope通过MD5加密生成的. -
- 具体实现请参考DefaultClientKeyGenerator.java类. - + authorization_grant_type + varchar + OAuth2的 grant_type 类型 - user_name - 登录时的用户名 + authorized_scopes + varchar + 此次授权的范围(scope) - client_id - + attributes + blob + 进行认证授权的各类信息,JSON格式 - -

- 该表用于在客户端系统中存储从服务端获取的token数据, - 在spring-oauth-server项目中未使用到. -
- 对oauth_client_token表的主要操作在JdbcClientTokenServices.java类中, 更多的细节请参考该类. -

- + state + varchar + 认证请求中传递的 state 值 - - oauth_access_token - create_time - 数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段) + authorization_code_value + blob + authorization_code流程中的code值 - token_id - - 该字段的值是将access_token的值通过MD5加密后存储的. - + authorization_code_issued_at + datetime + authorization_code流程中的code签发时间 - token - - 存储将OAuth2AccessToken.java对象序列化后的二进制数据, 是真实的AccessToken的数据值. - + authorization_code_expires_at + datetime + authorization_code流程中的code过期时间 - authentication_id - - 该字段具有唯一性, 其值是根据当前的username(如果有),client_id与scope通过MD5加密生成的. - 具体实现请参考DefaultAuthenticationKeyGenerator.java类. - + authorization_code_metadata + blob + authorization_code流程中的code的属性设置, 如值是否有效 - user_name - 登录时的用户名, 若客户端没有用户名(如grant_type="client_credentials"),则该值等于client_id + access_token_value + blob + access_token 值 - client_id - + access_token_issued_at + datetime + access_token 签发时间 - authentication - - 存储将OAuth2Authentication.java对象序列化后的二进制数据. - + access_token_expires_at + datetime + access_token 过期时间 - refresh_token - - 该字段的值是将refresh_token的值通过MD5加密后存储的. + access_token_metadata + blob + access_token 属性设置, 如各类claims中的属性与值 + + + access_token_type + varchar + access_token 类型, 一般是Bearer + + + access_token_scopes + varchar + 此次授权的scope范围值,如: openid,profile + + + oidc_id_token_value + blob + OIDC中id_token 值 + + + oidc_id_token_issued_at + datetime + id_token 签发时间 + + + oidc_id_token_expires_at + datetime + id_token 过期时间 + + + oidc_id_token_metadata + blob + id_token 属性设置, 如各类claims中的属性与值 + + + refresh_token_value + blob + refresh_token 值 + + + refresh_token_issued_at + datetime + refresh_token 签发时间 + + + refresh_token_expires_at + datetime + refresh_token 过期时间 + + + refresh_token_metadata + blob + refresh_token 属性设置, 如是否复用(reuse) + + + user_code_value + blob + device_code流程中的user_code值 + + + user_code_issued_at + datetime + user_code 签发时间 + + + user_code_expires_at + datetime + user_code 过期时间 + + + user_code_metadata + blob + user_code 属性设置, 如是否已经验证 + + + device_code_value + blob + device_code流程中的device_code值 + + + device_code_issued_at + datetime + device_code 签发时间 + + + device_code_expires_at + datetime + device_code 过期时间 + + + device_code_metadata + blob + device_code 属性设置, 如是否已经验证 + + + updated_time + timestamp + 数据的最后修改时间, 由数据库自动维护更新 + + + +

+ 该表用于存储在OAuth2.1授权过程中各类信息数据, 支持各类grant_type场景; + 对oauth2_authorization表的主要操作在JdbcOAuth2AuthorizationService.java类中, 更多的细节请参考该类. +
+ 注意: 若对性能有要求, 此表的数据存储设计需要进行优化(如存redis或利用JWT特性简化一些不必要的存储字段). +

+ - + oauth2_authorization_consent + registered_client_id + varchar + 外键, 关联oauth2_registered_client表的id字段 + + + principal_name + varchar + 认证名称, 一般指用户名或clientId; 对应OIDC中的sub字段 + + + authorities + varchar + 授权确认过期中的属性, 如scope范围 + + + updated_time + timestamp + 数据的最后修改时间, 由数据库自动维护更新 + + +

- 在项目中,主要操作oauth_access_token表的对象是JdbcTokenStore.java. + 该表主要存储在授权过程中需要用户进行确认(consent)的信息; + 在项目中,主要操作oauth2_authorization_consent表的对象是JdbcOAuth2AuthorizationConsentService.java. 更多的细节请参考该类.