【问题标题】:Secure method of saving credentials in Android在 Android 中保存凭据的安全方法
【发布时间】:2017-11-16 15:25:50
【问题描述】:

我正在开发一个 Android 应用。对于身份验证,用户需要输入用户名和密码,服务器会返回一个过期的身份验证令牌。

目前我正在保存令牌,但不保存凭据。在本地保存凭据的首选最安全方法是什么,这样当令牌身份验证失败时,我可以在后台使用保存的凭据重新登录用户,而无需用户再次输入凭据。

我知道使用 SharedPreferences 保存数据。但它们真的安全吗?我可以为此目的使用 AccountManager 吗?

【问题讨论】:

  • SharedPreferences 当然不应该被认为是安全的
  • 阅读这篇文章,根据另一个 stackoverflow 答案,接受的答案是来自谷歌的 android dev 的技术负责人。 stackoverflow.com/questions/785973/…

标签: android login sharedpreferences accountmanager android-security


【解决方案1】:

拥有一个后台服务,当令牌过期时会自动再次登录用户,这不是很安全。

难道不能延长被告知的有效期吗?因为保存凭据并尝试定期登录不是很安全。

【讨论】:

  • 我不应该更改到期时间,因为该服务也被其他人使用。即使我确实按照您的建议延长了令牌的有效期,我仍然必须将令牌存储在某个地方。因此,如果我担心保护用户名和密码,那么我也应该担心保护令牌,它现在有效期更长。绝对不是我正在寻找的答案。还是谢谢
  • 一个可能的过程可能是在 exoiry 上重新发行代币。首先,验证旧令牌,然后检查用户是否仍然存在或访问权限未被撤销或对您的应用程序有意义的任何事情。接下来,发行一个具有更新期限的新令牌。冲洗并重复。执行此操作并拥有一个处理重新发布的类的后台服务可能就是您当时正在寻找的。无需保存凭据,用户安全。
  • 再一次,我不明白这如何解决我对安全性的担忧。您的意思是,如果我可以访问某人的令牌一次,那么我就可以继续为他们的帐户获取新令牌,因为服务器无论如何都会在没有任何身份验证的情况下返回我的新令牌。
  • 没有。首先,大多数令牌管理最好在服务器端而不是在设备上处理。其次,道歉,我说的是两个不同的标记。一种用于访问,一种用于刷新。 Auth0 销售出色的身份验证服务,并且比我能更好地解释它。 auth0.com/learn/refresh-tokens
猜你喜欢
  • 2023-03-03
  • 2014-04-16
  • 2017-07-06
  • 1970-01-01
  • 2018-05-22
  • 2021-06-11
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多