authorize 授权关系存储表
字段 备注
appid 应用ID
userid 用户ID
addtime 添加时间
…… 其他
表3 access_token 访问令牌存储表
字段 备注
access_token 访问令牌
addtime 添加时间
…… 其他
一个OAuth2.0服务器端的实现
全部代码见附件.
数据库是这样的:
(没有必要用数据库,access_token是临时的,放在内存中就可以了)
create database auth;
use auth;
create table access_token (
id bigint,
access_token varchar(255) NOT NULL,
token_type varchar(255),
expires varchar(255),
refresh_token varchar(255),
username varchar(255),
client_id varchar(255),
createdtime datetime,
modifiedtime datetime
);
create table user (
uid bigint,
username varchar(255) NOT NULL,
password varchar(255) NOT NULL
);
create table client (
id bigint,
client_id varchar(255) NOT NULL,
client_secret varchar(255)
);
OAuth2.0协议主要是用access_token代替密码.
授权服务器保管用户密码并向第三方应用发放access_token,第三方应用接触不到用户
的密码.
资源服务器保管需要授权才能访问的资源(其实就是服务器提供的API),第三方应用凭
access_token访问资源服务器.(资源服务器还要问一下授权服务器这个access_token是
不是真的)
授权服务器做两件事:
1. 发放access_token的servlet
2. 向资源服务器提供一个验证access_token真伪的WebService