我知道这个问题已经以各种形式问过。 不过,我不找了“使用https”的答案。 我已经使用HTTPS,我不担心有效载荷的灵敏度被来回传输。
然而,我工作的一个iPhone应用程序在谈论到我建立了一个REST API(我有应用程序和服务器的控制 - 因此,任何建议,欢迎)。
我用于身份验证的OAuth2用户协议,这意味着,我的“API密钥”是一个客户端ID和客户端密钥, 只有需要被发送到获取的组合access_token
。 在此之后,所有的请求被发送到使用所述服务器access_token
和含有该请求主体的HMAC(利用客户端秘密作为密钥)的报头。 此另外的唯一原因,是因为这样的人不能让与只是一个API请求access_token
。
被公开的是我说的是要的API,当我松开应用。 所以我并不担心别人能够进行API调用它。
我关心的是:
- 人们能够使用我的应用程序的客户端凭证(这意味着我无法检测在服务器端,它不是来自我的应用程序)调用API
- 人们能够滥用额外的范围,我的客户端ID将让他们有和传统的API用户将不必
我的猜测是,有没有真正解决这个问题的解决方案(比使用一个UIWebView并作出荣耀的web应用程序等),但我想我会问在这里反正。
你所有能想到的,以保护客户端ID /客户端密钥的路要走,如果它需要由应用程序消耗?