最近在整理oauth2项目,今天记录分享一下在网上查找的一些表结构资料,以后大家查阅,OAuth2有四种认证方式,其中client_credentials模式在使用时它的AUTHORITIES是使用表oauth_client_details
中AUTHORITIES的权限范围。
表名 oauth_client_details
字段名 | 字段约束 | 详细描述 | 范例 |
client_id | 主键,必须唯一,不能为空 | 用于唯一标识每一个客户端(client);注册时必须填写(也可以服务端自动生成),这个字段是必须的,实际应用也有叫app_key | OaH1heR2E4eGnBr87Br8FHaUFrA2Q0kE8HqZgpdg8Sw |
resource_ids | 不能为空,用逗号分隔 | 客户端能访问的资源id集合,注册客户端时,根据实际需要可选择资源id,也可以根据不同的额注册流程,赋予对应的额资源id | order-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"} |
autoapprove | false/true/read/write | 默认false,适用于authorization_code模式,设置用户是否自动approval操作,设置true跳过用户确认授权操作页面,直接跳到redirect_uri | FALSE |
表名: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