Android:存储HTTP基本密码/用户名

时间:2014-05-04 07:06:00

标签: android database credentials http-basic-authentication

我有一个简单的RESTful后端,我使用HTTP Basic over HTTPS进行身份验证。它工作正常,但我正在寻找一个适当的解决方案来存储凭据(用户名+密码)。

有很多例子,大多数人建议使用Account Manager存储密码。 AFAIK客户经理只存储OAUTH(和类似的)账户并自动生成令牌等。但是如何使用它来存储和获取原始密码?它甚至可能吗?

其他人建议将其存储为散列值,但这对我来说没有意义(在一天结束时我需要访问原始字符串)。

对于另一个How to use HTTP basic and android问题感到抱歉,但到目前为止我无法找到合适的答案并将数据存储在本地sqlite数据库中,因为纯文本似乎不合适。

2 个答案:

答案 0 :(得分:3)

我对你的项目/管理风格有一些想法。

  1. 您为什么要在设备上保存密码?
  2. 为什么不使用auth令牌?
  3. 为什么不使用旧的sharedPreferences工作。
  4. 我建议这样做。 首先注册(不需要密码和用户名,它创建用户" Guest123")或使用密码登录服务器(由设备进行哈希处理,从用户获取正常的edittext)。 然后检查服务器上的正确性,如果有效,则发送一个身份验证令牌和该令牌的生存时间。 将其存储在共享偏好中。 如果此令牌无效(因为时间结束,登录到另一台设备上......),请向服务器发送每次请求时发送令牌,告诉用户。

    这里可以做一些调整,但是一开始它可以帮助你完成项目。

答案 1 :(得分:2)

当然,您也可以使用Account Manager来存储密码。这是方法:

addAccountExplicitly (Account account, String password, Bundle userdata)

您可以使用此方法获取密码:

getPassword(Account account)