ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我已经收集了一些信息

身份验证

Twitter 教程:什么是 OAuth 以及它对您意味着什么

什么是 OAuth

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

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

rfc-editor.org/rfc/inline-errata/rfc5849.html 尝试 1.2。示例以及是否有助于更好地理解它。

u
user1767316

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

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

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

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

面对这种情况,LinkedIn™ 有一个好主意,那就是编写一个程序来自动添加您的朋友列表,因为计算机在处理令人厌烦和容易出错的任务时效率更高、效率更高。既然现在加入网络这么容易,你就不可能拒绝这样的提议,是吗?

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

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

OAuth 允许:

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

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

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

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

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


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

什么是 OAuth?

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

当事人

当您了解相关方时,协议会变得更容易。基本上,涉及三方:OAuth 提供者、OAuth 客户端和所有者。

OAuth 客户端(想要访问您的凭证的应用程序)

OAuth 提供者(例如 Facebook、Twitter 等)

所有者(拥有 Facebook、Twitter 等帐户的人)

这个怎么运作

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

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

https://i.stack.imgur.com/Vb3bY.png

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

https://i.stack.imgur.com/5Jev9.png

https://i.stack.imgur.com/8IVIJ.png

After Owner 允许 Stack Overflow 访问信息。然后 Facebook 使用第 2 步中提供的 redirectUrl 重定向回 Stack Overflow 以及 authcode。然后 Stack Overflow 与 Facebook 联系以及获得的 authcode 以确保一切正常。只有这样 Facebook 才会向 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 是一种安全协议,而不是授权协议。答案从错误的音符开始。
a
ameer

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


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

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

或者

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

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

类比 2:假设,我们要填写银行账户申请表。在这里,Oauth 的作用是,银行可以使用 Adhaar 或护照填写表格,而不是由申请人填写表格。这里涉及以下三个实体:申请人即所有者银行帐户是OAuth Client,他们需要信息Adhaar / Passport ID是OAuth Provider

申请人即所有者

银行账户是 OAuth 客户端,他们需要信息

Adhaar/护照 ID 是 OAuth 提供者


r
randomness

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 提供者/开发人员甚至最终用户需要关心的事情!


O
Ozkan

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

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


J
John Joe

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

应用程序 (SO) 将用户重定向到提供者的授权 URL。 (显示一个网页,询问用户是否希望授予应用程序访问权限以读取和更新他们的数据)。用户同意授予申请程序。服务提供者将用户重定向回应用程序 (SO),将授权代码作为参数传递。 SO 交换代码以获得访问授权。

来源:OAuth1 service providers


您好,我需要使用 REST API,所以安装 oAuth,实际上我使用的是 Magento,在本地主机中,我已经安装了 oAuth,在实时服务器中我该如何安装,我正在使用 GoDaddy VPS 服务器,有什么帮助吗? @约翰乔
@Rathinam 嗨,我想帮忙,但这不符合我的专业知识。非常抱歉。
我可以在没有 oAuth 的情况下使用 REST API 吗? @约翰乔
@Rathinam 是的,这取决于你
Y
Yuvraj Singh Shekhawat

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


我认为您弄错了 OAuth 和 OpenID
Р
Радослав Тодоров

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


R
Rafiq

授权:顾名思义,OAuth 只是一种授权标准。

用于登录第三方网站:使用 OAuth,您可以使用您的 Google、Facebook、Twitter 或 Microsoft 帐户登录第三方网站,而无需提供密码。

记住密码:使用 OAuth,您可以避免在 Internet 上使用的每个 Web 应用程序上创建帐户和记住密码。

访问令牌:OAuth 基于访问令牌概念。当一个人使用他的 Google 帐户对第三方 Web 应用程序进行身份验证时。 Google 授权服务器为该人正在使用的 Web 应用程序颁发访问令牌。因此,Web 应用程序可以使用该访问令牌来访问他在资源服务器中托管的数据。对于 Google,您的 Gmail 收件箱、联系人、照片等都是资源。因此,任何第三方应用程序都可以访问这些资源,例如使用 OAuth 查看他的 Gmail 收件箱。因此,OAuth 是一种发布和与受保护资源数据交互的简单方法。这也是人们让您访问他们的资源数据的一种更安全、更可靠的方式。

OAuth2 和 HTTPS:由于客户端凭据等机密数据,OAuth2 使用 HTTPS 在客户端和授权服务器之间进行通信。在两个应用程序之间传递。