簡體   English   中英

在API中處理部分授權的最佳實踐是什么

[英]What is best practice for handling partial authorization in APIs

在閱讀了有關API最佳做法的幾篇文章后,我仍然有一個未解決的問題:

  • 假設我有一個用戶請求讀取ID為[1,2,3,4,5]對象
  • 假設該用戶有權閱讀[1,2,3]但不閱讀[4,5]

API是否應回應:

  1. A(已編輯,更正,而不是401:) 403 Forbidden錯誤代碼,拒絕了整個請求

要么

  1. ID為[1,2,3]並拒絕對[4,5]讀取訪問的對象的數據

在閱讀了有關API最佳做法的幾篇文章后,我仍然有一個未解決的問題:

  • 假設我有一個用戶請求讀取ID為[1,2,3,4,5]對象
  • 假設該用戶有權閱讀[1,2,3]但不閱讀[4,5]

API是否應回應:

  1. 401 Unauthorized錯誤代碼,拒絕整個請求

不能。HTTP401不能進行身份驗證(盡管名稱正確)。 您將返回(如果有的話)HTTP403。但是在這種情況下,假設您確實對端點進行了身份驗證,並且確實允許您查看某些元素,那么我將不返回該元素。

要么

  1. 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.

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