📜  解释 OAuth(开放授权)(1)

📅  最后修改于: 2023-12-03 15:27:56.557000             🧑  作者: Mango

OAuth(开放授权)

OAuth(开放授权)是一种委托授权(Delegation Authorization)的协议,允许用户授权第三方应用访问其在另外一个应用的信息,而不需要将用户名和密码传递给第三方应用。这使得用户在不泄露凭证的情况下可以利用他们在不同网站之间的身份验证。

OAuth的3个角色

OAuth中有三个角色:

  1. 资源所有者(User):拥有受保护的资源,能够授权第三方应用访问具体的资源。
  2. 客户端(Client):第三方应用,需要访问用户的受保护的资源。
  3. 服务提供者(Server):持有用户受保护资源,是资源访问的最终提供者。
工作流程

OAuth的工作流程如下:

  1. 第三方应用向用户请求授权,用户同意。
  2. 第三方应用接收到授权后,向认证服务器发送请求授权的凭据和回调地址。
  3. 认证服务器将用户重定向到回调地址,同时附带授权码。
  4. 第三方应用向认证服务器请求访问令牌(access token)。
  5. 认证服务器向第三方应用发放访问令牌。
  6. 第三方应用向API请求访问,通过访问令牌到API请求数据。
  7. API验证访问令牌,如果有效返回数据。
OAuth2.0

OAuth2.0是OAuth的升级版本。OAuth2.0仍然工作在三个角色之间,但标准流程中使用了访问令牌(access token)代替授权码(authorization code),同时提供许多其他授权类型。例如:

  • 授权码模式(authorization code grant)
  • 隐式授权模式(implicit grant)
  • 密码授权模式(password grant)
  • 客户端凭证授权模式(client credentials grant)
笔者总结

OAuth和OAuth2.0都是授权委托协议,使得用户可以在不泄露凭证的情况下,授权第三方应用访问他们在其他应用中的信息。我们在开发中可以使用OAuth和OAuth2.0来进行用户授权,获取用户数据,并对其进行一系列操作。但是,应用在使用OAuth2.0时需要注意,例如:授权类型、回调地址等,以保证安全性和有效性。

参考资料: