如何通过admin SDK注销用户? (使身份验证=== null)

How to sign out the user via admin SDK? (make the auth === null)

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

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

有没有办法通过 admin SDK 退出用户?(使 auth === null)。

A 'hacker' 可以更改客户端代码并阻止应用退出或重新验证。我知道我可以使用 admin SDK 和 firebase 规则检查令牌是否被撤销,但仅当 auth 为 null 时检查会容易得多。或者我的想法是错误的,因为 'hacker' 获得了 ID 令牌一次,并且即使在客户端应用程序调用 FirebaseAuth.DefaultInstance.SignOut 之后仍然可以使用这些凭据发送请求?

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

Admin SDK 提供了一种方法来撤销用户的 refresh 令牌。这不会立即将用户注销,因为用户有一个不可撤销的 ID 令牌,有效期为一个小时。

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

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

客户端的身份验证状态基于 ID 令牌,该令牌在生成后一小时内有效。客户端不能将令牌扩展到此之外。要获得新的 ID 令牌,它必须调用身份验证服务器,这将在其刷新令牌被撤销后失败。

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

以获得更好的解释