【问题标题】:HTTP Basic Authentication vs Secret KeyHTTP 基本身份验证与密钥
【发布时间】:2015-12-08 14:04:53
【问题描述】:

在构建了一个相当简单的 API 之后,我开始研究身份验证,其中仅使用用户名/密码组合的 SSL 上的基本 HTTP 身份验证对于使用它的人来说可能看起来很弱,尽管这里的各种讨论表明它应该没问题。

在这种情况下,我从类似的解决方案中研究了 API,这些解决方案为他们的用户提供了用户 ID 和 API 密钥。问题是我根本看不出这有多强。我假设密钥仍然与密码一样保存,从我的角度来看,它看起来就像他们将密码称为密钥。

例子:

https://github.com/Arie/serveme/blob/master/spec/fixtures/vcr/HiperzServer/_restart/visits_the_Hiperz_restart_URL.yml

&api_key=hiperz_api_key&gs_id=3873 参数如何提供比用户名密码更进一步的安全性?我肯定想实现比用户/通过基本 HTTP 身份验证更强大的东西,并为最终用户提供某种类型的令牌/密钥以用于访问,但我看不到这些方法的额外优势。

【问题讨论】:

  • 为什么不使用摘要式身份验证?
  • 我在所有阅读中都没有遇到过这个问题。一切似乎都暗示了真正的身份验证安全性的哈希、密钥、秘密等,我的头脑在旋转。摘要比http basic auth更合适吗?
  • 如果您想在请求开始时而不是在 SSL 连接建立后进行身份验证,那么是的,您需要摘要。
  • @Anthony,我不认为摘要式身份验证是一个很好的选择。它基于过时的哈希算法 (MD5),仍然需要客户端知道用户名和密码。

标签: php authentication basic-authentication http-authentication api-key


【解决方案1】:

嗯,总有两步验证可以完成(通过向他们的手机发送消息.. 或者给每个用户一个随机生成的代码来填写)。此外,您可以创建自己的加密机制并将其添加到网页的功能中。例如,您可以使用自己制作的加密密钥对数据进行加密,然后当它到达您想要的位置时,您只知道密钥,因此您可以对其进行解密。

【讨论】:

  • 虽然我当然很欣赏两步验证,但我正在尝试创建一个对用户来说并不过分复杂的系统。从类似的解决方案中复制它是最佳的,但是它们使用 API 密钥,我看不出这与仅使用密码有什么不同。
【解决方案2】:

Basic authentication 不建议保护 API,正如我在 my answer here 中试图解释的那样。

您是正确的,使用客户端 ID 和客户端密码与用户名和密码身份验证非常相似。不同之处在于,在后一种情况下,您对用户(个人)进行身份验证,而在前一种情况下,您对客户端(应用程序)进行身份验证。

您是否要使用客户端 ID 和机密来保护您的 API 取决于您是否可以信任客户端将其保密。

无论您是否拥有受信任的客户端,例如 Web 应用程序(位于安全服务器上)或不受信任的客户端,例如 JavaScript 应用程序或移动应用程序(位于用户领域),基于令牌的身份验证方案(例如 @ 987654323@) 提供了一种比基本身份验证更安全的方式来保护您的 API。有关使用 OAuth 2.0 获取令牌的不同方式的更多信息,请参阅 my answer here

【讨论】:

  • 非常感谢您的回答,这确实清楚了很多。密码与密钥的区别是我的主要困惑,你解释它的方式更有意义。
【解决方案3】:

我现在也在学习 API。我的理解是,通过使用 API 密钥,您可以更好地控制用户拥有的权限。此外,API 密钥也可以随时重新调用。它还将节省客户在每次使用 API 时输入登录详细信息的时间。我不确定这是否回答了你的问题。

【讨论】:

  • 问题是我仍然没有真正看到密钥和密码的区别。从各个方面来看,除非我遗漏了什么,否则它们实际上仍然是一样的。
  • 这是我的解释,如果我错了,请纠正我。如果您使用您的登录用户名和密码来访问 API,并且如果有人破解了请求,那么他们可以获得您的完整登录详细信息和对您帐户的完全访问权限。如果黑客确实侵入了对 API 的请求,则通过使用 API 密钥,他们将只有一个范围有限且可以轻松重新调用的 API 密钥。可以创建 API 密钥来限制用户在 API 中的访问权限。
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 2011-10-09
  • 1970-01-01
  • 2021-03-21
  • 2011-11-12
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多