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

标签 android security oauth oauth-2.0

一些背景:

  1. 用户在每个应用启动实例上输入凭据。
  2. 这些凭据作为 POST 正文的一部分发送到服务器(我们使用 AES 使用 key 对其进行加密并放入帖子正文中),然后我们返回一个 token ,该 token 是来自服务器的一些编码字符串。
  3. 此 token 将授权我们的应用发出请求。

现在我希望各位读者关注这样一个事实:我们首先需要用户凭据才能获取授权 token 。

  • token 将在 12 小时后过期,并且所有后续请求均未经授权,我们被迫将用户踢出应用程序以再次重新登录并获取新 token ,该 token 在另外 12 小时内有效。我知道这是一次糟糕的经历。
  • 现在我们需要实现记住我的功能。使用共享首选项我一点也不舒服(即使使用加密,在这种情况下,严重的黑客也可能获得 key )。我应该怎么办 ?我刚刚知道 token Web 服务是一个 oAuth2。我是一个新手,仍在查看有关 oAuth2 的文章,我看到人们对 SharedPrefs 和 AccountManager api 进行了大量讨论。但我看到了这个answer作者:雷托·迈尔。他提到服务器应该使用 oAuth。我的问题是给定我的场景,最安全的方法是什么以及如何使用 oAuth 来实现“记住我”功能。任何类型的“清晰”示例/清晰解释都会有很大帮助。期待您的答复。

    最佳答案

    这仅是我的观点,可能不是 100% 正确。

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

    • 使用派生函数将密码存储在服务器的数据库中 与 hash + salt 一起,成为每个用户唯一的 salt;

    • 通过发送用户名和密码(散列或纯文本)来实现 oAuth 文本并不重要)通过 HTTPS 一次到服务器,他
      返回具有给定到期时间的 token 。例如 Dropbox
      oAuth token 具有大量验证,但这并不意味着它不太安全。你 如果用户受到威胁,只需使 token 失效即可;

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

    关于Android:OAuth2 - 如何实现记住我的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401251/

    相关文章:

    php - 推特和 PHP : permanent access token

    java - 在 Tyrus Web Socket 中使用 OAuth

    android - 调整评级栏中的图标大小

    android(phonegap)应用程序打开进入白屏并崩溃

    wordpress - 加载不安全的元素 - 整个网站上没有 https

    javascript - 使用 eval 使用字符串输入按名称将函数分配给变量有哪些风险?

    android - 在新的 Android Studio(Bumblebee 及更高版本)Gradle 设置中将 Android Gradle 插件版本放在哪里?

    android - 为android编译librtmp错误: cannot find -ldl collect2: error: ld returned 1 exit status

    javascript - EventSource/SSE(服务器发送事件)- 安全

    oauth - 如何获取访问 AOL API 所需的客户端 ID 和客户端密码?