2015-02-09 77 views
1

有点背景:Android:OAuth2 - 如何实现记住我的功能?

  1. 用户在每个应用程序启动实例上输入凭据。
  2. 这些证书作为POST机构的一部分发送(我们使用AES将密钥加密并放在帖子主体中)发送到服务器,然后我们获取一个令牌,它是来自服务器的一些编码字符串。
  3. 此令牌将授权我们的应用程序发出请求。

现在我希望您的读者能够关注这个事实,我们首先需要用户凭证来获取授权令牌。

  • 令牌在12小时内和所有的后续请求期满是未经授权的和我们被迫踢用户退出应用,再次重新登录,并得到一个新的令牌是再好12个小时。我知道它的一个不愉快的经历。
  • 现在我们需要实现一个记住我的功能。我使用共享首选项并不是很舒服(即使有加密,在这种情况下,严重的黑客可能会得到钥匙)。我该怎么办 ?我刚开始知道令牌Web服务是oAuth2。我仍是一位新手,正在研究关于oAuth2的文章,并且我看到了人们对SharedPrefs和AccountManager api的大量讨论。但是我看到了Reto Meier的answer。他提到服务器应该使用oAuth。我的问题是我的场景,什么是最安全的方式来做到这一点,我怎样才能用oAuth来实现记忆功能。任何一种“清晰”的例子/清楚的解释都会有很大的帮助。期待您的答案。

    回答

    2

    这完全是我的看法,可能低于100%正确。

    我目前正在与此,但一些我知道,可能导致事情挣扎是:

    • 在服务器的数据库中存储的密码使用导出函数 与哈希+盐一起,是唯一的盐每个用户;

    • 由通过HTTPS发送的用户名和密码(散列或纯文本 没关系)服务器一次性,他
      返回一个标记与给定的到期时间实施的OAuth。例如Dropbox
      oAuth令牌具有巨大的验证,并不意味着它不太安全。如果用户受到威胁,您必须​​使令牌无效;

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

    +0

    感谢您的回复。我会用更多的研究来标记你的答案:)。请问我知道,只有当它适合你时,你遇到了什么问题? – uLYsseus 2015-02-09 01:36:29