OAuth2.0协议
简介
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协议的更多相关文章
- 第三方登录,一般都是遵循OAuth2.0协议。
1. QQ登录OAuth2.0协议开发流程 1.1 开发流程 申请接入,获取appid和appkey; 开发应用,设置协作者账号,上线之前只有协作者才能进行第三方登录 放置QQ登录按钮(这个自己可以用 ...
- 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)
背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...
- 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结
目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...
- Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露
2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...
- 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议
概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...
- 《OAuth2.0协议安全形式化分析-》----论文摘抄整理
---恢复内容开始--- 本篇论文发表在计算机工程与设计,感觉写的还是很有水准的.实验部分交代的比较清楚 本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2 ...
- Spring Security 实战干货: 简单的认识 OAuth2.0 协议
1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...
- Oauth2.0 协议简介及 php实例代码
转自:http://www.dahouduan.com/2017/11/21/oauth2-php/ https://blog.csdn.net/halsonhe/article/details/81 ...
- 对OAuth2.0协议的理解和测试demo
1. 什么是OAuth OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. OAuth ...
- 理解OAuth2.0协议和授权机制
无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...
随机推荐
- codeigniter 对数据库的常用操作
codeigniter (CI)是一个优秀.敏捷的PHP开源框架,尤其封装了对数据库的操作,很方便,以下是php ci常用的数据库操作,作个记录: /* ======================= ...
- Sublime Text : 创建工程
Sublime Text 可以很方便地管理多个工程.使用Sublime Text的Projects,可以将不同根目录的文件组织起来成为一个工程,而不用将所有的文件都放到一个根目录下面. 1. 创建工程 ...
- linux tricks 之 BUILD_BUG_ON_ZERO.
------------------------------------------- 本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net -- ...
- linux tricks 之数据对齐。
转载:http://blog.chinaunix.net/uid-20608849-id-3027953.html 内核为了保持最大的兼容性和代码灵活性,不可能直接对某个数据类型定义它的大小范围. ...
- Note from head first
1 Slow down. The more you understand, the less you have to memorize. 2 Do the exercises. Write your ...
- jsp放在web-inf下的注意事项
转自:http://dejazhan.iteye.com/blog/1708785 web-inf目录是不对外开放的,外部没办法直接访问到(即不能通过URL访问).所有只能通过映射来访问,比如映射为一 ...
- BZOJ 1821 JSOI2010 部落划分 Group prim
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- Tomcat安装及配置
用来进行web开发的工具有很多,Tomcat是其中一个开源的且免费的java Web服务器,是Apache软件基金会的项目.电脑上安装配置Tomcat的方法和java有些相同,不过首先需要配置好jav ...
- Xamarin iOS编写第一个应用程序创建工程
Xamarin iOS编写第一个应用程序创建工程 在Xcode以及Xamarin安装好后,就可以在Xamarin Studio中编写程序了.本节将主要讲解在Xamarin Studio中如何进行工程的 ...
- WireShark数据包分析数据封装
WireShark数据包分析数据封装 数据封装(Data Encapsulation)是指将协议数据单元(PDU)封装在一组协议头和尾中的过程.在OSI七层参考模型中,每层主要负责与其它机器上的对等层 ...