简介

   OAuth(Open Authorization),协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名和密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户的授权,因此,OAuth是安全的。

   这些解释其实都是可以在网上搜索到的。为了解释的更加清楚,接下来博主结合实例绘图解释:

  

  整个OAuth授权过程中,三者都获得了自己的便利。

用户可以不用注册帐号,可以直接使用关联帐号就可登录新的网站使用资源,且不用担心帐号失窃,因为这个授权过程是安全的。

慕课网可以更加轻易的获取用户量。

腾讯将海量的数据开放给第三方网站,既是为其他小企业做的贡献,也增大了自身的知名度。

版本

  OAuth1.0发布于2007年末,存在严重安全漏洞。

  OAuth2.0发布于2010年初,解决上一版本的安全漏洞,现被各大网站公司一直使用。

应用场景

  1)QQ用户授权慕课网使用其QQ帐号相关信息。

  2)获取授权后,在符合权限规则的情况下访问各种API。

  3)淘宝帐号,可在支付宝,阿里云中使用。

总的来说,OAuth是某一独立系统,开放其用户资源给另一系统使用的协议。

实现过程(三个步骤)

  

步骤一:请求OAuth登录页面

  Request Token URL,未授权的令牌请求服务地址。

  慕课网请求QQ登录页面时使用的带有特定参数的URL。

  例如,

  https://graph.qq.com/oauth/...?...

  &client_id=100490398&...

  &redirect_uri=http://www.mukewang.com/...

  第一行为QQ登录OAuth页面的地址。

  第二行为一个唯一的站点ID,必须和预置服务器上的一致。

  第三行为一个回调地址,必须和预置服务器上的一致。

步骤二:用户使用QQ号登录并授权

  https://graph.qq.com/oauth/...?...

  &client_id=100490398&...

  &redirect_uri=http://www.mukewang.com/...

跳转到

  http://www.mukewang.com/user/qqcallback?code=xxxxx....

慕课网服务器使用

  $_GET['code'];

获取加密字符。

步骤三:返回登录结果

  User Authorization URL,用户授权的令牌请求服务地址

  为保证安全,确保code是合法服务器获得,没有被劫持,则需要合法接收服务器再发送一个请求(User Authorization URL)。

例如,用户QQ登录授权之后需要请求一个带有特定参数的URL。

  https://xxx.qq.com/oauth/...?...

  &client_id=100490398&...

  &client_secret=xxxxxx&...

  &code=xxxxx......

  code在短期内会过期且只可使用一次,通常是10秒左右。基于安全考虑。

关于AccessToken

  AccessToken,用户通过第三方应用访问OAuth接口的令牌,具有较长生命周期(10天半个月甚至更长)。如果AccessToken过期,可以重新登录授权,或在User Authorization URL中指定参数(刷新AccessToken的参数,各平台各有不同)"......&need_refresh_token=true&......"。

  获取AccessToken就可以访问授权帐号的资源,例如,通过慕课网把自己喜欢的课程分享到QQ空间。

AccessToken与RefreshToken

  RefreshToken也是有生命周期的,不过比AccessToken生命周期要长,各大平台不一样。

  

使用实例类比AccessToken

  

将返回的XML或JSON解析成我们想要的数据

  

  以上是对OAuth2.0的学习与总结。

OAuth2.0协议的更多相关文章

  1. 第三方登录,一般都是遵循OAuth2.0协议。

    1. QQ登录OAuth2.0协议开发流程 1.1 开发流程 申请接入,获取appid和appkey; 开发应用,设置协作者账号,上线之前只有协作者才能进行第三方登录 放置QQ登录按钮(这个自己可以用 ...

  2. 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)

    背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...

  3. 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结

    目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...

  4. Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露

    2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...

  5. 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议

    概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...

  6. 《OAuth2.0协议安全形式化分析-》----论文摘抄整理

    ---恢复内容开始--- 本篇论文发表在计算机工程与设计,感觉写的还是很有水准的.实验部分交代的比较清楚 本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2 ...

  7. Spring Security 实战干货: 简单的认识 OAuth2.0 协议

    1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...

  8. Oauth2.0 协议简介及 php实例代码

    转自:http://www.dahouduan.com/2017/11/21/oauth2-php/ https://blog.csdn.net/halsonhe/article/details/81 ...

  9. 对OAuth2.0协议的理解和测试demo

    1. 什么是OAuth OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. OAuth ...

  10. 理解OAuth2.0协议和授权机制

    无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...

随机推荐

  1. 一、HTML和CSS基础--网页布局--实践--固定层效果

    absolute和fixed的相同点: 第一,完全脱离标准文档流 第二,未设置偏移量时,都定位在父元素的左上角 absolute和fixed的不同点: 第一.当设置偏移量时,偏移参照基准不同 abso ...

  2. HTML基础2 表单和框架

    表单: <form id="" name="" method="post/get" action"负责处理的服务端" ...

  3. sybase ASE 12.5版本下载地址

    为便于广大爱好者方便 学习Sybase ASE数据库,我将windows平台下的(32位)Sybase ASE放到下面的位置: ASE 12.5: (8个包) http://download.csdn ...

  4. 12、uwp 开发的零碎总结

    1.在给位 “修正版本号”(Major.Minor.Build.Revision)不能修改. 后, 商店上传失败,描述信息为:Apps are not allowed to have a Versio ...

  5. python list append方法

    keyValueResult = {'a': 1, 'b': 2} sendData = [] def set_push_format(ip): data_format = { "endpo ...

  6. Windows计数器做性能监控(window server 2008服务器)

    使用Windows计数器 一.创建数据收集器集 二.创建数据收集器 三.使用数据收集器 1.修改数据收集器的属性 2.手动启用.手动停止数据收集器集 3.计划任务 4.在性能监视器中查看 一.性能监视 ...

  7. Unity资源Assetmport New Asset对话框

    Unity资源Assetmport New Asset对话框 1.2.2  资源 开发游戏一定会使用很多东西,如网格.纹理.电影.动画.声音.音乐.文本等等.这些文件都被Unity称为资源(Asset ...

  8. Oracle 使用小计(2)

    1.时间转换 1.1 字符串转时间 今天需要写SQL语句更新数据库的时间,按照SQL Server的习惯写成 UPDATE TABLE A ’ WHERE ORDER_ID = ‘A12345678’ ...

  9. pingpang ball

    #pragma strict var smooth=2.0; var tiltAngle=30.0; function Start () { } function Update () { transf ...

  10. Codeforces 176B (线性DP+字符串)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...