OAuth 协议

OAuth:一个关于授权(authorization)的开放网络标准,目前版本是2.0版。

OAuth 协议 1.0 授权步骤

  1. 应用向服务提供方申请请求令牌(Request Token),服务提供方验证通过后将令牌返回。这个步骤由于涉及到应用账号密码,在应用服务端发起,所以这个步骤对用户透明。
  2. 应用使用请求令牌让浏览器重定向到服务提供方进行登录验证和授权。服务提供方校验请求令牌,将第三方的资料显示给用户,提示用户选择同一或拒绝此次授权。如果用户同意授权,发放已授权令牌并将用户引导到当前应用的注册地址。这个步骤从重定向开始到引导会注册地址之前,应用方并不参与用户身份的校验和授权过程,确保第三方不可获得用户的真实账号和密码。
  3. 用已授权令牌向服务提供方换取 ATOK。第三方应用需在服务端发起请求,用账号密码和上一步的令牌换取 ATOK,这个步骤对用户而言也是透明的。如果前两步分别是让服务提供方认证应用和用户,那这步就是用户和服务提供方再次认证第三方应用。因为用户浏览器将第二步的结果重定向到第三步,除非用户 DNS 被劫持,否则就能确保重定向到的是合法的地址。
  4. 用 ATOK 作为令牌访问受保护资源。很多时候,权限是有很多种类别的。ATOK 包含了某个用户对某个应用的授权凭据,准确的说,ATOK 对用户授权时所赋予的一系列权限的集合。所以在这一步,除了校验 ATOK 的合法性之外,服务提供方还需对该 ATOK 是否拥有足够的权限执行被保护进行判断。

OAuth 协议 2.0

概念名词:

  • Third-party application:第三方应用程序(Client)
  • HTTP Service:HTTP 服务提供商
  • Resouce Owner:资源所有者-用户(User)
  • User Agent:用户代理-浏览器
  • Authrization server:认证服务器,即服务提供商专门用来处理认证的服务器
  • Resource Server:资源服务器,及服务提供商存放用户生成的资源服务器。他与认证服务器可以是同一台服务器,也可以是不同服务器。

OAuth2.0运行流程

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

客户端获取授权的五种模式:

  1. 授权码模式
  2. 简化模式
  3. 密码模式
  4. 客户端模式
  5. 扩展模式

授权码模式:

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

简化模式:

  1. 客户端将用户导向认证服务器
  2. 用户决定是否给予客户端授权
  3. 若用户授权,认证服务器将用户导向客户端指定的“重定向 URI”,并在 URI 的 Hash 部分包含访问令牌
  4. 浏览器向资源服务器发出请求,其中包括不止一个上一步收到的 Hash 值。
  5. 资源服务器返回一个网页,其中包含的代码可以获取 Hash 值中的令牌
  6. 浏览器执行上一步获得的脚本,并提取出令牌。
  7. 浏览器将令牌发给客户端你。

密码模式:

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

客户端模式:

  1. 服务端向认证服务器进行身份认证,并要求一个访问令牌。
  2. 认证服务器确认无误之后,向客户端提供访问令牌。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值