我有一個關於如何構建使用訪問令牌和API密鑰的REST API的問題。構建API密鑰和訪問令牌
我有一個需要驗證的API。我想啓用兩個用例:
使用的OAuth2(密碼補助金)的用戶登錄到界面,並被授予臨時訪問令牌。該令牌用於認證用戶。因此,使用API的UI可以獲取數據並顯示它。
我也希望用戶有一個API密鑰來執行相同的調用,但在其應用程序。顯然,與訪問令牌相反,我希望API密鑰長期存在。此外,與綁定到給定用戶的訪問令牌相反(如果我們引入團隊機制,每個用戶將擁有不同的訪問令牌,雖然他們訪問相同的資源),但API密鑰應該對項目是唯一的。
雖然相似,但我不確定我應該如何構造它。我認爲,在內部,API密鑰和訪問令牌應該存儲在同一個表中,但API密鑰沒有到期時間。我對嗎?
我不確定的一件事還是客戶端的概念。看來在規範中,客戶端更像是一個外部應用程序。但是我可以在這裏實際使用這個概念嗎?例如,每個「項目」實際上是一個不同的客戶端(雖然這裏的客戶端是同一個應用程序,而不是由第三方開發者創建的應用程序)。
因此,如果用戶A在系統上創建一個帳戶,則客戶端A將自動創建一個訪問令牌,並與一個長期訪問令牌(又名API密鑰)綁定到客戶端A.例如,這可以用來直接在他的代碼上執行API調用。
然後,如果用戶A登錄到儀表板,則會創建一個臨時訪問令牌,但此時沒有應用程序,但與用戶綁定,壽命短。
這聽起來理智?有沒有人已經實現了這樣的事情?
謝謝!
API密鑰和訪問令牌是不同的概念,它們分別進行建模,並將它們分開存儲。 –
是的,但你如何處理我想以同質方式訪問API的事實?我不想有不同的方式來使用API。無論是我的Web應用程序使用臨時令牌還是使用API密鑰直接從其Web服務器使用API的客戶端使用它。 –