摘要:網(wǎng)關(guān)設(shè)計一之多平臺身份認(rèn)證方案隨著的發(fā)展現(xiàn)如今早已不是當(dāng)年的登陸單一模式,而不久的到來又會帶來無人車等其他設(shè)備的接入。所以為了應(yīng)對將來的時代的變化,一個好的多平臺認(rèn)證登陸方案是切實所需。
API網(wǎng)關(guān)設(shè)計(一)之Token多平臺身份認(rèn)證方案
隨著4g的發(fā)展現(xiàn)如今早已不是當(dāng)年的web登陸單一模式,而不久5g的到來又會帶來無人車等其他設(shè)備的接入。所以為了應(yīng)對將來的時代的變化,一個好的多平臺認(rèn)證登陸方案是切實所需。概述
今天咱們面對移動互聯(lián)網(wǎng)的發(fā)展,系統(tǒng)一般是多個客戶端對應(yīng)一個服務(wù)端。
客戶端統(tǒng)一通過F5或者Nginx代理轉(zhuǎn)發(fā)到API網(wǎng)關(guān),最后發(fā)送到服務(wù)API。
如下圖架構(gòu)圖所示
這個過程當(dāng)中就存在多個很明顯需要做的事,如下列表
身份認(rèn)證(登陸以及會話級用戶認(rèn)證)
權(quán)限認(rèn)證(當(dāng)然是認(rèn)證用戶身份之后,確認(rèn)是否有權(quán)限調(diào)用API)
調(diào)用頻率控制(限流算法如計數(shù),滑動窗口,漏桶,令牌桶)
負(fù)載算法(如權(quán)重,均衡,例外再比如灰度發(fā)布都是同一個思路)
而咱們今天主要講的了就是身份認(rèn)證這一塊具體怎么設(shè)計Token,在前一篇文章中已經(jīng)描述過整體的登陸邏輯,不清楚的同學(xué)可以看一下。
Token設(shè)計如今的系統(tǒng)不可能存在一個token走到底打通所有系統(tǒng),為啥這么說?
由于不同的客戶端,會存在不同的認(rèn)證場景。
咱們具體看一下分析過程
客戶端以下幾點(diǎn)用戶認(rèn)證的場景
移動端登陸,會話API調(diào)用
web端登陸,會話API調(diào)用
移動端掃碼登陸web(如微信掃碼)
移動端授權(quán)登陸(如微信授權(quán))
而通過客戶端的認(rèn)證場景,咱們又能具體推理出功能級別的具體場景如下
客戶端記住用戶密碼免登陸認(rèn)證
API調(diào)用的會話級別認(rèn)證
移動端已登陸授權(quán)web端免密登陸
Token設(shè)計要點(diǎn)通過上面的認(rèn)證場景才能不難得出如下結(jié)論
多層級Token
Token之間可向下授權(quán)
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認(rèn)證token | 1(短暫認(rèn)證) | 3 | 秒級 | 2 | 1 |
再具體看一張token層級架構(gòu)圖
為啥要將token分這么多類型了?
咱們先根據(jù)上圖捋一下思路具體如下幾步
用戶名和密碼認(rèn)證獲取webtoken或者mobiletoken
用戶登原先存在webtoken或mobiletoken可以拿到sessiontoken
通過sessiontoken可以去拿去短暫的accesstoken
通過accesstoken可以調(diào)用API
層級token優(yōu)勢通過上面咱們可以看出來最終調(diào)用api是通過accesstoken,那么咱們?yōu)槭裁催€需要設(shè)計
多層token了?主要有以下幾個原因
不同的客戶端對于免登陸的要求是不一樣的,比如web端輸入一個用戶名密碼或者通過手機(jī)接受一個驗證碼是很方便的事情,所以token時間不會存放特別長。但是對于移動端來說,對于用戶體驗比較好的情況就是隨時隨刻都是登陸狀態(tài),輸入一次密碼最好能用個大半年。
安全性考慮這一點(diǎn)是由于第點(diǎn)的原因?qū)е拢捎趙ebtoken或者mobiletoken存儲在客戶端的時間較長。如果調(diào)用頻率很高,及其容易導(dǎo)致被抓包獲取到黑客手中。因此引入了會話級別token通過持久化在客戶端的mobiletoken等去獲取。會話token的特點(diǎn)就是調(diào)用頻率高,失效時間快,就算被被人拿到了不會造成奔潰式的問題出現(xiàn)。
統(tǒng)一后臺api調(diào)用控制,accesstoken的存在是真正調(diào)用api的token,也是通過sessiontoken獲取。為了不同客戶端統(tǒng)一接入api實現(xiàn),如果acesstoken不統(tǒng)一。那代碼層面實現(xiàn)又全部耦合到了一起,如果是統(tǒng)一的就可以將代碼抽出來一個層級放在網(wǎng)關(guān)統(tǒng)一實現(xiàn)。
綜合上面可以總結(jié)出來的優(yōu)勢有如下幾點(diǎn)
解耦系統(tǒng) (accesstoken網(wǎng)關(guān)之后的系統(tǒng)可以任意部署)
提高系統(tǒng)擴(kuò)展性(可以接入不同性質(zhì)的客戶端)
層級清楚便于維護(hù)(token分層代碼,便于獨(dú)立維護(hù))
token安全控制首先咱們得明白一個道理對于任何登陸系統(tǒng)來說根本就不存在百分百的安全,唯一可以做到的就是提高破解成本。具體的安全控制方法我的總結(jié)如下
使用https哪怕被抓包看到的也是加密數(shù)據(jù),除非客戶端和服務(wù)端都被黑了。這尼瑪這人這么優(yōu)秀,干點(diǎn)啥不好。。。
根據(jù)業(yè)務(wù)要求設(shè)置不同token失效時間,token失效時間越短越安全,用戶體驗也會有所下滑
token可以根據(jù)動態(tài)加密算法以及密碼定時更新,然后通過cookie打回客戶端
移動端可以獲取設(shè)備id以及ip,當(dāng)短時間內(nèi)出現(xiàn)同一賬號不同設(shè)備請求,及時失效所有token,或者發(fā)出告警短信給用戶,權(quán)限級別較高的操作禁用。
移動端加入人臉或者指紋識別
完整架構(gòu)圖歡迎掃碼關(guān)注公眾號繼續(xù)討論
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73726.html
摘要:微服務(wù)能夠為應(yīng)用程序設(shè)計提供一種更具針對性范圍性與模塊性的實現(xiàn)方案。安全微服務(wù)部署模式可謂多種多樣但其中使用最為廣泛的當(dāng)數(shù)每主機(jī)服務(wù)模式。在微服務(wù)環(huán)境下,安全性往往成為最大的挑戰(zhàn)。不同微服務(wù)之間可通過多種方式建立受信關(guān)系。 每個人都在討論微服務(wù),每個人也都希望能夠?qū)崿F(xiàn)微服務(wù)架構(gòu),而微服務(wù)安全也日漸成為大家關(guān)注的重要問題。今天小數(shù)與大家分享的文章,就從應(yīng)用層面深入探討了應(yīng)對微服務(wù)安全挑戰(zhàn)...
摘要:接下來繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級緩存模式。分布式應(yīng)用程序可以基于實現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡單的 S...
摘要:微服務(wù)架構(gòu)著重培養(yǎng)通用可重用的服務(wù)。服務(wù)注冊和發(fā)現(xiàn)微服務(wù)架構(gòu)下,有大量的微服務(wù)需要處理。網(wǎng)關(guān)也是獲得微服務(wù)狀態(tài)監(jiān)控信息的中心。實際情況是,微服務(wù)和其它企業(yè)架構(gòu)并存。 引言:上篇文章介紹了微服務(wù)和單體架構(gòu)的區(qū)別、微服務(wù)的設(shè)計、消息、服務(wù)間通信、數(shù)據(jù)去中心化,本篇會繼續(xù)深入微服務(wù),介紹其它特性。 治理去中心化 通常治理的意思是構(gòu)建方案,并且迫使人們通過努力達(dá)到組織的目標(biāo)。SOA治理指導(dǎo)開發(fā)...
摘要:微服務(wù)架構(gòu)著重培養(yǎng)通用可重用的服務(wù)。服務(wù)注冊和發(fā)現(xiàn)微服務(wù)架構(gòu)下,有大量的微服務(wù)需要處理。網(wǎng)關(guān)也是獲得微服務(wù)狀態(tài)監(jiān)控信息的中心。實際情況是,微服務(wù)和其它企業(yè)架構(gòu)并存。 引言:上篇文章介紹了微服務(wù)和單體架構(gòu)的區(qū)別、微服務(wù)的設(shè)計、消息、服務(wù)間通信、數(shù)據(jù)去中心化,本篇會繼續(xù)深入微服務(wù),介紹其它特性。 治理去中心化 通常治理的意思是構(gòu)建方案,并且迫使人們通過努力達(dá)到組織的目標(biāo)。SOA治理指導(dǎo)開發(fā)...
摘要:微服務(wù)架構(gòu)著重培養(yǎng)通用可重用的服務(wù)。服務(wù)注冊和發(fā)現(xiàn)微服務(wù)架構(gòu)下,有大量的微服務(wù)需要處理。網(wǎng)關(guān)也是獲得微服務(wù)狀態(tài)監(jiān)控信息的中心。實際情況是,微服務(wù)和其它企業(yè)架構(gòu)并存。 引言:上篇文章介紹了微服務(wù)和單體架構(gòu)的區(qū)別、微服務(wù)的設(shè)計、消息、服務(wù)間通信、數(shù)據(jù)去中心化,本篇會繼續(xù)深入微服務(wù),介紹其它特性。 治理去中心化 通常治理的意思是構(gòu)建方案,并且迫使人們通過努力達(dá)到組織的目標(biāo)。SOA治理指導(dǎo)開發(fā)...
閱讀 1968·2021-09-07 09:59
閱讀 2529·2019-08-29 16:33
閱讀 3709·2019-08-29 16:18
閱讀 2860·2019-08-29 15:30
閱讀 1689·2019-08-29 13:52
閱讀 2054·2019-08-26 18:36
閱讀 547·2019-08-26 12:19
閱讀 712·2019-08-23 15:23