簡體   English   中英

Spring Boot REST API 應用級授權

[英]Spring Boot REST API application level authorization

目前正在構建基於 Spring Boot 的 REST API 應用程序(示例集中學校管理系統)。 有各種 DB 實體可以通過 API 獲得 CRUD 訪問權限,如AccountSchool學校的任何子實體,如教師、學生等。

假設我們有很多 API,比如

GET /api/getschooldetails?account_id=1&school_id=1
GET /api/getteacherlist?account_id=3&school_id=2
GET /api/getstudentdetails?account_id=3&school_id=2&student_id=1

類似的 POST 與 JSON 請求正文

POST /api/addteacher
request : {"account_id":3,"school_id":2,"teachername":"XYZ"}
and 
POST /api/updatestudentname
request : {"account_id":3,"school_id":2,"student_id":4,"name":"ABC"}

如何在為請求參數API級別添加授權/ JSON字段,以便那些誰認證為用戶的school_id=2應該得到訪問錯誤,如果他們試圖改變/api/getteacherlist?account_id=3&school_id=2 ,使它/api/getteacherlist?account_id=3&school_id=3並獲取school_id=3詳細信息。

考慮為每個控制器類添加@Before AOP 點以解析查詢參數/JSON 並進行基於數據庫的用戶 ID 驗證,即如果用戶 ID 登錄(通過 Spring Security 身份驗證)可以訪問請求中提到的 account_id 和 school_id,因為它們是一部分避免代碼重復或在執行實際 CRUD 操作之前在每個 DAO 類中添加相同的檢查。 請指導是否還有其他使用Spring的方法。

請不要發明自定義安全性。 使用例如 Keycloak 和 Spring Security https://www.baeldung.com/spring-boot-keycloak

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM