摘要:網關設計一之多平臺身份認證方案隨著的發展現如今早已不是當年的登陸單一模式,而不久的到來又會帶來無人車等其他設備的接入。所以為了應對將來的時代的變化,一個好的多平臺認證登陸方案是切實所需。
API網關設計(一)之Token多平臺身份認證方案
隨著4g的發展現如今早已不是當年的web登陸單一模式,而不久5g的到來又會帶來無人車等其他設備的接入。所以為了應對將來的時代的變化,一個好的多平臺認證登陸方案是切實所需。概述
今天咱們面對移動互聯網的發展,系統一般是多個客戶端對應一個服務端。
客戶端統一通過F5或者Nginx代理轉發到API網關,最后發送到服務API。
如下圖架構圖所示
這個過程當中就存在多個很明顯需要做的事,如下列表
身份認證(登陸以及會話級用戶認證)
權限認證(當然是認證用戶身份之后,確認是否有權限調用API)
調用頻率控制(限流算法如計數,滑動窗口,漏桶,令牌桶)
負載算法(如權重,均衡,例外再比如灰度發布都是同一個思路)
而咱們今天主要講的了就是身份認證這一塊具體怎么設計Token,在前一篇文章中已經描述過整體的登陸邏輯,不清楚的同學可以看一下。
Token設計如今的系統不可能存在一個token走到底打通所有系統,為啥這么說?
由于不同的客戶端,會存在不同的認證場景。
咱們具體看一下分析過程
客戶端以下幾點用戶認證的場景
移動端登陸,會話API調用
web端登陸,會話API調用
移動端掃碼登陸web(如微信掃碼)
移動端授權登陸(如微信授權)
而通過客戶端的認證場景,咱們又能具體推理出功能級別的具體場景如下
客戶端記住用戶密碼免登陸認證
API調用的會話級別認證
移動端已登陸授權web端免密登陸
Token設計要點通過上面的認證場景才能不難得出如下結論
多層級Token
Token之間可向下授權
Token使用頻率
Token失效時間
級別劃分 1~3 分別為低中高
Token | 名稱 | 級別 | 使用頻率 | 有效期 | 保密級別 | 變化成本 |
---|---|---|---|---|---|---|
webtoken | web端token | 3(持久化) | 1 | >=1天 | 3 | 3 |
mobiletoken | mobile端token | 3(持久化) | 1 | >=1天 | 3 | 3 |
sessiontoken | 會話token | 2(會話級) | 3 | 分鐘級別 | 3 | 1 |
accesstoken | API認證token | 1(短暫認證) | 3 | 秒級 | 2 | 1 |
再具體看一張token層級架構圖
為啥要將token分這么多類型了?
咱們先根據上圖捋一下思路具體如下幾步
用戶名和密碼認證獲取webtoken或者mobiletoken
用戶登原先存在webtoken或mobiletoken可以拿到sessiontoken
通過sessiontoken可以去拿去短暫的accesstoken
通過accesstoken可以調用API
層級token優勢通過上面咱們可以看出來最終調用api是通過accesstoken,那么咱們為什么還需要設計
多層token了?主要有以下幾個原因
不同的客戶端對于免登陸的要求是不一樣的,比如web端輸入一個用戶名密碼或者通過手機接受一個驗證碼是很方便的事情,所以token時間不會存放特別長。但是對于移動端來說,對于用戶體驗比較好的情況就是隨時隨刻都是登陸狀態,輸入一次密碼最好能用個大半年。
安全性考慮這一點是由于第點的原因導致,由于webtoken或者mobiletoken存儲在客戶端的時間較長。如果調用頻率很高,及其容易導致被抓包獲取到黑客手中。因此引入了會話級別token通過持久化在客戶端的mobiletoken等去獲取。會話token的特點就是調用頻率高,失效時間快,就算被被人拿到了不會造成奔潰式的問題出現。
統一后臺api調用控制,accesstoken的存在是真正調用api的token,也是通過sessiontoken獲取。為了不同客戶端統一接入api實現,如果acesstoken不統一。那代碼層面實現又全部耦合到了一起,如果是統一的就可以將代碼抽出來一個層級放在網關統一實現。
綜合上面可以總結出來的優勢有如下幾點
解耦系統 (accesstoken網關之后的系統可以任意部署)
提高系統擴展性(可以接入不同性質的客戶端)
層級清楚便于維護(token分層代碼,便于獨立維護)
token安全控制首先咱們得明白一個道理對于任何登陸系統來說根本就不存在百分百的安全,唯一可以做到的就是提高破解成本。具體的安全控制方法我的總結如下
使用https哪怕被抓包看到的也是加密數據,除非客戶端和服務端都被黑了。這尼瑪這人這么優秀,干點啥不好。。。
根據業務要求設置不同token失效時間,token失效時間越短越安全,用戶體驗也會有所下滑
token可以根據動態加密算法以及密碼定時更新,然后通過cookie打回客戶端
移動端可以獲取設備id以及ip,當短時間內出現同一賬號不同設備請求,及時失效所有token,或者發出告警短信給用戶,權限級別較高的操作禁用。
移動端加入人臉或者指紋識別
完整架構圖歡迎掃碼關注公眾號繼續討論
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73726.html
摘要:微服務架構著重培養通用可重用的服務。服務注冊和發現微服務架構下,有大量的微服務需要處理。網關也是獲得微服務狀態監控信息的中心。實際情況是,微服務和其它企業架構并存。 引言:上篇文章介紹了微服務和單體架構的區別、微服務的設計、消息、服務間通信、數據去中心化,本篇會繼續深入微服務,介紹其它特性。 治理去中心化 通常治理的意思是構建方案,并且迫使人們通過努力達到組織的目標。SOA治理指導開發...
摘要:微服務架構著重培養通用可重用的服務。服務注冊和發現微服務架構下,有大量的微服務需要處理。網關也是獲得微服務狀態監控信息的中心。實際情況是,微服務和其它企業架構并存。 引言:上篇文章介紹了微服務和單體架構的區別、微服務的設計、消息、服務間通信、數據去中心化,本篇會繼續深入微服務,介紹其它特性。 治理去中心化 通常治理的意思是構建方案,并且迫使人們通過努力達到組織的目標。SOA治理指導開發...
摘要:微服務架構著重培養通用可重用的服務。服務注冊和發現微服務架構下,有大量的微服務需要處理。網關也是獲得微服務狀態監控信息的中心。實際情況是,微服務和其它企業架構并存。 引言:上篇文章介紹了微服務和單體架構的區別、微服務的設計、消息、服務間通信、數據去中心化,本篇會繼續深入微服務,介紹其它特性。 治理去中心化 通常治理的意思是構建方案,并且迫使人們通過努力達到組織的目標。SOA治理指導開發...
閱讀 1951·2021-09-07 09:59
閱讀 2520·2019-08-29 16:33
閱讀 3688·2019-08-29 16:18
閱讀 2849·2019-08-29 15:30
閱讀 1678·2019-08-29 13:52
閱讀 2035·2019-08-26 18:36
閱讀 530·2019-08-26 12:19
閱讀 694·2019-08-23 15:23