Android:OAuth2 - 如何实现记住我的功能?

时间:2015-02-09 00:50:16

标签: android security oauth oauth-2.0

一些背景知识:

  1. 用户在每个应用启动实例上输入凭据。
  2. 这些凭据作为POST正文的一部分发送(我们使用AES将密钥加密并放入帖子正文中)到服务器,然后我们从服务器获取一个代码,该代码是一些编码字符串。
  3. 此令牌将授权我们的应用发出请求。
  4. 现在,我希望读者能够专注于我们需要用户凭据才能获得授权令牌。

    1. 令牌在12小时后到期,所有后续请求都是未经授权的,我们被迫将用户踢出应用程序再次重新登录并获得一个新的令牌,这对另外12小时有利。我知道它有一个不好的经历。
    2. 现在我们需要实现记住我的功能。我使用共享首选项并不是很舒服(即使加密,严重的黑客可能会在这种情况下获得密钥)。我该怎么办 ?我刚才知道令牌Web服务是oAuth2。我是一个新手,仍然在看有关oAuth2的文章,我看到人们对SharedPrefs和AccountManager api进行了大量讨论。但是我看过Reto Meier的这个answer。他提到服务器应该使用oAuth。我的问题是我的方案,最安全的方法是什么,以及如何使用oAuth的任何东西来实现记住我的功能。任何类型的" clear"例子/明确解释将是一个很大的帮助。期待您的回答。

1 个答案:

答案 0 :(得分:2)

这完全是我的意见,可能不到100%正确。

我目前正在努力解决这个问题,但我知道可能导致的一些事情是:

  • 使用派生函数将密码存储在服务器的数据库中 以及hash + salt,是每个用户独有的盐;

  • 通过发送用户名和密码实现oAuth(哈希或简单 文字并不重要)通过HTTPS一次到服务器,他 返回具有给定过期时间的标记。例如Dropbox
    oAuth令牌有一个巨大的验证,并不意味着它不太安全。您 如果用户遭到入侵,只需要使令牌无效;

  • 将令牌存储在设备的SharedPreferences中并将其用作 记住我。