2017-02-18 125 views
1

我正在構建一個服務器路由,我希望限制它僅供經過身份驗證的用戶使用。我打算髮送一個帶有POST的user.uid到這個路由,並且我想驗證UID是否存在於Firebase中。我知道我可以在Firebase中手動添加UID並檢查這些數據,但是有可能看到Firebase身份驗證跟蹤哪些UID?我認爲這種方法會比我自己的清單更好。有沒有辦法確定Firebase用戶的UID是否有效?

這樣做的目的是爲了確保這些路由不會被僞造的UID訪問(例如爲了惡意目的)。

回答

1

您可以使用服務器上的Firebase Admin SDK檢查特定的UID是否與項目中的Firebase身份驗證用戶相對應。從Firebase documentation on retrieving user data

admin.auth().getUser(uid) 
    .then(function(userRecord) { 
    // See the UserRecord reference doc for the contents of userRecord. 
    console.log("Successfully fetched user data:", userRecord.toJSON()); 
    }) 
    .catch(function(error) { 
    console.log("Error fetching user data:", error); 
    }); 
+0

這正是我所需要的。 – skwny

0

甲UID是當火力地堡用戶被認證到火力地堡和爲空當用戶沒有被認證的有效載荷的一部分。用戶身份驗證後可以獲得UID。語法取決於什麼框架你工作是不同的

檢查出具體的語法和示例的火力地堡API參考:https://firebase.google.com/docs/reference/

1

驗證一個UID不足以阻止惡意用戶:1)攻擊者可以通過發送其他用戶的UID僞裝成其他用戶,以及2)UID永遠不會更改或過期,這意味着無法強制用戶(或攻擊者)重新進行身份驗證。

您需要的是將Firebase令牌從客戶端應用程序傳遞到您的服務器,並在接受令牌之前對其進行驗證。

  • 令牌由Firebase私鑰進行安全簽名。沒有其他方可以發佈有效的Firebase令牌。

  • 令牌只有一個小時有效。在發佈新令牌之前,Firebase服務器將檢查帳戶狀態(例如密碼更改事件)。

  • 令牌有效載荷包含UID和觀衆。你應該驗證觀衆是你自己的應用程序。

您可以使用管理員火力地堡的SDK或第三方庫來驗證火力地堡令牌。詳情請參閱Firebase doc

+0

這當然是一個更好的方法。我會用這種方法,而不是什麼我本來考慮。 – skwny

相關問題