如何通过管理SDK登出用户? (使auth === null)

时间:2019-02-13 12:24:12

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

撤销用户ID令牌后,应将信息传递给客户端以执行诸如重新认证或用户signOut()之类的操作。

在客户端上,我们可以致电FirebaseAuth.DefaultInstance.SignOut。我们如何使用admin SDK达到相同的效果?

是否可以通过admin SDK注销用户?(使auth === null)。

“黑客”可能会更改客户端代码,并阻止该应用注销或重新认证。我知道我可以检查令牌是否已使用admin SDK和firebase规则吊销,但是仅当auth为null时检查起来会容易得多。还是我的想法是错误的,因为“黑客”获得了ID令牌一次,并且即使在名为FirebaseAuth.DefaultInstance.SignOut的客户端应用程序之后仍可以使用这些凭据发送请求?

1 个答案:

答案 0 :(得分:1)

  

是否可以通过admin SDK登出用户?

Admin SDK提供了一种撤消用户刷新令牌的方法。由于用户具有不可撤销的 ID 令牌,有效期为一个小时,因此不会立即注销用户。

如果要立即使被撤消令牌的客户端无法使用后端资源,则可以在撤消令牌时将其状态写入数据库,然后从安全规则中访问该资源。没有简单的方法可以立即阻止它们。另请参阅Five tips to secure your app,其中涵盖了本主题和安全性主题。

  

“黑客”可能会更改客户端代码,并阻止应用注销或重新认证

客户端的身份验证状态基于铸造后一小时内有效的ID令牌。客户端无法将令牌扩展到此范围之外。要获取新的ID令牌,它必须调用身份验证服务器,该服务器在撤销其刷新令牌后将失败。

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