java - 分布式系統(tǒng)中如何進(jìn)行權(quán)限校驗(yàn)比較好?
問(wè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傳過(guò)去權(quán)限系統(tǒng),來(lái)做校驗(yàn),校驗(yàn)發(fā)起請(qǐng)求的用戶(hù)是否有該權(quán)限。
或者也可以從權(quán)限系統(tǒng)那里獲取該用戶(hù)的所有權(quán)限到業(yè)務(wù)系統(tǒng)中做校驗(yàn)
無(wú)論哪種做法,感覺(jué)中間都可以篡改,不感覺(jué)很不安全
想問(wèn)一下在分布式系統(tǒng)中如果進(jìn)行權(quán)限校驗(yàn)比較好,謝謝前輩
問(wèn)題解答
回答1:樓主的問(wèn)題與權(quán)限無(wú)關(guān),純粹是接口調(diào)用的安全性。一般做法有:
內(nèi)容明文傳輸,但加上校驗(yàn)碼,校驗(yàn)碼由雙方約定的一個(gè)密鑰生成,篡改者無(wú)法生成正確的校驗(yàn)碼。
使用約定密鑰加密解密整個(gè)傳輸內(nèi)容。
回答2:登錄后請(qǐng)求權(quán)限系統(tǒng),將返回的權(quán)限菜單等信息放入緩存(自己用Map實(shí)現(xiàn)或Nosql,建議Nosql集群。要注意菜單有更新,則先清空用戶(hù)的redis數(shù)據(jù),再將最新的信息同步到redis,redis沒(méi)信息就從數(shù)據(jù)庫(kù)中取),再返回Java Web Token(包括時(shí)間戳、標(biāo)識(shí)等)。
項(xiàng)目安全點(diǎn)就用Https,Spring-Security(訪問(wèn)接口權(quán)限、防CSRF),每個(gè)接口都要驗(yàn)簽,token加時(shí)間戳等。
回答3:你這個(gè)有點(diǎn)像OAuth2.0解決的問(wèn)題
相關(guān)文章:
1. linux - Ubuntu下編譯Vim8(+python)無(wú)數(shù)次編譯失敗2. java - Mybatis關(guān)聯(lián)查詢(xún)3. javascript - 如何判斷用戶(hù)切換到了當(dāng)前標(biāo)簽頁(yè)?4. javascript - 用JS 七牛上傳圖片出現(xiàn)文件已存在的錯(cuò)誤(file exists)5. css - 移動(dòng)端 盒子內(nèi)加overflow-y:scroll后 字體會(huì)變大6. java - 靜態(tài)屬性中的賦值和靜態(tài)代碼塊中的賦值有什么區(qū)別?7. javascript - webpack 報(bào)錯(cuò) 新人 求解8. javascript - H5頁(yè)面怎么查看console信息?9. java - 在搭建ssm的過(guò)程中 用junit測(cè)試Dao層 怎么樣都報(bào)錯(cuò) 說(shuō)連接不上jdbc10. 前端 - CSS3 box-shadow如何設(shè)置,或者用什么方法可以產(chǎn)生圖中這樣陰影的效果。
