![](/img/trans.png)
[英]What's the best way to filter resources in RESTful API by user permission?
[英]RESTful secure resources by user
我正在使用OAuth2作為安全組件構建SpringBoot RESTful api。
我想知道如何保護我的資源,但更多地考慮作為業務邏輯。 例如,如果我有課程列表/rest/v1/courses
,並且此課程有Supervisor
並且假設我以ROLE_SUPERVISOR(沒有管理員訪問權限)的身份登錄,並且我以/rest/v1/courses
身份進行通話,邏輯上,我只能看到我擔任主管的課程。
1)我應該參加/rest/v1/courses?supervisor_id=2
經典過濾器,如果我在哪里有管理員,但登錄的任何人都可以看到其他數據(如果跟蹤url並更改id),則可以。
2)我應該做一個/rest/v1/courses
,並獲得supervisor_id
從成功登錄? 因此,我必須對照登錄數據檢查每個請求。 我認為這是一種更安全的方法,但是聽起來有些乏味,而且我可能會忘記以任何控制器方法執行安全性檢查。
3)也許有一個更通用的解決方案,我找不到或認為嗎?
謝謝,對不起我的英語。
RESTful API是無狀態的。 因此,對於每個請求,您必須立即使用令牌或通過檢查OAuth服務來驗證請求的憑據。 如果supervisor_id
已鏈接到憑據(例如,令牌值xyz
暗含supervisor_id = 2
),並且此ID確定了訪問權限,則無需將其添加為請求參數。 無論如何,您始終會根據憑據驗證此參數。
現在,如果“主管2”可以請求有關“主管1”的信息,那么可以,您希望將ID作為另一個請求參數。 您仍然需要檢查憑據,以了解“主管2”正在發出請求並驗證允許查詢的內容。
因此,我必須對照登錄數據檢查每個請求。 我認為這是一種更安全的方法,但是聽起來有些乏味,而且我可能會忘記以任何控制器方法執行安全性檢查。
基本上,任何標識請求者的內容都應與您的特定API業務邏輯分開,成為身份驗證機制的一部分。 您會在許多框架中找到一個工作流程,該工作流程在URL路由之前處理身份驗證。 這包括向您的控制器提供用戶信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.