我試圖弄清楚如何使用 OAuth2.0(或其他完全不同的東西)來處理呼叫后端 api 的用戶只能檢索與該用戶相關的資料的情況。
例如:假設我有一個銀行申請,客戶賬戶資訊位于“bank.com/account/{customerId}”。我如何限制對此的訪問,以便其他客戶無法看到彼此的銀行帳戶資訊?因為任何擁有訪問令牌的人都可以獲得任何人的帳戶資訊,而角色無法解決這個問題。
我想出了一個使用 Firebase JWT 解決這個問題的潛在解決方案,即訪問傳入請求的標頭并將令牌正文中的用戶 ID 與正在訪問的資料的用戶 ID 進行比較。
我的直覺告訴我我錯過了更大的圖景,因為這個問題一定是一個普遍現象,我在其他地方找不到答案。
我的環境是使用指向 firebase 專案的 Oauth2.0 資源服務器的 Spring Boot 后端。后端連接到 Postgres 資料庫。前端是一個 Angular 應用程式。
uj5u.com熱心網友回復:
為確保用戶只能訪問他們自己的資源,您必須將其寫入您的 Spring Boot 應用程式中。OAuth2 只為您提供一個訪問令牌,您可以使用它來找出誰在給您打電話以及他授予了哪些范圍。
但是安全邏輯由您來實作。如果 URL 中有 userId,則應檢查它是否與訪問令牌中的 userId 匹配。如果用戶資料存盤在資料庫中,您可能需要向 SQL 查詢添加條件,例如WHERE user_id = :userId.
您還可以使用訪問令牌中的范圍來僅授予對用戶資源的部分訪問權限。如果另一個應用程式可以代表他訪問用戶的資源,這會很有用。例如在使用 Google/Facebook/Github 登錄某個地方時讀取人名和電子郵件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/333924.html
上一篇:使用Firebase規則鎖定檔案
