基于Oauth2.0协议授权码模式
授权码模式工作流程:
(A)浏览器访问该js客户端,js将网页重定向到认证服务器(/oauth/authorize),携带clientid等信息
(B)用户选择是否给予客户端授权(可自动授权)
(C)认证服务器将浏览器重定向到"重定向URI"(redirection URI),同时附上一个授权码
(D)浏览器拿到授权码,附上早先的"重定向URI",向认证服务器申请令牌(/oauth/token)
(E)认证服务器核对了授权码和重定向URI,向客户端发送访问令牌(access token)和更新令牌(refresh token)
A步骤中,客户端申请认证的URI,包含以下参数:
response_type:表示授权类型,必选项,此处的值固定为"code"
client_id:表示客户端的ID,必选项
redirect_uri:表示重定向URI,可选项
scope:表示申请的权限范围,可选项
state:一般随机生成,标识客户端的当前状态,认证服务器会原样返回这个值,
通过JS ajax拦截器获取token及刷新token示例,适用于前后端分离项目中前端的授权。
auth.js
const FULL_CHARTER = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopgrstuvwxyz‘;
const oauth_server=‘http://localhost:9000/server‘;
const redirect_uri=‘http://localhost:8002/client-front/‘;
const client_id=‘demo‘;
const client_secret=‘demo‘;
const token_storage= localStorage;//sessionStorage
functionajaxSetup() {
$.ajaxSetup({
timeout :30000,
beforeSend :function(xhr) {if(this.url.endsWith(‘/oauth/token‘)){return true;
}if (getAuth() == null){
fetchToken();
}var auth =getAuth();if(auth