From 73f64241351eccfd83f5e79375a691f0d7d0b376 Mon Sep 17 00:00:00 2001 From: "shengzhaoli.shengz" Date: Wed, 18 Oct 2023 21:23:48 +0800 Subject: [PATCH] db table html v3.0.0 --- others/db_table_description_3.0.0.html | 340 ++++++++++++++++++ .../clientdetails/client_details.html | 2 +- 2 files changed, 341 insertions(+), 1 deletion(-) create mode 100644 others/db_table_description_3.0.0.html diff --git a/others/db_table_description_3.0.0.html b/others/db_table_description_3.0.0.html new file mode 100644 index 0000000..8a81a3c --- /dev/null +++ b/others/db_table_description_3.0.0.html @@ -0,0 +1,340 @@ + + + + + 数据库表说明(oauth.ddl) + + + +
+

spring-oauth-server 数据库表说明 + v3.0.0 +

+ +

以下对spring-oauth-server项目中的 + oauth.ddl initial_db.ddl文件(位于/others/database目录)中的表字及段进行说明, + 内容包括字段说明与使用场景等

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名字段名字段类型字段说明
oauth2_registered_clientidvarchar主键,系统自动生成
archivedtinyint + 用于标识客户端是否已存档(即实现逻辑删除),默认值为'0'(即未存档). +
+ 对该字段的具体使用请参考CustomJdbcClientDetailsService.java,在该类中,扩展了在查询client_details的SQL加上archived + = 0条件 (扩展字段) +
create_timedatetime数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段)
updated_timetimestamp数据的最后更新时间,由数据库自行更新维护
client_idvarchar + 唯一,不能为空. +
+ 用于唯一标识每一个客户端(client); 在注册时必须填写(也可由服务端自动生成). +
+ 对于不同的grant_type,该字段都是必须的. 在实际应用中的另一个名称叫appKey,与client_id是同一个概念. +
client_id_issued_attimestampclient_id的签发时间, 默认为数据创建时间
client_secret + 用于指定客户端(client)的访问密匙; 在注册时必须填写(也可由服务端自动生成),加密保存. +
+ 对于不同的grant_type,该字段都是必须的. 在实际应用中的另一个名称叫appSecret,与client_secret是同一个概念. +
client_secret_expires_atdatetimeclient_secret的过期时间,null表示永不过期
client_namevarchar客户端(client)的名称,一般是一个有业务意义的名称
client_authentication_methodsvarchar认证支持的方式,多个由逗号分隔; 如: client_secret_basic,client_secret_post; 一般指认证时传递client_secret支持哪些方式
authorization_grant_typesvarchar + 指定客户端支持的grant_type,可选值包括authorization_code,urn:ietf:params:oauth:grant-type:device_code,refresh_token, + urn:ietf:params:oauth:grant-type:jwt-bearer,client_credentials, + 若支持多个grant_type用逗号(,)分隔,如: "authorization_code,refresh_token". +
+ 在实际应用中,当注册时,该字段是一般由服务器端指定的,而不是由申请者去选择的,最常用的grant_type组合有: + "authorization_code,refresh_token"(针对通过浏览器访问的客户端); + "client_credentials"(针对另一个服务端的场景,不需要用户参与). +
+ urn:ietf:params:oauth:grant-type:device_codeurn:ietf:params:oauth:grant-type:jwt-bearer是OAuth2.1中新增. +
redirect_urisvarchar + OAuth2 认证后回调uri, 一般传递code, 多个由逗号分隔; + 可为空, 当grant_type为authorization_code时, + 在OAuth的流程中会使用并检查与注册时填写的redirect_uri是否一致. 下面分别说明: +
    +
  • + 当grant_type=authorization_code时, 第一步 从 spring-oauth-server获取 + 'code'时客户端发起请求时必须有redirect_uri参数, 该参数的值必须与 + web_server_redirect_uri的值一致. 第二步 用 'code' 换取 'access_token' + 时客户也必须传递相同的redirect_uri. +
    + 在实际应用中, redirect_uris在注册时是必须填写的, 一般用来处理服务器返回的code, + 验证state是否合法与通过code去换取access_token值. +
    + 在spring-oauth-client项目中, + 可具体参考AuthorizationCodeController.java中的authorizationCodeCallback方法. +
  • +
