Android应用持久身份验证

时间:2014-04-03 19:01:45

标签: android ios authentication oauth

我最近开始使用Android应用程序,我已经达到了我希望它与Web服务进行通信的程度,我完全理解如何以不安全的方式执行此操作,我稍微绊倒了关于安全。

我希望它能像手机上的facebook应用程序一样工作,它总是登录,似乎永远不会过期。

我的第一个想法是使用User / Pass并使用SSL加密在手机上本地保存它们。但这可能是一个安全问题,丢失的手机根植,然后人们可以看到登录和通过(即使他们是哈希/加密,这似乎是一个问题)

我的另一个选择是使用Oauth 1a / 2但是如果我没有弄错,这似乎有同样的问题,除了使用auth令牌,这意味着除了在api层之外会出现同样的问题。

我也研究了机器人帐户管理器,但我打算为iOS制作这个,所以我想使用两者的通用做法。

你们有什么想法?

一般问题:

  1. 刷新Oauth令牌与再次登录相同,还是只是一个新的Oauth令牌?

  2. 有没有办法从手机中获取唯一ID以检测是否正在使用“新手机”?

  3. 有谁知道facebook或google如何在他们的设备上处理他们的身份验证/授权?他们只是存储一个永不过期的身份验证令牌,或者只是发布一个新的身份验证令牌吗?

  4. 我认为Android应用程序似乎很容易受到“如果有人发现漏洞来提取身份验证令牌而没有root访问权限会怎样?”我认为这是错误的吗?

    我还错误地认为,只有当他们获得我的令牌时才能阻止某人通过api访问我的帐户,如果我访问并使用了api并且它将我的Oauth更新为新值以使我的旧一个过时的? (假设没有可靠的方法来判断哪个设备是哪个)

1 个答案:

答案 0 :(得分:1)

是的,存储用户/传递设备是不可能的。请查看this,了解有关令牌如何工作的详细信息。

您要做的是在用户登录,存储并使用它来签署您的所有请求后,从您的服务器获取OAuth令牌。如果其他人获得了您的令牌,您可以使其无效,以便他们无法代表您再做任何请求。

关于你的问题:

  1. 使您的令牌失效将类似于登出您。刷新(将令牌换成新的令牌)就像再次登录。
  2. 是的,你可以找到here
  3. 的方法
  4. 我在我的应用上使用FB和Twitter实现了身份验证 以前,它的工作方式是,在用户验证后,你得到一个 短时间令牌,你可以交换一个长期存在的令牌。您 然后将其存储在设备上并用于将来的请求。 更多信息 here