12

我应该将基本身份验证、摘要身份验证和 Oauth 中的哪一个用于我的 Web 应用程序,以让用户通过 Restful API 调用访问资源。

Oauth 不是替代基本身份验证和摘要身份验证的更好解决方案吗?

4

3 回答 3

21

在这里修饰许多细节,但是:

http basic:在 Authorize 标头中以明文形式发送用户名和密码

http 摘要:发送用户名和密码,其中密码已由服务器提供的随机数进行哈希处理

这两个版本的 oauth 最初旨在授予第 3 方访问不属于它的资源的权限(例如,我允许移动照片应用代表我发布到 facebook),而无需向第 3 方提供我的凭据。这两种协议的工作原理基本上如下:

  • 从手机照片应用程序,用户被引导到 facebook 的登录页面
  • 登录后,他们将被重定向回带有代码的移动照片应用程序。
  • 然后,移动照片应用程序会将此代码兑换为访问令牌
  • 然后,移动照片应用程序可以向 facebook 发出请求,将我的照片发布到我的墙上。

oauth1.0a:比 oath2 更安全,但更难实现也要求所有请求都需要签名。

oauth2:依靠 ssl 来保证安全,不需要请求签名。虽然它的主要作者已经放弃了该项目,因为他认为它不符合其最初的设计目标(安全性、互操作性),但它被 Facebook 和 Google 广泛使用。

以下是一些我在这里发现有用的文章:

还没有足够的魔力链接到 rfcs,但这些是权威的来源,如果有点难以消化的话。

于 2013-04-19T18:42:06.257 回答
3

Phil Sturgeon有一本不错的电子书(构建你不会讨厌的 API),其中有一整章专门介绍身份验证。它涵盖:

  • 基本的
  • 消化
  • OAuth 1.0a
  • 认证 2

如果您正在考虑在您的 RESTful API 中实现此类机制,我强烈建议您阅读它。

更新 为什么要投反对票?

于 2014-10-07T12:15:03.757 回答
2

我也在努力找出这个问题的答案。我会说这取决于您预期的应用程序的范围。oAUTH 限制了对必须构建客户端进行握手的开发人员的访问。

Basic 可以与 Sesame 等许多数据浏览器客户端一起使用,也可以与 Excel 2010 以及任何旧浏览器一起使用。唯一的问题是密码明文传输,可以通过在 https 上托管您的应用程序来缓解这种情况。

不幸的是,对消化不太了解。

我个人正在尝试测试每个的实现:http basic 和 oauth。

于 2010-11-12T03:02:59.553 回答