簡體   English   中英

用戶提供的RESTful安全資源

[英]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.

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