架构图
时序图
appkey与appsercret
appkey与appsercret由服务提供方提供,接入方使用
appkey:随机数或指定
appsercret:随机数或指定
授权服务
授权服务主要提供令牌生成与发放,使用AES对称加密token,该令牌可存储{appname+8位随机数+ip地址+8位随机数},可通过扩展token,来扩展其它能力,
授权服务需要请求方提供appkey与appsercre,对其进行校验(检验可包括但不限制于ip),检验后产生令牌返回给调用方,格式如下:
token:{"code":0,"msg":"success","data":{"accessToken":"ddewfrff2fdcfsf2r4","expiresIn":3600}}
accessToken:为发放的令牌
expiresIn:令牌过期时间,单位为秒
隔离应用
请求通过SLB转发到对应的api,通过扩展包,实现校验与拒绝能力
扩展包
可通过过滤器或注解+aop实现(隔离应用通过spi加载),获取token参数值,判断redis中是否存在,解析token,判断ip是当前请求ip
redis
redis主要是服务token存储与预留扩展能力,比如api限流,黑白名单等能力
整体流程
- 三方请求授权服务,携带参数appkey与appsercret
- 授权服务校验并存储token,发放token给三方
- 三方请求隔离服务,携带token
- 隔离服务进行校验,并响应请求