如何实现REST API身份验证的质询 - 响应?

时间:2013-08-03 10:31:05

标签: api rest authentication

我希望我的REST API服务器只能与我的iOS应用程序通信。用户群不超过1000人,市场规模相当小,一般不受欢迎。这就是为什么我认为除了简单的质询 - 响应身份验证(HTTP,OAuth 2.0,SSL)之外的任何事情都会有些过分。但我不确定这个身份验证应该如何流动。以下是我的想法:

  • 客户端应用(用户)发送请求:api.example.com/auth?username=john
  • 服务器以随机生成的字符串响应:“somerandomlygeneratedstring”
  • 客户端获取字符串,将其附加到用户名,然后附加一个秘密字符串,在应用程序中进行硬编码,并使用MD5来散列整个字符串。
  • 客户端将字符串传递给服务器:api.example.com/auth?username=john&response=thenewMD5hashstring
  • 服务器生成相同的MD5哈希字符串,如果匹配,则将此用户标记为在数据库中进行身份验证,并且此用户的所有API请求将从现在开始处理。

我有正确的想法吗?或者我完全错了?请记住,我想要基本的安全性,任何过于花哨的东西对于这样一个小项目来说都是过度的。

另外,我没有像个人信息那样在我的数据库上保留任何敏感数据。

1 个答案:

答案 0 :(得分:1)

您应该通过Authorization标头为每个请求使用HTTP Basic身份验证,并通过SSL进行所有交互。如果你想要基本的安全性,就没有必要超越它了。

您想到的方案有几个问题。

  • 您的最后一步本质上是服务器端会话,这在REST中是不可接受的。
  • MD5实际上已被破坏,除了完整性检查外,不应用于任何其他任何内容。
  • 在REST中,如果符合您的需要,您应该使用协议提供的标准化身份验证方法。重新创建它以使用您想到的URI参数是不必要的。
  • 您想要的哈希方案只有在您想要签署请求时才有意义,保证它没有被篡改。