有没有办法确定Firebase用户的UID是否有效?

时间:2017-02-18 17:58:12

标签: firebase firebase-authentication

我正在构建一个我希望限制仅供经过身份验证的用户使用的服务器路由。我打算向这个路由发送带有POST的user.uid,我想验证UID是否存在于Firebase中。我知道我可以在Firebase中手动添加UID并检查此数据,但是是否可以查看哪些UID Firebase身份验证正在跟踪?我认为这种方法会比检查我自己的列表更好。

这样做的目的是确保不使用虚假的UID访问这些路由(例如用于恶意目的)。

3 个答案:

答案 0 :(得分:6)

验证UID不足以阻止恶意用户:1)攻击者可以通过发送其他用户的UID伪装成其他用户,2)UID永远不会更改或过期,这意味着没有办法强制用户(或攻击者)重新进行身份验证。

您需要将Firebase令牌从客户端应用程序传递到您的服务器,并在接受令牌之前验证令牌。

  • 令牌由Firebase私钥安全签名。任何其他方都无法颁发有效的Firebase令牌。

  • 令牌只有一个小时有效。 Firebase服务器将在发出新令牌之前检查帐户状态(例如密码更改事件)。

  • 令牌有效内容包含UID和受众群体。您应该验证受众是您自己的应用程序。

您可以使用Firebase Admin SDK或第三方库来验证Firebase令牌。有关详细信息,请参阅Firebase doc

答案 1 :(得分:3)

您可以使用服务器上的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);
  });

答案 2 :(得分:0)

当Firebase用户向Firebase进行身份验证时,UID是有效内容的一部分,而在未对用户进行身份验证时,UID为null。您可以在用户身份验证时获取UID。根据您正在使用的框架,语法会有所不同。

查看Firebase API参考,了解具体语法和示例:https://firebase.google.com/docs/reference/