我们目前的任务是使用RESTful API实现移动应用程序通信(最好是简单的)身份验证系统。后端具有用户特定的数据,由用户的电话号码标识。我试图更多地了解安全性,不同的方法以及他们为什么以他们的工作方式工作。使用移动应用程序进行API身份验证(通过SMS)
我认为一个简单的认证系统的:
- 客户端发送的验证请求,以包括他们的电话号码和一个生成的GUID的API。
- 服务器使用验证码向手机号码发送短信。
- 客户端通过发送其唯一的GUID,电话号码和验证码来验证他们的设备。
- 服务器响应某种访问令牌,客户端可以使用该令牌来进一步请求。
我有以下问题:
是否有这种做法的任何重大缺陷? 假设我们使用HTTPS,它是否足够安全地发送数据,否则未加密? 可以将访问令牌安全地存储在移动设备上,以便只有我们的应用可以读取它们? 还有什么我们没有想到的?
我们已经认识到,当手机被盗或被盗用时,数据不再安全,但这是一个难以克服的风险。访问令牌可以暂时有效,以最大限度地降低此风险。
我认为这种方法是简单的方法,有一个巨大的缺陷:)你能指导我吗?
您可能有兴趣在阅读oauth2.0 - http://oauth.net/2/这是当前的认证趋势。基本上,客户端打开后会打开一个由服务提供商维护的网页,供用户登录他/她的账户,客户端被重定向到一个接收访问代码的页面(短时间可用),然后代码被交换为一对访问令牌和刷新令牌。访问令牌用于访问用户的帐户和刷新令牌 - 刷新访问令牌。 – stan0
我已阅读oauth,但我不认为它适合我们。我们不允许通过第三方认证系统进行登录,所以看起来像是过度杀毒。用户没有用户名和密码,我们只需要确认他们有权访问输入的电话号码(因此验证短信)。他们可以访问的数据也与电话号码相关联。 – Dennisch
我的观点是你描述了一个类似于oauth2.0的认证系统。也许oauth的优点和缺点(访问令牌,安全性等)对你的系统有效 – stan0