iOS使用令牌身份验证调用公共Web服务

时间:2013-07-15 00:48:27

标签: ios authentication asp.net-web-api

我们正在构建一个iOS应用程序,它集成了一个用于数据存储和检索的Web服务。

目前有几个端点不需要身份验证,这意味着该应用无法登录。

我们试图阻止非应用用户使用客户端和服务器之间的令牌身份验证来调用公共Web服务。

问题在于,由于应用程序无需登录,因此将在应用程序内静态生成令牌,因为我们可以在令牌生成中使用客户端提交的数据。

这导致了一个问题,即任何人都可以反编译应用程序,找到我们的公钥并找出如何生成令牌,然后随意调用Web服务。

过去有没有人处理过类似的问题?令牌是防止不需要的客户端呼叫服务的最佳方法吗?

或者,我们是否有办法在应用程序中存储公钥,以保护公众免受人们的攻击?

谢谢

2 个答案:

答案 0 :(得分:0)

当用户首次启动应用时,它会与服务器通信并向您发送设备ID。服务器将使用设备ID生成Userid和密钥。您将使用它来验证人员。

答案 1 :(得分:0)

您肯定需要将应用和凭据分开。这是你可以做到的一种方式。比如,用户安装您的应用程序。用户需要做的下一件事是访问您网站中的网页以获取ID和密钥。网页可以生成ID和密钥,并显示最终用户可以扫描的QR码,以将ID和密钥输入到应用程序中。该应用程序将ID和密钥存储在某处,并使用Hawk方案之类的东西来签署请求,服务器可以对其进行验证。