java - 分布式系統(tǒng)中如何進(jìn)行權(quán)限校驗比較好?
問題描述
如題,在項目中,單獨有個系統(tǒng)作為權(quán)限系統(tǒng),現(xiàn)在的做法是每次請求業(yè)務(wù)系統(tǒng),都會在業(yè)務(wù)系統(tǒng)的攔截其中,把請求的URL傳過去權(quán)限系統(tǒng),來做校驗,校驗發(fā)起請求的用戶是否有該權(quán)限。
或者也可以從權(quán)限系統(tǒng)那里獲取該用戶的所有權(quán)限到業(yè)務(wù)系統(tǒng)中做校驗
無論哪種做法,感覺中間都可以篡改,不感覺很不安全
想問一下在分布式系統(tǒng)中如果進(jìn)行權(quán)限校驗比較好,謝謝前輩
問題解答
回答1:樓主的問題與權(quán)限無關(guān),純粹是接口調(diào)用的安全性。一般做法有:
內(nèi)容明文傳輸,但加上校驗碼,校驗碼由雙方約定的一個密鑰生成,篡改者無法生成正確的校驗碼。
使用約定密鑰加密解密整個傳輸內(nèi)容。
回答2:登錄后請求權(quán)限系統(tǒng),將返回的權(quán)限菜單等信息放入緩存(自己用Map實現(xiàn)或Nosql,建議Nosql集群。要注意菜單有更新,則先清空用戶的redis數(shù)據(jù),再將最新的信息同步到redis,redis沒信息就從數(shù)據(jù)庫中取),再返回Java Web Token(包括時間戳、標(biāo)識等)。
項目安全點就用Https,Spring-Security(訪問接口權(quán)限、防CSRF),每個接口都要驗簽,token加時間戳等。
回答3:你這個有點像OAuth2.0解決的問題
相關(guān)文章:
1. html5 - ElementUI table中el-table-column怎么設(shè)置百分比顯示。2. python - 使用readlines()方法讀取文件內(nèi)容后,再用for循環(huán)遍歷文件與變量匹配時出現(xiàn)疑難?3. 對mysql某個字段監(jiān)控的功能4. css3 - less或者scss 顏色計算的知識應(yīng)該怎么學(xué)?或者在哪里學(xué)?5. 注冊賬戶文字不能左右分離6. javascript - table列過多,有什么插件可以提供列排序和選擇顯示列的功能7. css - 網(wǎng)頁div區(qū)塊 像蘋果一樣可左右滑動 手機與電腦8. javascript - 數(shù)組的過濾和渲染9. html - vue項目中用到了elementUI問題10. JavaScript事件
