OAuth2.0服务器端的实现

时间:2021-07-20 14:10:08

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