node.js - 如何通过admin SDK注销用户? (使 auth === null)

标签 node.js firebase firebase-authentication firebase-admin

当用户 ID token 被撤销时,信息应传递给客户端以执行重新身份验证或用户注销()等操作。

在客户端我们可以调用FirebaseAuth.DefaultInstance.SignOut。如何使用admin SDK达到同样的效果?

有没有办法通过管理 SDK 注销用户?(使 auth === null)。

“黑客”可能会更改客户端代码并阻止应用程序注销或重新进行身份验证。我知道我可以使用管理 SDK 和 firebase 规则检查 token 是否被撤销,但仅检查身份验证是否为空会更容易。或者我的想法是否错误,因为“黑客”获得了 ID token 一次,并且即使在客户端应用程序调用 FirebaseAuth.DefaultInstance.SignOut 之后也可以使用这些凭据发送请求?

最佳答案

Is there a way to sign out the user via admin SDK?

Admin SDK 提供了一种撤销用户刷新 token 的方法。这不会立即将用户注销,因为用户拥有一个不可撤销的 ID token ,该 token 的有效期为一小时。

如果您希望立即使后端资源对您撤销 token 的客户端不可用,您可以在撤销 token 时将其状态写入数据库,然后从安全规则中访问该状态。没有更简单的方法可以立即阻止它们。另请参阅Five tips to secure your app ,其中涵盖了此主题和安全主题。

A 'hacker' could alter the client code and prevent the app from sign out or reauthentication

客户端的身份验证状态基于 ID token ,该 token 在创建后一小时内有效。客户端无法将 token 扩展至超出此范围。要获取新的 ID token ,它必须调用身份验证服务器,该服务器在其刷新 token 被撤销后将失败。

在客户端上注销用户会使该客户端忘记该用户的 token 。 ID token 仍然有效,但没有人会知道它。请记住:应用程序和服务器之间的所有流量都通过(端到端加密)HTTPS 连接发送。这意味着只有当有人能够解密此流量时才可能发生中间人攻击,这要求他们有权访问证书。请参阅更好的解释 Does https prevent man in the middle attacks by proxy server? .

关于node.js - 如何通过admin SDK注销用户? (使 auth === null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670140/

相关文章:

java - 如何从 Firestore 查询中排除元素?

javascript - 使用.push()添加数据后如何查询Firebase数据?

Firebase v3 createUserWithEmailAndPassword .then Promise

java - 使用电子邮件、用户名和密码进行 Firebase 身份验证

Firebase 数据库 - 与在客户端公开 uid 相关的风险吗?

javascript - 在没有模型 :generate? 的情况下在 Sequelize 中创建新模型

javascript - Cheerio .css([property]) 总是返回 null?

javascript - AWS Lambda 和 promise : Callbacks not being called

javascript - 生成函数或异步生成函数后清理

android firebase动态链接PendingDynamicLinkData为null直接通过app