架構圖
時序圖
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
- 隔離服務進行校驗,并響應請求