如何安全地存储我的应用程序的用户凭据

时间:2017-11-08 20:27:54

标签: android authentication firebase-authentication basic-authentication auth0

我有一个Android应用,允许用户通过他们的API与第三方服务进行交互。此API使用基本身份验证,因此每个API调用都需要用户的用户名和密码。理想情况下,我不想在本地存储用户的凭据,因为这是非常不安全的。我不太了解身份验证,但我认为这是我理想的解决方案:

  • 用户将此凭据提供给此服务一次以进行验证
  • 验证后,我会将用户的凭据发送到后端服务以存储它们,这会为我提供身份验证令牌。我在本地存储此令牌(这里加密很重要吗?)
  • 每当我想要将来调用此服务时,我都会使用此身份验证令牌与后端服务进行通信,后端服务为我提供用户的基本身份验证用户名/密码以进行API调用

这是一个很好的解决方案吗?如果是这样,是否有可用于推动此过程的后端服务?我已经查看了Firebase身份验证,但我不知道它是否满足了我的需求,因为我试图为第三方服务存储凭据,而不是专门针对我的应用。我听说过Auth0,这可能是我正在寻找的,但对于像我这样的小应用来说似乎有些过分。

1 个答案:

答案 0 :(得分:0)

您可以轻松使用Firebase Auth并获得所需的所有功能,同时确保用户的安全。它提供了您需要的功能:

  1. Firebase支持密码身份验证,并根据行业标准正确存储散列/加密密码凭据。这是createUserWithEmailAndPasswordsignInWithEmailAndPassword的一个API。
  2. Firebase提供了一种验证电子邮件地址的机制。它也是一个API:user.sendEmailVerification()
  3. 登录后,Firebase Auth会返回一个ID令牌(user.getIdToken()),您可以使用该令牌识别所有经过身份验证的请求中的用户。他们还提供了一个Admin SDK来解析和验证该令牌(auth.verifyIdToken(idToken))。还提供刷新令牌以在到期时连续刷新ID令牌。这意味着会话无限期,用户无需再次在设备上登录。
  4. ID令牌提供其他用户数据,例如email_verified,您可以使用这些数据来确保用户已经过验证。 ID令牌是JWT,如果没有Firebase Auth后端私钥,则不能泄露。