OAuth2 oauth_client_details,oauth_access_token,oauth_refresh_token表结构

姜德容
2023-12-01

       OAuth2 oauth_client_details,oauth_access_token,oauth_refresh_token表结构

      最近在整理oauth2项目,今天记录分享一下在网上查找的一些表结构资料,以后大家查阅,OAuth2有四种认证方式,其中client_credentials模式在使用时它的AUTHORITIES是使用表oauth_client_details
中AUTHORITIES的权限范围。

                                                                                                                    表名 oauth_client_details

字段名字段约束详细描述范例
client_id主键,必须唯一,不能为空用于唯一标识每一个客户端(client);注册时必须填写(也可以服务端自动生成),这个字段是必须的,实际应用也有叫app_keyOaH1heR2E4eGnBr87Br8FHaUFrA2Q0kE8HqZgpdg8Sw
resource_ids不能为空,用逗号分隔客户端能访问的资源id集合,注册客户端时,根据实际需要可选择资源id,也可以根据不同的额注册流程,赋予对应的额资源idorder-resource,pay-resource
client_secret必须填写注册填写或者服务端自动生成,实际应用也有叫app_secret, 必须要有前缀代表加密方式{bcrypt}gY/Hauph1tqvVWiH4atxteSH8sRX03IDXRIQi03DVTFGzKfz8ZtGi
scope不能为空,用逗号分隔指定client的权限范围,比如读写权限,比如移动端还是web端权限read,write / web,mobile
authorized_grant_types不能为空可选值 授权码模式:authorization_code,密码模式:password,刷新token: refresh_token, 隐式模式: implicit: 客户端模式: client_credentials。支持多个用逗号分隔password,refresh_token
web_server_redirect_uri可为空客户端重定向uri,authorization_code和implicit需要该值进行校验,注册时填写,httt://baidu.com
authorities可为空指定用户的权限范围,如果授权的过程需要用户登陆,该字段不生效,implicit和client_credentials需要ROLE_ADMIN,ROLE_USER
access_token_validity可空设置access_token的有效时间(秒),默认(606012,12小时)3600
refresh_token_validity可空设置refresh_token有效期(秒),默认(606024*30, 30填)7200
additional_information可空值必须是json格式{"key", "value"}
autoapprovefalse/true/read/write默认false,适用于authorization_code模式,设置用户是否自动approval操作,设置true跳过用户确认授权操作页面,直接跳到redirect_uriFALSE

                                                                                                                       表名:oauth_access_token

create_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_refresh_token

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

 

还有两张表不过在我们项目没有实现,大家用到可以参考下列连接。

参考:https://www.jianshu.com/p/c1c6c966c3a7
https://blog.csdn.net/u013938484/article/details/106238189

 

 

 类似资料: