【问题标题】:What exactly is OAuth (Open Authorization)?OAuth(开放授权)到底是什么?
【发布时间】:2011-05-11 05:28:26
【问题描述】:

OAuth(开放授权)到底是什么?

我从

那里收集了一些信息

但我想学习和了解更多。我正在寻找有关生命周期的信息。为什么大多数社交网络都依赖这种开放协议?

随着各种技术(例如 ASP.NET)的出现,它会在不久的将来成为事实吗?

【问题讨论】:

标签: oauth


【解决方案1】:

简单地说,OAuth 是一种应用程序无需直接将您的用户登录信息获取到某些网站即可获取您的信息凭据的方式。例如,如果您在自己的网站上编写应用程序并希望它使用来自用户 facebook 帐户的数据,您可以使用 OAuth 通过回调 url 获取令牌,然后使用该令牌调用 facebook API 以获取他们的使用数据直到令牌过期。网站依赖它,因为它允许程序员访问他们的数据,而无需用户直接披露他们的信息并在网上传播他们的凭据,但仍然为数据提供一定程度的保护。它会成为事实上的授权方式吗?也许,它最近从 Twitter、Facebook 和其他程序员想要围绕用户数据构建应用程序的类似网站获得了很多支持。

【讨论】:

  • OAuth 不是一个身份验证过程,而是一个授权过程。
  • 我并不是暗示应用程序需要直接进行身份验证,而是用户通过服务提供商进行身份验证以授权某些第三方访问我认为的用户数据...
  • 我添加了精确度,因为 OpenID 专门针对委托身份验证(重新使用现有的外部帐户),希望人们停止共享他们的共享凭据。 OAuth 专门针对授权(重用资源),希望促进信息交流。
【解决方案2】:

OAuth(开放授权)到底是什么?

OAuth 允许通知 资源提供者(例如 Facebook)资源所有者(例如您)向第三方授予权限(例如 Facebook 应用程序)访问他们的信息(例如您的朋友列表)。

如果您清楚地阅读它,我会理解您的困惑。让我们举一个具体的例子:加入另一个社交网络!

假设您有一个现有的 Gmail 帐户。您决定加入领英。手动添加您的所有很多、很多朋友既烦人又容易出错。您可能会半途而废,或者在他们的邀请电子邮件地址中插入拼写错误。因此,您可能最终不想创建帐户。

面对这种情况,LinkedIn™ 有一个好主意,那就是编写一个程序来自动添加您的朋友列表,因为计算机在处理令人厌烦和容易出错的任务时效率和效率要高得多。由于现在加入网络如此简单,没有办法您会拒绝这样的提议,是吗?

如果没有用于交换此联系人列表的 API,您将不得不向 LinkedIn 提供您的 Gmail 帐户的用户名和密码,从而赋予他们太多权力

这就是 OAuth 的用武之地。如果您的 GMail 支持 OAuth 协议,那么 LinkedIn 可以要求您授权他们访问您的 Gmail 联系人列表。

OAuth 允许:

  1. 不同的访问级别:只读VS读写。这允许您授予对用户列表的访问权限或双向访问权限,以自动将您的新 LinkedIn 朋友同步到您的 Gmail 联系人。
  2. 访问粒度:您可以决定仅授予对您的联系信息(用户名、电子邮件、出生日期等)或对您的整个朋友列表、日历等的访问权限。
  3. 它允许您管理来自资源提供者的应用程序的访问。如果第三方应用程序不提供取消访问的机制,您将被他们访问您的信息所困。使用 OAuth,可以随时撤销访问权限。

它会在不久的将来成为事实上的(标准?)吗?

好吧,尽管 OAuth 是向前迈出的重要一步,但如果人们不正确使用它,它并不能解决问题。例如,如果资源提供者一次只为您的所有资源提供一个读写访问级别,并且不提供管理访问的机制,那么它就没有意义。换句话说,OAuth 是一个提供授权功能而不仅仅是身份验证的框架。

在实践中,它非常适合社交网络模型。对于那些想要允许第三方“插件”的社交网络来说,它特别受欢迎。这是一个本质上需要访问资源并且本质上不可靠的领域(即您对这些应用程序几乎没有或没有质量控制)。

我还没有在野外看到这么多其他用途。我的意思是,我不知道有哪家在线财务咨询公司会自动访问您的银行记录,尽管从技术上讲,它可以以这种方式使用。

