我最近开始玩弄android应用程序,并且我已经到了希望它与Web服务进行通信的地步,我完全理解如何以不安全的方式执行此操作,我在哪里有点绊倒了安全。Android应用程序持久身份验证
我希望它能像我的手机上的Facebook应用一样工作,它始终登录,永远不会过期。
我的第一个想法是使用用户/密码并将它们本地保存在使用SSL加密的手机上。但是,这可能是一个安全问题,丢失的电话被植根,然后人们可以看到登录和通过(即使他们是哈希/加密,这似乎是一个问题)
我的另一种选择是使用Oauth 1a/2但是,如果我没有弄错,除了auth令牌外,这似乎也有相同的问题,这意味着除了在api层之外发生同样的问题。
我也看了一下androids accountManager,但我打算在iOS上做这个,所以我想为两者都使用通用的做法。
你们认为什么?
一般问题:
令人耳目一新OAuth凭证相同的话说登录一次,或者是它只是一个新的Oauth权杖?
有没有办法从手机中获得一个唯一的ID来检测是否正在使用“新手机”?
有谁知道Facebook或谷歌如何处理他们的设备上的身份验证/授权?他们只是简单地存储一个永不过期的验证令牌,或者只是发布一个新的验证令牌?
我猜Android应用程序对我来说似乎很脆弱,如果有人发现利用漏洞获取身份验证令牌而无需root访问权限?立足点,我在想这个错了吗?
我是否错误地认为唯一能够阻止某人通过api访问我的帐户的人,如果他们获得了我的令牌的话,是否我访问并使用了api,并且将Oauth更新为新的值以使我的旧的过时? (假设没有可靠的方法来确定哪个设备是哪个设备)
好吧,所以Oauth的想法并不是说它在漏洞的意义上更安全(因为用户/密码具有相同的问题),但在某种意义上它保护用户的实际用户名和密码,并且如果它被破坏,你只需更新/使令牌无效。 – Krum110487
是的。您不必存储用户凭据,每次打开应用程序时都不必通过网络传输它们。 – FMontano
看看[这个答案](http://stackoverflow.com/questions/7561631/oauth-2-0-benefits-and-use-cases-why)。你可能会发现它很有帮助。 – FMontano