[英]What is best practice for handling partial authorization in APIs
在閱讀了有關API最佳做法的幾篇文章后,我仍然有一個未解決的問題:
[1,2,3,4,5]
對象 [1,2,3]
但不閱讀[4,5]
API是否應回應:
403 Forbidden
錯誤代碼,拒絕了整個請求 要么
[1,2,3]
並拒絕對[4,5]
讀取訪問的對象的數據 在閱讀了有關API最佳做法的幾篇文章后,我仍然有一個未解決的問題:
- 假設我有一個用戶請求讀取ID為
[1,2,3,4,5]
對象- 假設該用戶有權閱讀
[1,2,3]
但不閱讀[4,5]
API是否應回應:
401 Unauthorized
錯誤代碼,拒絕整個請求
不能。HTTP401不能進行身份驗證(盡管名稱正確)。 您將返回(如果有的話)HTTP403。但是在這種情況下,假設您確實對端點進行了身份驗證,並且確實允許您查看某些元素,那么我將不返回該元素。
要么
- ID為
[1,2,3]
並拒絕對[4,5]
讀取訪問的對象的數據
是。 我將退還用戶可以看到的內容。 更具體地說,我認為您擁有以下方面的API:
/api/items/{itemid}
通過HTTP GET到/api/items
返回用戶可以查看的項目的完整列表,即項目1、2和3。
對/api/items/1
的HTTP GET將返回該項目。 到/api/items/4
的HTTP GET可能返回HTTP 403(您無權查看該項目)或HTTP 404(在您甚至不想透露文件存在的情況下都找不到該項目) )。
如何確定授權? 只是一個ACL? RBAC? ABAC? 如果是后者,請考慮使用XACML作為編寫授權策略來控制API的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.