我正在开发一个有一些要求的 REST 服务:
- 它必须是安全的。
- 用户不应该能够伪造请求。
我目前提出的解决方案是有一个看起来像这样的自定义授权标头(这与亚马逊网络服务的工作方式相同):
Authorization: MYAPI username:signature
我的问题是如何形成签名。当用户登录服务时,他们会获得一个密钥,他们应该能够使用它来签署请求。这将阻止其他用户代表他们提交请求,但不会阻止他们伪造请求。
将使用此服务的应用程序是一个 iPhone 应用程序,所以我想我们可以在应用程序中嵌入一个公钥,我们可以用它来做一个额外的签名,但这是否意味着我们必须有两个签名,一个一个用户密钥和一个应用程序密钥?
任何建议将不胜感激,我很想第一次就做到这一点。