OAuth2.0的服务端和资源端都不是我们自己写的,都是springsecurity框架给我们写的,既然是springsecurity框架的,那么客户端的信息保存在数据库里面的时候,这个数据库的表结构就需要使用springsecurity框架定义的。
这个表是按照springsecurity框架规则创建的表,
DROP TABLE IF EXISTS `oauth_access_token`;
CREATE TABLE `oauth_access_token` (
`token_id` varchar(255) DEFAULT NULL,
`token` longblob,
`authentication_id` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
`client_id` varchar(255) DEFAULT NULL,
`authentication` longblob,
`refresh_token` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `oauth_approvals`;
CREATE TABLE `oauth_approvals` (
`userId` varchar(255) DEFAULT NULL,
`clientId` varchar(255) DEFAULT NULL,
`scope` varchar(255) DEFAULT NULL,
`status` varchar(10) DEFAULT NULL,
`expiresAt` datetime DEFAULT NULL,
`lastModifiedAt` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `oauth_client_details`;
CREATE TABLE `oauth_client_details` (
`client_id` varchar(255) NOT NULL,
`resource_ids` varchar(255) DEFAULT NULL,
`client_secret` varchar(255) DEFAULT NULL,
`scope` varchar(255) DEFAULT NULL,
`authorized_grant_types` varchar(255) DEFAULT NULL,
`web_server_redirect_uri` varchar(255) DEFAULT NULL,
`authorities` varchar(255) DEFAULT NULL,
`access_token_validity` int(11) DEFAULT NULL,
`refresh_token_validity` int(11) DEFAULT NULL,
`additional_information` varchar(255) DEFAULT NULL,
`autoapprove` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `oauth_client_token`;
CREATE TABLE `oauth_client_token` (
`token_id` varchar(255) DEFAULT NULL,
`token` longblob,
`authentication_id` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
`client_id` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `oauth_code`;
CREATE TABLE `oauth_code` (
`code` varchar(255) DEFAULT NULL,
`authentication` varbinary(2550) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `oauth_refresh_token`;
CREATE TABLE `oauth_refresh_token` (
`token_id` varchar(255) DEFAULT NULL,
`token` longblob,
`authentication` longblob
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
官方SQL地址: https://github.com/spring-projects/spring-security-oauth/blob/master/spring-securityoauth2/src/test/resources/schema.sql
1
2 resource_ids
B系统上面是有很多的资源,那么A系统是可以访问B系统的哪些资源呢?就可以将B系统对应资源的id放到这个字段里面
3 client_secret
这个字段里面是存放A系统登录B系统的密码
4 scope 这个字段就是权限,就是你对可以访问的资源有什么权限,比如增删改查 如果字段值为read ,就是只是查,如果值为write ,那么就是增删改
5 authorized_grant_types 这个字段的值就是 4个授权的模式,还有一个刷新的 一共5个值 authorization_code ,password ,refresh_token, implicit, client_credentials
6 web_server_redirect_uri
回调地址,授权码模式的时候用到的,就是B系统给你的授权码,到底返回到A系统的哪个地址 也就是这个字段保存A系统的一个服务端的一个地址
7 authorities
这个字段就是保存A系统是处于什么角色
8 access_token_validity
生成token的有效的时间,默认是12小时,可选项
9 additional_information
预留的一个字段,写不写都可以
10 archived
这个也是扩展的字段
11 trusted
12 autoapprove