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

时间:2017-07-29 04:36:07

标签: mysql authentication synchronization firebase-authentication credentials

我正在创建一个Android原生应用,我正在使用带有多个身份验证提供的Firebase Auth;电子邮件,Facebook,Google等,我将使用Firebase SDK进行聊天和实时数据库。

我有一个带有MySQL的RESTful API(类似于Facebook,有朋友,私人和公共帖子),PHP服务器后面的用户数据库,我想同步Auth,以便我可以确保用户是正确的并有权访问他们有权限的数据。我可以编辑和更改我的数据库,以便我可以根据这里的建议进行调整。

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

经过大量研究,我认为我需要安全地将用户电子邮件和Firebase Auth令牌传达给MySQL,同时保持细节同步?看起来这会很常见,但我找不到明确的答案。

(如果以上陈述为真)

我的问题是:

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

我是大多数Auth概念的新手。

祝你好运

1 个答案:

答案 0 :(得分:2)

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

  2. Auth令牌是否应该使用PHP SDK发送到Firebase SDK:反之亦然。 ID令牌位于客户端,您调用getIdToken然后将其发送到后端服务器。

  3. 如何在安全性方面将凭据存储在MySQL数据库中:您无需在数据库中存储凭据。您可以存储会话信息,但会在客户端上生成和刷新凭据。

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