OAuth
什么是OAuth?
OAuth是一种用于交换授权信息的协议,可让多个在线服务在获得用户许可的情况下进行交互。“OAuth 1.0”于2010年4月以RFC 5849发布,随后“OAuth 2.0”于2012年10月以RFC 6749发布。
假设您想在 Instagram 上发布一张照片,并自动将其分享到 Twitter。手动访问这两项服务并发布相同内容可能很繁琐。为此,Instagram 提供了一项名为“跨平台发布”的功能,可通过调用 Twitter 等其他社交网络的 API,将您的 Instagram 帖子自动分享到这些平台。OAuth 为这一过程提供支持。
要在Twitter上发帖,通常需要使用用户ID和密码进行身份验证,这称为基本身份验证。然而,与其他服务共享这些敏感凭据存在风险。OAuth通过交换授权信息而非身份验证凭据来解决这一问题,并仅授予完成该任务所需的有限权限。
在OAuth术语中:
- 接收授权的服务(例如 Instagram)称为 OAuth 客户端。
- 授予授权的服务(例如 Twitter)称为 OAuth 服务器。
- 用户称为资源所有者。
要启动该流程,OAuth客户端必须先向OAuth服务器提供应用程序名称和域名等详细信息,以完成注册。如果OAuth服务器认为该客户端可信,则会为其分配客户端ID。
用户(资源所有者)授权后,OAuth客户端会将用户重定向到OAuth服务器。OAuth服务器对用户进行身份验证,并询问是否向OAuth客户端授予指定权限。用户批准后,服务器会将用户重定向回OAuth客户端,并授予访问令牌。该令牌可作为授权凭证,使OAuth客户端能够访问OAuth服务器的API。令牌在到期或被明确撤销前一直有效。

