全面了解 OAuth 协议-一起学习技术干货之OAuth 协议

OAuth是什么?都能适配哪些应用场景?今天笔者通过这篇文章,和大家一起全面聊聊OAuth协议。

一、OAuth定义

"An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications."

——OAuth 官网介绍

以上是OAuth官网的介绍,这里需要强调的是,OAuth 关注的是 Authorization(授权)的层面(即“What”),而不是 Authentication(认证)的层面(即“Who”)。

OAuth(Open Authentication)是一个开放的授权协议,用于在第三方应用程序之间共享用户资源,例如网站、移动应用和桌面软件。它定义了一种安全授权机制,使得用户可以向第三方应用程序授予有限的访问权限,而无需将其密码或其他凭证直接提供给第三方。OAuth协议涉及的主要角色有:用户、客户端和服务提供者。

二、OAuth协议的主要特点

  1. 安全性:OAuth的授权不会使第三方触及到用户的账号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。
  2. 开放性:任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth。此外,业界提供了OAuth的多种实现如PHP、JavaScript、Java、Ruby等各种语言开发包,大大节约了程序员的时间,因而OAuth是简易的。
  3. 简单性:不管是OAuth服务提供者还是应用开发者,都很容易理解与使用。

三、OAuth协议的工作流程

一般步骤如下:

  1. 用户访问客户端,客户端会将用户导向认证服务器。
  2. 用户选择是否给予客户端授权。
  3. 如果用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI",同时附上一个授权码。
  4. 客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台服务器上完成的,对用户不可见。
  5. 认证服务器核对授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。

使用OAuth协议时,需要将访问令牌(Access Token)保存在Consumer上,作为用户的身份访问服务提供商上被保护的资源。访问令牌包括访问另牌(Access Token)和访问另牌秘钥(Access Token Secret),这两个参数是在请求时需要的参数。

OAuth安全机制的实现依赖于OAuth使用的签名加密方法,常见的有HMAC-SHA1和RSA-SHA1等。此外,为了确保OAuth的安全性,应确保OAuth服务提供者和服务消费者之间通信的保密性和完整性。

全面了解 OAuth 协议-一起学习技术干货之OAuth 协议_第1张图片 

你可能感兴趣的:(学习)