java - 分布式系統(tǒng)中如何進(jìn)行權(quán)限校驗(yàn)比較好?
問題描述
如題,在項(xiàng)目中,單獨(dú)有個(gè)系統(tǒng)作為權(quán)限系統(tǒng),現(xiàn)在的做法是每次請(qǐng)求業(yè)務(wù)系統(tǒng),都會(huì)在業(yè)務(wù)系統(tǒng)的攔截其中,把請(qǐng)求的URL傳過去權(quán)限系統(tǒng),來做校驗(yàn),校驗(yàn)發(fā)起請(qǐng)求的用戶是否有該權(quán)限。
或者也可以從權(quán)限系統(tǒng)那里獲取該用戶的所有權(quán)限到業(yè)務(wù)系統(tǒng)中做校驗(yàn)
無論哪種做法,感覺中間都可以篡改,不感覺很不安全
想問一下在分布式系統(tǒng)中如果進(jìn)行權(quán)限校驗(yàn)比較好,謝謝前輩
問題解答
回答1:樓主的問題與權(quán)限無關(guān),純粹是接口調(diào)用的安全性。一般做法有:
內(nèi)容明文傳輸,但加上校驗(yàn)碼,校驗(yàn)碼由雙方約定的一個(gè)密鑰生成,篡改者無法生成正確的校驗(yàn)碼。
使用約定密鑰加密解密整個(gè)傳輸內(nèi)容。
回答2:登錄后請(qǐng)求權(quán)限系統(tǒng),將返回的權(quán)限菜單等信息放入緩存(自己用Map實(shí)現(xiàn)或Nosql,建議Nosql集群。要注意菜單有更新,則先清空用戶的redis數(shù)據(jù),再將最新的信息同步到redis,redis沒信息就從數(shù)據(jù)庫中取),再返回Java Web Token(包括時(shí)間戳、標(biāo)識(shí)等)。
項(xiàng)目安全點(diǎn)就用Https,Spring-Security(訪問接口權(quán)限、防CSRF),每個(gè)接口都要驗(yàn)簽,token加時(shí)間戳等。
回答3:你這個(gè)有點(diǎn)像OAuth2.0解決的問題
相關(guān)文章:
1. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。2. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無論屏幕和分辨率怎么變化;div位置始終不變3. html5 - 有可以一次性把所有 css外部樣式轉(zhuǎn)為html標(biāo)簽內(nèi)style=" "的方法嗎?4. javascript - 有什么比較好的網(wǎng)頁版shell前端組件?5. java - 如何寫一個(gè)intellij-idea插件,實(shí)現(xiàn)編譯時(shí)修改源代碼的目的6. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?7. java 中Long 類型如何轉(zhuǎn)換成Double?8. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?9. html - vue項(xiàng)目中用到了elementUI問題10. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等
