文章詳情頁
java - 分布式系統中如何進行權限校驗比較好?
瀏覽:171日期:2023-10-21 08:07:19
問題描述
如題,在項目中,單獨有個系統作為權限系統,現在的做法是每次請求業務系統,都會在業務系統的攔截其中,把請求的URL傳過去權限系統,來做校驗,校驗發起請求的用戶是否有該權限。
或者也可以從權限系統那里獲取該用戶的所有權限到業務系統中做校驗
無論哪種做法,感覺中間都可以篡改,不感覺很不安全
想問一下在分布式系統中如果進行權限校驗比較好,謝謝前輩
問題解答
回答1:樓主的問題與權限無關,純粹是接口調用的安全性。一般做法有:
內容明文傳輸,但加上校驗碼,校驗碼由雙方約定的一個密鑰生成,篡改者無法生成正確的校驗碼。
使用約定密鑰加密解密整個傳輸內容。
回答2:登錄后請求權限系統,將返回的權限菜單等信息放入緩存(自己用Map實現或Nosql,建議Nosql集群。要注意菜單有更新,則先清空用戶的redis數據,再將最新的信息同步到redis,redis沒信息就從數據庫中?。?,再返回Java Web Token(包括時間戳、標識等)。
項目安全點就用Https,Spring-Security(訪問接口權限、防CSRF),每個接口都要驗簽,token加時間戳等。
回答3:你這個有點像OAuth2.0解決的問題
標簽:
java
上一條:java - spring-data Jpa 不需要執行save 語句,Set字段就可以自動執行保存的方法?求解下一條:java - SpringAOP如何獲得執行方法的class上的注解信息
相關文章:
1. css - 關于偽類背景問題2. html - 移動端radio無法選中3. apache - 怎么給localhost后面默認加上8080端口4. html5 - 如何實現圖中的刻度漸變效果?5. python - django的模板預加載6. mysql - 數據庫建字段,默認值空和empty string有什么區別 1107. python 計算兩個時間相差的分鐘數,超過一天時計算不對8. 關于Navicat連接到mysql,我改了root的密碼后,Navicat連接報錯1862?9. mysql起不來了,為什么?10. windows-7 - Win7中Vmware Workstatoin與Xampp中Apache服務器端口沖突?
排行榜
