如何准确地实现RESTAPI身份验证的质询响应?

如何准确地实现RESTAPI身份验证的质询响应?,api,rest,authentication,Api,Rest,Authentication,我希望我的REST API服务器只能与我的iOS应用程序通信。用户群将不超过1000人,市场规模相当小,总体上不受欢迎。这就是为什么我认为,除了简单的质询-响应身份验证(HTTP、OAuth 2.0、SSL)之外的任何东西都是一种过分的杀伤力。但我不确定这个认证应该如何进行。以下是我的想法: 客户端应用程序(用户)发送请求:api.example.com/auth?username=john 服务器响应随机生成的字符串:“somerandomlygeneratedstring” 客户端获取字符

我希望我的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请求
我的想法对吗?还是我完全错了?请记住,我想要基本的安全,对于这样一个小项目来说,任何太花哨的东西都是多余的


此外,我不会在我的数据库中保留任何敏感数据,如个人信息。

您只需通过
授权
头对每个请求使用HTTP Basic auth,并通过SSL进行所有交互。如果你想要基本的安全,没有必要超越这一点

你心目中的计划有几个问题

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

您只需通过
授权
头对每个请求使用HTTP Basic auth,并通过SSL进行所有交互。如果你想要基本的安全,没有必要超越这一点

你心目中的计划有几个问题

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