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

Gar*_*luk 6 mysql authentication synchronization credentials firebase-authentication

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

我有一个带有 MySQL 的 RESTful API(与 Facebook 类似;朋友、私人和公共帖子)、一个 PHP 服务器后面的用户数据库,我想同步身份验证,以便我可以确保用户是正确的并且有一个有权访问他们有权访问的数据。我能够编辑和更改我的数据库,因此我可以根据此处的建议进行调整。

(我最初认为我可能需要像 OAuth 这样的东西,但我不再认为这是必要的)

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

(如果以上说法属实)

我的问题是:

  • 电子邮件和身份验证令牌是通过服务器对用户进行身份验证所需的全部内容吗?
  • 是否应使用 PHP SDK 将 Auth 令牌发送到 Firebase SDK
  • 关于安全性,凭据应如何存储在 MySQL 数据库中
  • 身份验证令牌如何过期和/或刷新
  • 如何将信息从 Android 客户端安全地发送到 MySQL 数据库
  • 更新 Auth 令牌的正确程序和策略是什么
  • 身份验证详细信息的正确同步策略是什么,例如客户端和服务器之间的电子邮件地址和令牌
  • 我什至在正确的轨道上:)

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

此致

boj*_*eil 10

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