将 Android 个 Firebase Auth 用户安全地存储在 MySQL 个数据库中

Securely store Android Firebase Auth users in a MySQL database

我正在创建一个 Android 本机应用程序,我正在使用具有多个身份验证提供的 Firebase 身份验证,例如;电子邮件、Facebook、Google 等,我将使用 Firebase SDK 进行聊天和实时数据库。

我有一个 RESTful API 和 MySQL(类似于 Facebook 的;朋友、私人和 public 帖子),一个 [= 背后的用户数据库55=] 服务器,我想同步身份验证,这样我就可以确保用户是正确的,并且有权访问他们有权访问的数据。我可以编辑和更改我的数据库,以便根据此处的建议对其进行调整。

(我原以为我可能需要类似 OAuth 的东西,但我认为不再需要)

经过大量研究,我认为我需要将用户电子邮件和 Firebase Auth 令牌安全地传送到 MySQL,同时保持详细信息同步?这似乎是很常见的事情,但我一直无法找到明确的答案。

(如果以上说法成立)

我的问题是:

我对大多数 Auth 概念都不熟悉。

此致

  1. 电子邮件和身份验证令牌是否是通过服务器对用户进行身份验证所需的全部:您只需要身份验证 ID 令牌。你可以从那里得到电子邮件。每次将 ID 令牌发送到您的服务器时,您都需要对其进行验证。检查 https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library

  2. 是否应该使用 PHP SDK 将 Auth 令牌发送到 Firebase SDK:相反。 ID令牌在客户端,你调用getIdToken然后发送到你的后端服务器。

  3. 关于安全性,凭据应如何存储在 MySQL 数据库中:您不需要将凭据存储在数据库中。您可以存储会话信息,但凭据是在客户端生成和刷新的。

  4. Auth 令牌如何过期 and/or 刷新:调用 user.getIdToken 将始终 return 一个新令牌。如果令牌没有过期,缓存的令牌将被 returned。如果过期,它将被刷新和新的 returned。每次经过身份验证的用户发送一些请求时,您都需要调用它。
  5. 如何将信息从 Android 客户端安全地发送到 MySQL 数据库:您应该始终将其与用户的 ID 令牌一起发送。确保使用 https 协议。始终验证服务器上的 ID 令牌。
  6. 更新 Auth 令牌的正确程序和策略是什么:使用 user.getIdToken()
  7. 验证详细信息的正确同步策略是什么,例如客户端和服务器之间的电子邮件地址和令牌:令牌不需要存储在您的服务器上。您可以信任令牌中的电子邮件。用户的电子邮件可能会在客户端更新。当发生这种情况时,令牌电子邮件也应该更新。