笔记 oAuth的理解

什么是oAuth

oAuth(Open Authorization)的协议为用户授权提供了一个安全的,开放而又简易的标准。
oAuth协议和以往的授权方式相比,它不会使第三方触及到用户的账户信息,如登陆用户名和密码。
oAuth是安全的。

oAuth协议特点:

  1. 简单:不管是oAuth服务提供者还是应用开发者,都很易于理解与使用。
  2. 安全:第三方不会设计用户账户信息。
  3. 开放:任何服务提供商都可以使用oAuth,任何软件开发商都可以使用oAuth

一个例子更好理解oAuth的适用场景
现有一个是图片在线缓存功能由A服务提供商提供 还有一个是打印图片功能B服务提供商提供,当用户要使用B打印A上缓存的图片。
做法1:从A上下载图片,在上传到B上。
做法2:把用户在A上的用户名和密码给到B,B去用这个用户名和密码登陆A去下载图片。

这两个做法缺点:

  1. B服务提供商为了用户后续操作,会保存用户的登陆名和密码,这样很不安全。
  2. B服务拥有用户的登陆名和密码,就可以去A获取用户储存在A上的所有资料的权力,用户没法限制B服务提供商获得授权的范围和有效期。
  3. 用户只有修改密码,才能让B对A访问的失效。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。
  4. 假如B程序被破解,就会导致用户密码泄漏,以及所有被密码保护的数据泄漏。

oAuth的思路

OAuth在”B”与”A”之间,设置了一个授权层(authorization layer)。”B”不能直接登录”A”,只能登录授权层,以此将用户与B区分开来。”B”登录授权层所用的令牌(token),令牌与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
“B”登录授权层以后,”A”根据令牌的权限范围和有效期,向”B”开放用户储存的资料。(用户是怎么设置权限的)


oAuth三个url参数(重要)

  1. Request Token URL: 获取未授权的Request Token服务地址;
  2. User Authorization URL: 获取用户授权的Request Token服务地址;
  3. Access Token URL: 用授权的Request Token换取Access Token的服务地址;

oAuth认证授权就三个步骤,三句话可以概括:
1. 获取未授权的Request Token
2. 获取用户授权的Request Token
3. 用授权的Request Token换取Access Token
对比可发现其实就是三个重要的url参数

OAuth 2.0的运行流程如下图,摘自RFC 6749

这里写图片描述
A:第三方向用户发起请求申请权限。
B:用户同意,授予第三方权限。、
C:第三方拿着用户授予的权限向服务提供方申请Access Token 令牌。
D:服务提供方检查权限,下发Access Token令牌。
E:第三方拿着Access token去服务提供方调取用户信息。
F:服务提供方效验 Access Token 信息正确无误后,返回用户信息给第三方。

这里面重要的在第二环节第三方怎么拿到用户的授权。
这里面有四种授权方式

  1. 授权码模式(Authorization Code)(正统方式)(支持refresh token)
  2. 授权码简化模式(Implicit)(为web浏览器设计)(不支持refresh token)
  3. Pwd模式(Resource Owner Password Credentials) (基本不用)(支持refresh token)
  4. Client模式(Client Credentials) (为后台api调用设计)(不支持refresh token)

简单介绍一下Refresh token
由于Access Token 设置有效期,这个短期的有效期可以有效的避免Access Token泄露,但是在第三方那里就显得不那么方便,因为每次失效之后都要去用户那里进行请求,用户每过几天就要重新授权给第三方及其影响体验。那么就引入了Refresh token。

猜你喜欢

转载自blog.csdn.net/qq_36028557/article/details/82730842
今日推荐