我想为我的 Web 应用程序提供经过身份验证的 API 访问。这种服务的消费者通常是其他网站/服务。
验证这些用户的最佳方法是什么? OAuth、openID、http 认证?
就像我们的工作一样,“哪个最好?”的答案是什么?是“视情况而定”。 :)
HTTP 身份验证 - 如果您已经让客户通过 ID 和密码登录到您的服务,您可能只需要做最少的工作就可以让它与您的 API 很好地配合使用。如果您的 API 基本上是单一用途的并且不需要详细的权限,那么您可以在此处快速运行某些东西。 API token - 如果您希望客户能够在不提供密码的情况下轻松进行身份验证(想想那些构建与您的 API 交互的服务的公司;也许 IT 部门不希望开发团队知道密码;等等),那么将随机 API token à la GitHub 附加到用户帐户可能是最快的方法。作为奖励,您可以提供一种无需更改帐户密码即可重新生成 API token 的方法。 OAuth - 如果您有多个权限或想要更精细地控制客户端访问您的 API 的方式和时间,OAuth 是一个不错的选择(OAuth2 更容易使用,IMO,并支持 multiple methods of obtaining an access token)。此外,许多语言都有库、gem 等,可以让它们简化 OAuth 工作流程。