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