OAuth 2.0

OAuth2.0是什么?

  1. OAuth是一个关于授权的开放网络标准,在全世界等到广泛应用。

OAuth思路

OAuth在”客户端”与”f服务提供商”之间,设置了一层授权层。客户端无法直接登录”服务提供商”,只能登录授权曾,以此区分客户端核用户。”客户端”登录授权层所用的令牌,与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围核有效期。客户端登录授权层以后,服务层根据令牌的权限范围向用户开放用户存储的资料。

运行流程

OAuth2实现原理 - 图1

  1. 用户打开客户端,客户端要求用户给予授权。
  2. 用户统一给予客户端授权。
  3. 客户端使用上一步获得的授权,向服务器申请令牌。
  4. 认证服务器对客户端进行认证以后,确认无误,同意发放令牌
  5. 客户端使用令牌,向资源服务器申请获取资源
  6. 资源服务器确认令牌无误,同意向客户端开放资源。

客户端的授权模式

客户端必须得到用户授权,才能获得令牌。OAuth2.0定义了四种授权方式。

  1. 授权码模式

授权码模式是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与服务提供商的认证服务器进行互动
OAuth2实现原理 - 图2

  • 用户访问客户端,客户端将用户导向认证服务器
  • 用户选择是否给予客户端授权。
  • 用户给予授权,认证服务器将用户导向客户端事先指定的”重定向URL “,同时附上一个授权码
  • 客户端收到授权码,附上早先重定向URL,向认证服务器社申请令牌。
  • 认证服务器核对了授权码呵重定向URL,确认无误,向客户端发送访问令牌和更新令牌(refresh token)
  1. 简化模式
    OAuth2实现原理 - 图3

简化模式 不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过授权码的过程。

  • 客户端将用户导向认证服务器
  • 用户决定是否给予客户端授权
  • 假设用户给予授权,认证服务器将用户导向客户端指定的重定向URL,并在URL的hash部分包含了访问令牌。
  • 浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值
  • 资源服务器返回一个网页,其中包含的代码可以获取Hash值中得令牌。
  • 浏览器执行上一步获得得脚本,提取出令牌
  • 浏览器将令牌发给客户端。
  1. 密码模式
    OAuth2实现原理 - 图4

密码模式中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向服务商索要授权。
OAuth2实现原理 - 图5

  1. 用户向客户端提供用户名和密码
  2. 客户端将用户名和密码发给认证服务器,向后者请求令牌
  3. 认证服务器确认无误后,向客户端提供访问令牌。
  1. 客户端模式。

客户端模式指客户端以自己的名义,向服务商进行认证.
OAuth2实现原理 - 图6

  1. 客户端向认证服务器进行身份认证,并要求一个访问令牌。
  2. 认证服务器确认无误后,向客户端提供访问令牌。