【发布时间】:2023-03-11 05:35:01
【问题描述】:
我正在开发一个有一些要求的 REST 服务:
- 它必须是安全的。
- 用户不应伪造请求。
我目前提出的解决方案是使用如下所示的自定义授权标头(这与亚马逊网络服务的工作方式相同):
Authorization: MYAPI username:signature
我的问题是如何形成签名。当用户登录到服务时,他们会获得一个密钥,他们应该能够使用该密钥对请求进行签名。这将阻止其他用户代表他们提交请求,但不会阻止他们伪造请求。
将使用此服务的应用程序是一个 iPhone 应用程序,所以我想我们可以在应用程序中嵌入一个公钥,我们可以用它来做一个额外的签名,但这是否意味着我们必须有两个签名,一个用于用户密钥,一个用于应用密钥?
任何建议都将不胜感激,我非常希望第一次就做到这一点。
【问题讨论】:
-
定义“伪造请求”。哪个实体创建非伪造请求?是客户端软件吗?
标签: rest authentication http-headers authorization rest-security