笔记 oAuth的理解

oAuth是一种开放标准,用于用户授权,允许第三方应用访问用户在另一服务提供商处存储的信息,而无需分享凭据。本文深入解析oAuth的工作原理,包括其安全性、开放性和简易性,并介绍oAuth的四个主要授权模式及Refreshtoken的概念。

什么是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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值