【讨论】:

  • 你让它很容易理解。我可能已将第一行更改为类似的内容。 “OAuth 允许通知资源提供者(例如 Gmail)资源所有者(例如您是 gmail 用户)授予第三方(例如您的 LinkedIn 帐户)访问其信息(例如您的联系人列表)的权限。”您所写的内容(即提供商和第三方“都”都是 Facebook)令人困惑。尽管它有点引入了一个有趣的场景,那就是 Oauth 也可以在内部使用——在公司的不同项目之间。正确的?这就是你介绍复杂介绍的原因吗?
  • 据我了解,OAuth 的目的是在不共享凭据的情况下代表资源所有者向第三方应用程序授予限时授权。我很想知道我是否需要 OAuth 才能从移动应用程序(不涉及第三方)使用我的应用程序服务器上托管的 API?
  • 当一个信任方授权给我时,这不就意味着它也是一种认证机制吗?
【解决方案3】:

Oauth 无疑正在获得动力,并且在企业 API 中也越来越流行。 在应用程序和数据驱动的世界中,企业越来越多地将 API 暴露给外部世界,这与 Google、Facebook、Twitter 一致。 随着这种发展,形成了一个三向的身份验证三角形

1) API 提供商 - 任何通过 API 公开其资产的企业,例如 Amazon、Target 等 2) 开发人员 - 通过此 API 构建移动/其他应用程序的人 3) 最终用户 - 由亚马逊的注册/访客用户提供的服务的最终用户

现在这发展了一种与安全性相关的情况 - (我列出了其中的一些复杂性) 1) 作为最终用户,您希望允许开发人员代表您访问 API。 2) API 提供者必须对开发者和最终用户进行身份验证 3) 最终用户应该能够授予和撤销他们已同意的权限 4) 开发者对 API 提供者的信任程度不同,授予她的权限级别也不同

Oauth 是一个授权框架,它试图以标准的方式解决上述问题。随着 API 和应用程序的突出,这个问题将变得越来越重要,任何试图解决它的标准——无论是 ouath 还是任何其他标准——都将成为 API 提供商/开发人员甚至最终用户需要关心的事情!

