Java架構(gòu)-SpringCloud分布式架構(gòu)權(quán)限管理

2021-02-18    分類: 網(wǎng)站建設(shè)

本文討論分布式架構(gòu)權(quán)限管理的兩種情況,一種是針對(duì)統(tǒng)一授權(quán)訪問(wèn)的,一種是跨平臺(tái)接口訪問(wèn)的。

雖然分布式架構(gòu)會(huì)做業(yè)務(wù)的切割,將整體的業(yè)務(wù)切割為獨(dú)立的子業(yè)務(wù)或者子平臺(tái),但是同一平臺(tái)下往往會(huì)有統(tǒng)一的授權(quán)和單點(diǎn)登錄,客戶端而言平臺(tái)是整體的,這種是統(tǒng)一授權(quán)訪問(wèn)的權(quán)限管理。但是也會(huì)遇到多平臺(tái)協(xié)作的情況,這種情況不用考慮其他平臺(tái)的架構(gòu),只需要為其提供數(shù)據(jù)接口跟其對(duì)接就可以,這種情況就要考慮跨平臺(tái)接口訪問(wèn)的權(quán)限管理。

一、統(tǒng)一授權(quán)訪問(wèn)

前端采用web服務(wù)器,nginx或者h(yuǎn)aproxy之類的都可以,利用nginx做第一層反向代理,用zuul做第二層反向代理,兩層反向代理對(duì)于常見(jiàn)的網(wǎng)絡(luò)滲透和爬蟲基本可以輕松應(yīng)對(duì)。在這個(gè)前提下,我們處理接口授權(quán)和訪問(wèn)安全等問(wèn)題,而且需要從客戶端和服務(wù)端都進(jìn)行安全控制。


1、用戶通過(guò)用戶名、密碼發(fā)起登陸請(qǐng)求,這里可以配合驗(yàn)證碼、短信驗(yàn)證、微信驗(yàn)證等提高安全級(jí)別,登陸請(qǐng)求訪問(wèn)到權(quán)限中心的ZUUL。

2、由ZUUL反向代理到權(quán)限中心的SERVICE。

3、查詢用戶、角色信息,進(jìn)行查詢匹配。

4、有查詢結(jié)果以后反饋,反饋用戶狀態(tài),用戶、角色、權(quán)限信息等。

5、生產(chǎn)TOKEN,TOKEN的算法需要自己編寫,建議加入時(shí)間戳等信息進(jìn)行加密。存放在SESSION或者直接放入REDIS中,一般建議放入SESSION中,因?yàn)榉植际郊軜?gòu)要做SESSION共享,必須有一個(gè)SESSION共享池,SESSION共享池一般會(huì)用REDIS來(lái)做,而SESSION可以利用SESSIONID,確認(rèn)唯一用戶,比較方便。

6、返回給客戶端用戶、角色、權(quán)限信息。

7、瀏覽器客戶端通過(guò)得到的用戶、角色、權(quán)限信息進(jìn)行前端功能和菜單的渲染,隱藏非授權(quán)的功能,并且可以基于這些信息做前端的校驗(yàn),但是這種校驗(yàn)由于都在客戶端,很容易被人篡改,只能做一些基本防護(hù),但是這是必要的。

8、瀏覽器客戶端發(fā)送業(yè)務(wù)請(qǐng)求到服務(wù)端,請(qǐng)求會(huì)附帶客戶端菜單或者功能的權(quán)限信息,服務(wù)端通過(guò)ZUUL的攔截器攔截業(yè)務(wù)請(qǐng)求,訪問(wèn)SESSION共享池。

9、然后通過(guò)SESSIONID得到TOKEN信息,通過(guò)我們的TOKEN算法進(jìn)行解密,得到用戶、角色、權(quán)限信息。

10、進(jìn)行匹配校驗(yàn),查看本次請(qǐng)求是否有接口訪問(wèn)權(quán)限,校驗(yàn)通過(guò)就可以訪問(wèn)接口,校驗(yàn)不通過(guò)就不能訪問(wèn)。

二、跨平臺(tái)接口訪問(wèn)

這里的接口是指一下跨平臺(tái)的接口服務(wù),類似webservice這樣,沒(méi)有單點(diǎn)登錄,沒(méi)有統(tǒng)一的授權(quán),往往是其他平臺(tái)跟我們平臺(tái)進(jìn)行遠(yuǎn)程交互的,這些往往兩個(gè)平臺(tái)不是統(tǒng)一的公司或部門,所以接口不是長(zhǎng)期使用的,有一定的時(shí)間限制。


1、用戶管理員配置外部客戶端用戶及其權(quán)限信息。

2、添加用戶信息、權(quán)限信息到用戶數(shù)據(jù)庫(kù)之中。

3、外部客戶端接口如果沒(méi)有TOKEN,需要先發(fā)送授權(quán)請(qǐng)求到權(quán)限中心。

4、權(quán)限中心通過(guò)驗(yàn)證是否配置外部客戶端用戶,并且取得該用戶的權(quán)限信息,校驗(yàn)通過(guò)以后通過(guò)加密算法生產(chǎn)TOKEN,這里的TOKEN根據(jù)實(shí)際情況,如果安全要求高最好加入時(shí)間戳,讓TOKEN過(guò)期作廢,讓對(duì)方重新請(qǐng)求。

5、將TOKEN存入REDIS中,形成TOKEN共享池,這里由于沒(méi)有瀏覽器的SESSIONID,所以存放在SESSION中意義不大。

6、返回TOKEN給客戶端。

7、客戶端拿到TOKEN以后發(fā)送業(yè)務(wù)請(qǐng)求給業(yè)務(wù)接口地址。

8、業(yè)務(wù)接口通過(guò)ZUUL攔截請(qǐng)求,并且將TOKEN跟REDIS的TOKEN進(jìn)行比對(duì)。

9、比對(duì)成功以后,對(duì)TOKEN進(jìn)行解密,然后看是否有接口授權(quán)。

10、如果有接口授權(quán)則通過(guò),訪問(wèn)接口,如果沒(méi)有則不能訪問(wèn)。

Java高級(jí)資料需要自己領(lǐng)取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并發(fā)分布式等教程!!!

網(wǎng)站名稱:Java架構(gòu)-SpringCloud分布式架構(gòu)權(quán)限管理
網(wǎng)頁(yè)路徑:http://www.bm7419.com/news48/101598.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、虛擬主機(jī)、品牌網(wǎng)站建設(shè)、建站公司、微信公眾號(hào)、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站