神的尾巴

全栈工程师、独立开发者

0%

简述OAuth2

简述OAuth2

OAuth2的主要思路是:在”客户端”与”服务提供商”之间,设置了一个授权层(authorization layer)。”客户端”不能直接登录”服务提供商”,只能登录授权层,以此将用户与客户端区分开来。”客户端”登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。

“客户端”登录授权层以后,”服务提供商”根据令牌的权限范围和有效期,向”客户端”开放用户储存的资料。

主要包含以下4中授权模式:

  1. 授权码模式(authorization code)
  2. 简化模式(implicit)
  3. 密码模式(resource owner password credentials)
  4. 客户端模式(client credentials)

实例

假设服务提供商为Github(授权码模式),客户端为站点A。

OAuth2 App申请过程

在Github注册对应OAuth2 App,填写站点url,回调url,申请成功后返回app的clientId, clientKey。

OAuth2 App授权过程

  1. 站点A需要用户Github的授权,获取用户信息。
  2. 用户点击按钮(类似于登录,授权…),跳转到授权页面:https://github.com/login/oauth/authorize?client_id=[你的clientId]&redirect_uri=[你的回调地址]
  3. 用户授权后,跳转到设置的回调地址带上code参数。
  4. 站点A通过code + clientId + clientSecret,换取对应的access_token和refresh_access_token。
  5. 通过获取到的access_token可以获取用户的Github信息,如果access_token过期,可以通过refresh_access_token换取新的access_token,防止频繁授权。

参考文章

  1. 理解OAuth 2.0
觉得对你有帮助的话,请我喝杯咖啡吧~.