+
post_logout_redirect_urisvarchar OAuth2 退出时 post 的客户端重定向 uri; 可选 多个由逗号分隔, 一般在client注册时可填写
scopesvarchar + 指定客户端申请的权限范围,可选值在OIDC协议中定义, + 包括openid,profile,email,address,phone;若有多个值用逗号(,)分隔,如: "openid,email". +
+ openid是必须有的,其他值若有则在获取的id_token中会包含对应的值. +
+ 在实际应该中, 该值一般由服务端指定, 常用的值为openid. +
client_settingsvarchar + 客户端的各类设置, 如是否支持PKCE,用户授权(consent)确认是否必须等; 详见代码ClientSettings.java; + 此字段存储JSON格式的数据值. +
token_settingsvarchar + 对token的各类设置; 如 token有效期, refresh_token有效期等; 详见代码TokenSettings.java; + 此字段存储JSON格式的数据值. +
+

+ 在项目中,主要操作oauth2_registered_client表的类是ClientDetailsController.java, + OauthClientDetails.java更多的细节请参考该类; 也可以根据实际的需要,去扩展或修改该类的实现. +

+
oauth2_authorizationcreate_time数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段)
token_id + 从服务器端获取到的access_token的值. +
token + 这是一个二进制的字段, 存储的数据是OAuth2AccessToken.java对象序列化后的二进制数据. +
authentication_id + 该字段具有唯一性, 是根据当前的username(如果有),client_id与scope通过MD5加密生成的. +
+ 具体实现请参考DefaultClientKeyGenerator.java类. +
user_name登录时的用户名
client_id
+

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

+
oauth_access_tokencreate_time数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段)
token_id + 该字段的值是将access_token的值通过MD5加密后存储的. +
token + 存储将OAuth2AccessToken.java对象序列化后的二进制数据, 是真实的AccessToken的数据值. +
authentication_id + 该字段具有唯一性, 其值是根据当前的username(如果有),client_id与scope通过MD5加密生成的. + 具体实现请参考DefaultAuthenticationKeyGenerator.java类. +
user_name登录时的用户名, 若客户端没有用户名(如grant_type="client_credentials"),则该值等于client_id
client_id
authentication + 存储将OAuth2Authentication.java对象序列化后的二进制数据. +
refresh_token + 该字段的值是将refresh_token的值通过MD5加密后存储的. +
+

+ 在项目中,主要操作oauth_access_token表的对象是JdbcTokenStore.java. + 更多的细节请参考该类. +

+
oauth_refresh_tokencreate_time数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段)
token_id + 该字段的值是将refresh_token的值通过MD5加密后存储的. +
token + 存储将OAuth2RefreshToken.java对象序列化后的二进制数据. +
authentication + 存储将OAuth2Authentication.java对象序列化后的二进制数据. +
+

+ 在项目中,主要操作oauth_refresh_token表的对象是JdbcTokenStore.java. + (与操作oauth_access_token表的对象一样);更多的细节请参考该类. +
+ 如果客户端的grant_type不支持refresh_token,则不会使用该表. +

+
oauth_codecreate_time数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段)
code + 存储服务端系统生成的code的值(未加密). +
authentication + 存储将AuthorizationRequestHolder.java对象序列化后的二进制数据. +
+

+ 在项目中,主要操作oauth_code表的对象是JdbcAuthorizationCodeServices.java. + 更多的细节请参考该类. +
+ 只有当grant_type为"authorization_code"时,该表中才会有数据产生; 其他的grant_type没有使用该表. +

+
+ +

+ © 2013 - 2023 spring-oauth-server +

+
+ + + \ No newline at end of file diff --git a/src/main/resources/templates/clientdetails/client_details.html b/src/main/resources/templates/clientdetails/client_details.html index 7322b39..3150d3a 100644 --- a/src/main/resources/templates/clientdetails/client_details.html +++ b/src/main/resources/templates/clientdetails/client_details.html @@ -77,7 +77,7 @@
对数据库表的详细说明请访问 https://andaily.com/spring-oauth-server/db_table_description_3.0.0.html - (或访问项目others目录的db_table_description.html文件) + (或访问项目others目录的db_table_description_3.0.0.html文件)