Api 通过 HTTP 身份验证的凭据,好主意吗?

Api credentials via HTTP Auth, good idea?

我正在为自己的服务开发网络 API。由于 API 将仅限于一组特殊用户,我需要验证凭据。

我看过很多支付网关的例子,比如 Stripe,他们使用一种简单的方法来验证用户:使用 https 网站,他们通过 http auth 发送他们的用户 'token',请求数据为 GET/POST 参数。此用户令牌为每个用户生成一个,并且可以随时重新生成。

这是允许访问我的 API 的安全方式吗?实施起来似乎很简单,但我看不出其中有什么缺陷,或者我可能遗漏了什么? 也许使用一些非对称加密更安全?

谢谢!

为了进行身份验证,您必须向 API 提供您的 API 和用户之间共享的内容。可能是:

  • 登录名和密码。这是个坏主意,因为撤销它们并不那么简单
  • 一个令牌。看看如何Google uses JWT,这是一个很好的实现。
  • 一个TLS client certificate。这依赖于您的应用程序 (TLS) 之前的层来授权特定客户端。由于 API 必须查询 PKI 才能识别客户端,因此实施起来更加复杂。

我会选择基于令牌的身份验证。它需要一些工作才能拥有一个功能控制台,客户端可以在其中获取他们的令牌,但它最终会更好地符合身份验证标准(并且足够灵活,如果有一天需要,可以使用客户端 oAuth)