【讨论】:

    【解决方案4】:

    OAuth 是一种开放的授权标准,通常用作互联网用户使用其 Microsoft、Google、Facebook 或 Twitter 帐户登录第三方网站而不暴露其密码的一种方式。

    【讨论】:

    • 我认为你弄错了 OAuth 和 OpenID
    【解决方案5】:

    什么是 OAuth?

    OAuth 只是一种安全授权协议,它处理第三方应用程序在不暴露密码的情况下访问用户数据的授权。 (例如,在许多网站上使用 Facebook、gPlus、Twitter 登录)都在此协议下工作。

    相关各方

    当您了解相关方时,协议会变得更容易。基本上涉及三方:OAuth Provider、OAuth Client 和 Owner。

    • OAuth 客户端(想要访问您的凭据的应用程序)
    • OAuth 提供者(例如 Facebook、Twitter 等)
    • 所有者(拥有 Facebook、Twitter 等帐户的人)

    它是如何工作的

    我假设了一个网站(堆栈溢出)需要使用 Facebook 功能添加登录的场景。因此 Facebook 是 OAuth Provider,而 Stack Overflow 是 OAuth Client。

    1. 此步骤由应用的开发者完成。一开始,Facebook(OAuth Provider)对 Stack Overflow(OAuth Client)一无所知,因为它们之间没有联系。所以第一步是向 Facebook developers site 注册 Stack Overflow。这是手动完成的,开发人员需要将应用程序的信息提供给 Facebook,例如应用程序的名称、网站、徽标、redirectUrl(重要的一个)。然后 Stack Overflow 注册成功,从 Facebook 获取了客户端 ID、客户端密码等,并通过 OAuth 启动并运行。

    1. 现在当 Stack Overflow 的用户点击 Facebook 按钮登录时。 Stack Overflow 使用 ClientId 请求 Facebook(Facebook 使用它来识别客户端)和 redirectUrl(成功后 Facebook 将返回此 URL)。因此,用户被重定向到 Facebook 登录页面。这是最好的部分用户(所有者)没有将他们的 Facebook 凭据提供给 Stack Overflow。

    1. After Owner 允许 Stack Overflow 访问信息。然后 Facebook 使用第 2 步中提供的 redirectUrl 重定向回 Stack Overflow,以及 authcode
    2. 然后 Stack Overflow 与 Facebook 联系以及获得的 authcode 以确保一切正常。
    3. 只有这样 Facebook 才会将 访问令牌 提供给 Stack Overflow。然后 access token 被 Stack Overflow 用来在不使用密码的情况下检索所有者的信息。这就是 OAuth 的全部动机,其中实际凭据永远不会暴露给第三方应用程序。

    更多:

    Quick video

    Web Link

    【讨论】:

    • 确定 localhost 也是一个 url,你为什么不过期并在这里发布结果。
    • 是的,您可以使用 IP 地址作为重定向 URL:redirect_uri='127.0.0.1:4200' 并且 OAuth 域名应为 127.0.0.1
    • 但是 oAuth 客户端和 oAuth 提供者上的电子邮件是否应该相同才能正常工作?
    • 很好的解释
    • OAuth 2 是一种安全协议,而不是授权协议。答案从错误的音符开始。
    【解决方案6】:

    OAuth 发生在我们使用 Facebook/Google 注册 SO 帐户时 按钮。

    1. 应用程序 (SO) 将用户重定向到提供商的授权 URL。 (显示一个网页,询问用户是否希望授予应用程序读取和更新其数据的权限)。
    2. 用户同意授予应用程序进程。
    3. 服务提供商将用户重定向回应用程序 (SO),将授权代码作为参数传递。
    4. SO 交换访问授权的代码。

    来源:OAuth1 service providers

    【讨论】:

    • 您好,我需要使用 REST API,所以安装 oAuth,实际上我使用的是 Magento,在本地主机中,我已经安装了 oAuth,在实时服务器中我如何安装,我正在使用 GoDaddy VPS 服务器,任何帮助? @约翰乔
    • @Rathinam 嗨,我想帮忙,但这不是我的专业知识。很抱歉。
    • 我可以在没有 oAuth 的情况下使用 REST API 吗? @约翰乔
    • @Rathinam 是的,这取决于你
    【解决方案7】:

    OAuthOpen Authorization)是访问授权/委托协议的开放标准。它用作互联网用户授予网站或应用程序访问其在其他网站上的信息但不提供密码的一种方式。它不处理身份验证

    或者

    OAuth 2.0 是一种协议,允许用户在一个站点和另一个站点上授予对其资源的有限访问权限,而无需公开其凭据。

    • 类比 1: 今天的许多豪华车都配备了代客钥匙。这是您给停车服务员的特殊钥匙,与您的普通钥匙不同,它不会让汽车行驶超过一两英里。一些代客钥匙不会打开后备箱,而另一些会阻止访问您的车载手机通讯录。无论代客钥匙施加什么限制,这个想法都非常聪明。您可以使用特殊钥匙让某人有限地访问您的汽车,同时使用您的普通钥匙解锁所有东西。 src from auth0

    • 类比 2:假设,我们要填写银行账户申请表。在这里,Oauth 的作用是,银行可以使用 Adhaar 或护照填写表格,而不是由申请人填写表格。

      这里涉及到以下三个实体:

      1. 申请人即所有者
      2. 银行账户是 OAuth 客户端,他们需要信息
      3. Adhaar/Passport ID 是 OAuth Provider

    【讨论】:

      【解决方案8】:

      OAuth 就是委托授权(选择可以为您进行授权的人)。请注意,身份验证和授权是不同的东西。 OAuth是Authorization(访问控制),如果还想实现Authentication(身份验证),可以在OAuth之上使用OpenID协议。

      如今,Facebook、Google、Github 等所有大公司都使用这种身份验证/授权。例如,我刚刚使用我的 Google 帐户登录了这个网站,这意味着 Stackoverflow 不知道我的密码,它从 Google 那里获得了保存我的密码(显然是散列)的许可。这带来了很多好处,其中之一是;在不久的将来,您将不必在每个网站上创建多个帐户。一个网站(您最信任的网站)可用于登录所有其他网站。所以你只需要记住一个密码。

      【讨论】:

        【解决方案9】:

        OAuth 是资源所有者(facebook、google、tweeter、microsoft live 等)用来提供所需信息或向第三方系统(例如您的站点)提供写入成功的权限的协议.很可能没有 OAuth 协议,第三方系统应该可以使用凭据,这将是这些系统之间不适当的通信方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-28
          • 2014-11-08
          • 2014-11-25
          • 2011-11-23
          • 2013-03-23
          相关资源
          最近更新 更多