2013-08-03 50 views
1

我希望我的REST API服务器能够仅与我的iOS应用程序通信。用户群将不会超过1000人,而且市场总体上非常小而且不受欢迎。这就是为什么我认为除了简单的挑战 - 响应身份验证(HTTP,OAuth 2.0,SSL)之外的任何事情都是过度的。但我不确定这个认证应该如何流动。以下是我心目中:如何为REST API身份验证实施质询 - 响应?

  • 客户端应用程序(用户)发送一个请求:api.example.com/auth?username=john
  • 服务器用随机生成的字符串回应说:“somerandomlygeneratedstring”
  • 客户端接收字符串,将其附加到用户名,然后附加一个秘密字符串,在应用程序中进行硬编码并使用MD5对整个字符串进行散列。
  • 客户端通过了串到服务器:api.example.com/auth?username=john &响应= thenewMD5hashstring
  • 服务器生成相同MD5哈希字符串,如果它们匹配,标记该用户作为数据库中的验证和来自该用户的所有API请求将从现在开始处理。

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

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

回答

1

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

该计划有几个问题需要考虑。

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