什么是 OAuth

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

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

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

OAuth 授权令牌如何工作

假设爱丽丝想要访问公司的云文件存储应用程序。她已经登录了公司的 SSO,但是当天还没访问过文件存储应用程序。当她打开文件存储应用程序时,该应用程序没有直接允许她进入,而是向 SSO 请求爱丽丝的授权。

作为响应,SSO 将 OAuth 授权令牌发送到应用程序。令牌包含有关爱丽丝在应用程序中应具备的特权的信息。令牌还会有一个时间限制:过了一定时间后令牌会失效,届时爱丽丝必须再次登录她的 SSO。

OAuth 令牌通常使用HTTPS发送,这意味着它们已经过加密。它们在OSI 模型的第 7 层上发送。

OAuth 有什么用途

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

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

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

什么是 OAuth 2.0

OAuth 2.0 是 OAuth 的最新版本。OAuth 的首版于 2010 年发布。OAuth 2.0 于 2012 年发布,修复了 OAuth 1.0 中存在的若干漏洞。

SAML 与 OAuth:身份验证和授权有什么区别

授权和身份验证看似相似,但在访问管理中并不完全相同;两者之间的区别对于理解访问管理技术(包括 OAuth)的工作方式非常重要。身份验证与用户的身份有关,而授权则与用户的权限有关。

比如,鲍勃在一个设有门房的安全设施里工作。进入该设施的所有车辆在门房停车检查,只允许已知的员工进入。门房是进行用户身份验证的地方:保安对照员工名单检查鲍勃的身份证件,并对照准入车辆清单检查其车牌。如果通过了人和车的身份验证,他就能开车进入设施内,并将车辆停放在停车场。

但是,仅凭鲍勃能够开车进入设施,并不表示他可以随意停放车辆。相反,每种类型的员工都有指定的停车场。鲍勃的车只能停在他的指定停车场,不能停到首席执行官的停车位。

OAuth 是授权协议:确保鲍勃前往正确的停车场。另一方面,安全断言标记语言(SAML)是身份验证协议,或者说,让鲍勃通过门房的检查。

身份提供商 (IdP)或 SSO 服务可以相互结合使用,也可以单独使用 OAuth(尽管将 OAuth 用于身份验证被视为“伪身份验证”)。

总之,SAML 和 OAuth 是不同的协议,具有不同的目用途,但两者常常与 SSO 结合使用。