【问题标题】:HTTP basic auth, digest auth and Oauth?HTTP基本认证,摘要认证和Oauth?
【发布时间】:2011-05-03 13:04:55
【问题描述】:

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

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

【问题讨论】:

标签: authentication oauth basic-authentication digest-authentication


【解决方案1】:

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

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

不幸的是,对摘要了解不多。

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

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

    这里有一些我觉得有用的文章:

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

    【讨论】:

    • 仅供参考,Oauth2.0 在其流程的某些部分使用 HTTP Basic 身份验证。
    • 嗯.. 我看不出使用 qop=auth-int (rfc2617, june 1999 和 OAuth 1 授权方案 (2010) 的 HTTP Digest Authentication 之间的真正区别...不确定OAuth 大惊小怪是:-)
    • 我可以添加到 HTTP Digest:nonce 值的目的是防止重复请求。每个请求都有不同的 nonce 值,因此每个请求虽然包含相同的用户名/密码,但具有唯一的哈希值。
    【解决方案3】:

    Phil Sturgeon 有一本不错的电子书 (Build APIs You Won't Hate),其中有一整章专门介绍身份验证。它涵盖:

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

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

    更新 为什么投反对票?

    【讨论】:

    • 因为你没有回答问题,只是链接了一本书。这个答案更适合作为评论。
    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多