HTTP基本身份验证,摘要身份验证和Oauth?

时间:2010-11-01 17:14:20

标签: authentication oauth basic-authentication digest-authentication

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

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

3 个答案:

答案 0 :(得分:20)

在此处对许多细节进行了说明,但是:

http basic:发送用户名&授权标题中的明确密码

http digest:发送用户名&密码,其中密码已由服务器提供的nonce

进行哈希处理

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

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

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

oauth2:依赖于ssl的安全性,不需要请求签名。虽然它的主要作者已经放弃了该项目,因为他觉得它不符合其最初的设计目标(安全性,互操作性),它被Facebook和谷歌广泛使用。

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

还没有足够的mojo链接到rfcs,但这些是确定的来源,如果稍微难以消化。

答案 1 :(得分:3)

Phil Sturgeon有一本不错的电子书(Build APIs You Won't Hate),其中有一章专门用于身份验证。它包括:

  • 基本
  • 摘要
  • OAuth 1.0a
  • OAuth 2

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

<强>更新 为什么选择downvote?

答案 2 :(得分:2)

我也试图解决这个问题。 我会说这取决于您的预期应用程序的范围。 oAUTH限制对必须构建客户端以进行握手的开发人员的访问。

Basic可以与许多数据浏览器客户端一起使用,例如Sesame,也可以使用Excel 2010以及任何旧版浏览器。唯一的问题是明确的密码,可以通过https托管您的应用程序来缓解。

不幸的是,对消化知之甚少。

我个人试图测试每个的实现:http basic和oauth。