当用户 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/