授权(authorization)的设计思路

本文对授权(authorization)的设计思路,客户端必须得到用户的授权(authorization grant),才能获得令牌(token)

授权码模式(authorization code)
grantType:表示使用的授权模式,必选项,此处的值固定为"authorization_code"
code:表示授权码,加密处理,必选项
clientId:表示客户端的ID,必选项
systemCode:表示对接系统的代号,必选项
scope:表示申请的权限范围,可选项

	grantType:"authorization_code"
	code:"Encryption code"
	clientId:"666888"
	systemCode:"10010"



POST /token HTTP/1.1
Host: server.authorization.com
Content-Type: application/x-www-form-urlencoded

grantType=authorization_code&code=EncryptionCode&clientId=698688&systemCode=10010

1、验证授权参数

validateParams();

2、 生成访问令牌

Map data = new LinkedHashMap<>();
String token = GenerateUtil.getToken(systemCode + clientId);
data.put(Constants.ACCESS_TOKEN, token);

3、 过期时间,通常设为30分钟

Date expirationDate = DateUtil.calculateDateBySecond(null, expireInterval);
data.put("expirationDate", DateUtil.dateToString(expirationDate, DateUtil.FORMAT_DATE_DEFAULT));

resultBean.setStatus(StatusEnum.SUCCESS);
resultBean.setData(data);

4、存入缓存,为之后操作提供数据

ActionContextUtil.getContext(token).setSystemCode(systemCode);
ActionContextUtil.getContext(token).setClientId(clientId);

5、响应结果格式

{
    "status": 200,
    "data": {
        "token": "8363245ea00b31648ae4cdb21e70d725",
        "expirationDate": "2019-08-27 15:33:54"
    },
    "message": "成功"
}

你可能感兴趣的:(Other,Java)