什么是OAuth

什么是OAuth?

OAuth,全称为Open Authorization(开放授权),OAuth 始于 2006 年,其设计初衷正是委托授权,就是让最终用户也就是资源拥有者,将他们在受保护资源服务器上的部分权限(例如查询当天订单)委托给第三方应用,使得第三方应用能够代表最终用户执行操作(查询当天订单)。

OAuth(开放授权)是一种开放标准,用于允许用户在不暴露其凭据(如用户名和密码)的情况下,让第三方应用程序访问其资源(如用户的照片、视频、联系人列表等)。OAuth 主要用于授权,而不是身份验证。

OAuth 并非身份验证,这里的 Auth 是 Authorization,OAuth 是发生在用户做了身份验证后的事情,系统授权用户能做什么操作。互联网中所有的受保护资源,几乎都是以 Web API 的形式来提供访问的。不同的用户能做的事情不同,例如一个 GitHub 项目,有些用户只有读取和提交 PR(pull request)的权限,而管理员用户则能合并 PR。将用户权限在 API 层面细分,是 OAuth 要做的事情。

OAuth 不是一个API或者服务,而是一个验证授权(Authorization)的开放标准,所有人都有基于这个标准实现自己的OAuth。

更具体来说,OAuth是一个标准,app可以用来实现secure delegated access. OAuth基于HTTPS,以及APIs,Service应用使用access token来进行身份验证。

OAuth主要有OAuth 1.0a和OAuth 2.0两个版本,并且二者完全不同,且不兼容。OAuth2.0 是目前广泛使用的版本,我们多数谈论OAuth时,为OAuth2.0。

OAuth 是用于授权用户的技术标准,它有助于使 SSO 成为可能。它是一种协议,用于在不共享实际用户凭据(例如用户名和密码)的前提下将授权从一项服务传递到另一项服务。使用 OAuth 时,用户可以在一个平台上登录,获得授权后,也可在另一平台上执行操作和查看数据。

OAuth 实现将授权从一个应用程序传递到另一个应用程序,而且不论这两个应用程序具体是什么。OAuth 是用于将授权从单点登录 (SSO) 服务传递到另一个云应用程序的最常用方法之一,但也可在任何两个应用程序之间使用。其他协议也能执行这种功能,但 OAuth 是使用最广泛的协议之一。

打个比方,访客在房主不在家时前往其房屋,房主不向访客发送实际的房门钥匙,而是发送一个临时代码供访客打开里面有钥匙的带锁信箱。OAuth 的工作方式与之类似。在 OAuth 中,一个应用程序向另一个应用程序发送授权令牌来授予用户访问权限,而不是发送用户的凭据。

为什么要有OAuth?

在OAuth之前,HTTP Basic Authentication, 即用户输入用户名,密码的形式进行验证, 这种形式是不安全的。OAuth的出现就是为了解决访问资源的安全性以及灵活性。OAuth使得第三方应用对资源的访问更加安全。

OAuth 有什么用途?

OAuth 可以赋予用户授权,也可以让一个应用程序在一定程度上访问另一应用程序。用户经常遇到的一个用例是允许应用访问社交媒体平台或另一在线帐户。Google 用户帐户可与许多不同的消费者应用程序集成,如博客平台、新闻网站和各种网上游戏。在这种情况下,OAuth 协议在幕后发挥作用,使这些外部应用程序能够从 Google 访问必要的数据。

对企业而言,OAuth 的更常见用例是与身份和访问管理(IAM)系统相结合。用户可以通过 OAuth 获得使用应用程序的授权。例如,员工可以使用用户名和密码登录其公司的 SSO 系统。此 SSO 系统使他们能够访问完成工作所需的所有应用程序,SSO 系统将 OAuth 授权令牌传递给这些应用程序来实现此目的。

OAuth 是当今使用的几种授权协议之一。这些授权协议是必需的,因为需要通过某种方式在应用程序之间发送授权信息,而不暴露用户登录数据。一些平台已经开发了自己的授权方法:例如,Facebook 提供 Facebook Connect。