以下对spring-oauth-server项目中的
oauth.ddl
initial_db.ddl
文件(位于/others/database目录)中的表字及段进行说明,
内容包括字段说明与使用场景等
表名 | 字段名 | 字段类型 | 字段说明 |
---|---|---|---|
oauth2_registered_client | id | varchar | 主键,系统自动生成 |
archived | tinyint |
用于标识客户端是否已存档(即实现逻辑删除),默认值为'0'(即未存档).
对该字段的具体使用请参考 CustomJdbcClientDetailsService.java ,在该类中,扩展了在查询client_details的SQL加上archived
= 0条件 (扩展字段)
|
|
create_time | datetime | 数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段) | |
updated_time | timestamp | 数据的最后更新时间,由数据库自行更新维护 | |
client_id | varchar |
唯一,不能为空.
用于唯一标识每一个客户端(client); 在注册时必须填写(也可由服务端自动生成). 对于不同的grant_type,该字段都是必须的. 在实际应用中的另一个名称叫appKey,与client_id是同一个概念. |
|
client_id_issued_at | timestamp | client_id的签发时间, 默认为数据创建时间 | |
client_secret | varchar |
用于指定客户端(client)的访问密匙; 在注册时必须填写(也可由服务端自动生成),加密保存.
对于不同的grant_type,该字段都是必须的. 在实际应用中的另一个名称叫appSecret,与client_secret是同一个概念. |
|
client_secret_expires_at | datetime | client_secret的过期时间,null表示永不过期 | |
client_name | varchar | 客户端(client)的名称,一般是一个有业务意义的名称 | |
client_authentication_methods | varchar | 认证支持的方式,多个由逗号分隔; 如: client_secret_basic,client_secret_post; 一般指认证时传递client_secret支持哪些方式 | |
authorization_grant_types | varchar |
指定客户端支持的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_code与urn:ietf:params:oauth:grant-type:jwt-bearer是OAuth2.1中新增. |
|
redirect_uris | varchar |
OAuth2 认证后回调uri, 一般传递code, 多个由逗号分隔;
可为空, 当grant_type为authorization_code 时,
在OAuth的流程中会使用并检查与注册时填写的redirect_uri是否一致. 下面分别说明:
|
|
post_logout_redirect_uris | varchar | OAuth2 退出时 post 的客户端重定向 uri; 可选 多个由逗号分隔, 一般在client注册时可填写 | |
scopes | varchar |
指定客户端申请的权限范围,可选值在OIDC协议中定义,
包括openid,profile,email,address,phone;若有多个值用逗号(,)分隔,如:
"openid,email".
openid是必须有的,其他值若有则在获取的 id_token 中会包含对应的值.
在实际应该中, 该值一般由服务端指定, 常用的值为openid. |
|
client_settings | varchar |
客户端的各类设置, 如是否支持PKCE,用户授权(consent)确认是否必须等; 详见代码ClientSettings.java ;
此字段存储JSON格式的数据值.
|
|
token_settings | varchar |
对token的各类设置; 如 token有效期, refresh_token有效期等; 详见代码TokenSettings.java ;
此字段存储JSON格式的数据值.
|
|
在项目中,主要操作 |
|||
oauth2_authorization | id | varchar | 主键 |
registered_client_id | varchar |
外键, 关联oauth2_registered_client 的id字段
|
|
principal_name | varchar | 认证名称, 一般指用户名或clientId; 对应OIDC中的sub字段 | |
authorization_grant_type | varchar | OAuth2的 grant_type 类型 | |
authorized_scopes | varchar | 此次授权的范围(scope) | |
attributes | blob | 进行认证授权的各类信息,JSON格式 | |
state | varchar | 认证请求中传递的 state 值 | |
authorization_code_value | blob | authorization_code 流程中的code值 |
|
authorization_code_issued_at | datetime | authorization_code 流程中的code签发时间 |
|
authorization_code_expires_at | datetime | authorization_code 流程中的code过期时间 |
|
authorization_code_metadata | blob | authorization_code 流程中的code的属性设置, 如值是否有效 |
|
access_token_value | blob | access_token 值 | |
access_token_issued_at | datetime | access_token 签发时间 | |
access_token_expires_at | datetime | access_token 过期时间 | |
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授权过程中各类信息数据,
支持各类 |
|||
oauth2_authorization_consent | registered_client_id | varchar | 外键, 关联oauth2_registered_client 表的id字段 |
principal_name | varchar | 认证名称, 一般指用户名或clientId; 对应OIDC中的sub字段 | |
authorities | varchar | 授权确认过期中的属性, 如scope范围 | |
updated_time | timestamp | 数据的最后修改时间, 由数据库自动维护更新 | |
该表主要存储在授权过程中需要用户进行确认(consent)的信息;
在项目中,主要操作 |
|||
user_ | id | int | 主键, 自增长, 数据库自动生成 |
guid | varchar | 唯一, 业务id | |
create_time | datetime | 数据创建时间 | |
updated_time | timestamp | 数据的最后修改时间, 由数据库自动维护更新 | |
username | varchar | 用户名, 非空, 唯一 | |
password | varchar | 密码, 加密存储, 非空 | |
enabled | tinyint | 是否启用, 默认1(即启用) | |
phone | varchar | 手机号 | |
varchar | 邮箱地址 | ||
address | varchar | 个人地址 | |
nickname | varchar | 用户昵称, 别名 | |
updated_at | int | 最后数据更新时间值 | |
default_user | tinyint | 是否默认用户, 默认0(不是); 只用在初始化数据时使用 | |
last_login_time | datetime | 最后登录时间 | |
在项目中,主要使用 |
|||
user_privilege | user_id | int | 外键, 关联user_ 的id字段 |
privilege | varchar | 权限值, 如: ROLE_USER | |
此表存储用户的权限值, 一个用户可以有多个权限值. |
© 2013 - 2023 spring-oauth-server