Firebase实时数据库安全规则中,auth.uid和auth.token.sub有什么区别?

7
什么是 Firebase 实时数据库安全规则中的 auth.uid 和 auth.token.sub 的区别?
我认为它们是相同的(用户只有一个uid),但它们具有不同的描述,希望能够了解一个明确的答案。
auth.uid:唯一的用户ID,保证跨所有提供程序唯一。
auth.token.sub:用户的Firebase UID。在项目内是唯一的。
2个回答

7

它们完全相同。auth.uid是为了向后兼容(auth.token在安全规则中以前不存在)和易用性而提供的:sub不是一个常见的ID术语,而uid更容易理解,您无需深入了解令牌内容。


3

auth.token.sub是token中的编码ID。Firebase Admin SDK内置了一种用于验证和解码ID令牌的方法。如果提供的ID令牌具有正确的格式,未过期且签名正确,则该方法将返回已解码的ID令牌。您可以从解码的令牌中获取用户或设备的uid。

这意味着在token.sub中有用户的UID。但是如果没有SDK,您无法看到真正的值,因为它未解码。这是出于安全考虑。

如果要使用此功能,您需要使用例如verifyIdToken()方法进行解码。

以下是Node.js的示例:

// idToken comes from the client app (shown above)

admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

这里是链接:https://firebase.google.com/docs/auth/admin/verify-id-tokens,希望对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接