我想实现类似 WhatsApp Web 的身份验证,用户应该使用移动应用程序扫描二维码,以使用 Firebase 登录 Web 应用程序,并且我希望通过基于电子邮件和密码的身份验证注册的用户来实现此目的(我不会使用 FB 或 G+ 登录)。
我已经介绍了 Android 应用程序可以在何处扫描二维码并接收数据,但我一直困惑于如何使用移动应用程序对 Web 应用程序中的用户进行身份验证。
任何建议/指针/示例代码将不胜感激。
我能想到的一个解决方案是使用 Firebase 匿名身份验证功能。您可以让您的 Web 应用程序暂时进行匿名身份验证,生成用于加密的私钥和公钥对,显示包含匿名帐户的 UID 以及公钥的 QR 码,让移动应用程序扫描 QR 码并写入用户的将电子邮件和密码(使用公钥加密)发送到实时数据库到只能由该匿名帐户读取的位置,让 Web 应用程序解密电子邮件和密码,然后登录到 Web 应用程序。
显然,存储密码而不仅仅是哈希值并不是世界上最好的安全实践,但我相信这样的方法是可行的。
安全规则可能看起来像这样(伪代码):
/Anonymous-user-id/credentials:如果 user.id == Anonymous-user-id 则读取,如果 userID 属于任何实际帐户则写入。