我正在开发客户端 - 服务器应用程序,其中客户端应用程序将在移动设备(Android,iOS)上运行,并将通过HTTP协议与服务器通信。移动应用程序将在市场上免费提供,多个用户将在同一设备上使用相同的应用程序实例。
我需要对服务器的每个请求进行身份验证,我需要对设备进行身份验证,而不是用户,而且几乎任何人都可以拥有设备。
我已经解决了这个问题:
安装应用程序后:
我们假设这是在安全的网络上完成的:
现在设备有自己的“凭据”。
随每个客户请求:
我的问题:
假设存在安全存储之类的东西:这种方法有多安全?
有什么类似安全存储在iOS和Android中没有人(但唯一的应用程序)可以读取的内容吗?你能提供一些学习的链接(特别是对于android)。这取决于设备的生根吗?
有些说明:
我相信,由于请求密钥,客户端确实需要证明秘密设备密钥的知识(没有请求密钥 >黑客可以再次发送截获的数据)。由于设备密钥是通过安全网络发送的,因此无法拦截,因为它存储在安全存储中,因此无法从设备中窃取。
但是我希望没有100%安全存储(最低限度安装在Android上),如果设备已植根,则秘密的设备密钥可能会被盗。将其加密存储会使黑客更难 - 他需要反编译客户端应用程序并找到如何解密它。
答案 0 :(得分:0)
http://developer.android.com/reference/android/accounts/AccountManager.html我想你已经知道了。 keytool和自签名证书怎么样?我可能没多大帮助。
答案 1 :(得分:0)
我要做的是在Android上为您的应用程序创建登录Web服务(当然,您需要加密和解密您的登录信息)。如果登录成功,请将用户会话保存在sharedPreferences或您选择的其他存储中。用户完成后,用户可以注销,用户会话将被销毁。