本文对授权(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<String, String> 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": "成功"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)