`
天梯梦
  • 浏览: 13629917 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

OAuth2.0认证和授权原理

 
阅读更多

什么是OAuth授权?

 
一、什么是OAuth协议
OAuth(开放授权)是一个开放标准。
允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息。
而这种授权无需将用户提供用户名和密码提供给该第三方网站。
OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源。
 
二、OAuth的原理和授权流程
OAuth的认证和授权的过程中涉及的三方包括:
服务商:用户使用服务的提供方,一般用来存消息、储照片、视频、联系人、文件等(比如Twitter、Sina微波等)。
用  户:服务商的用户
第三方:通常是网站,该网站想要访问用户存储在服务商那里的信息。
比如某个提供照片打印服务的网站,用户想在那里打印自己存在服务商那里的网络相册。
在认证过程之前,第三方需要先向服务商申请第三方服务的唯一标识。
OAuth认证和授权的过程如下:
1、用户访问第三方网站网站,想对用户存放在服务商的某些资源进行操作。
2、第三方网站向服务商请求一个临时令牌。
3、服务商验证第三方网站的身份后,授予一个临时令牌。
4、第三方网站获得临时令牌后,将用户导向至服务商的授权页面请求用户授权,然后这个过程中将临时令牌和第三方网站的返回地址发送给服务商。
5、用户在服务商的授权页面上输入自己的用户名和密码,授权第三方网站访问所相应的资源。
6、授权成功后,服务商将用户导向第三方网站的返回地址。
7、第三方网站根据临时令牌从服务商那里获取访问令牌。
8、服务商根据令牌和用户的授权情况授予第三方网站访问令牌。
9、第三方网站使用获取到的访问令牌访问存放在服务商的对应的用户资源。
 
三、目前支持OAuth的网站有哪些?
t.sina.com.cn
t.qq.com
t.sohu.com
t.163.com
www.douban.com
www.twitter.com
www.facebook.com
Google Buzz
 

文件来源于:http://www.6zou.net/tech/what_is_oauth.html

 

 


所谓OAuth(即Open Authorization,开放授权),它是为用户资源授权提供了一种安全简单的标准,也就是说用户在访问第三方web或应用的时候,第三方不会知道用户的信息(登录密码等),现在基本都支持OAuth2.0版本了。

首先来看看我们在第三方使用oauth流程如下:

第一步:用户登录第三方网站,使用qq登录。

第二步:点击登录后,会跳到qq平台提示输入用户名和密码。

第三步:如果用户名和密码正确,会提示是否接受授权,如果授权成功,第三方网站就能访问你的资源了,qq头像、用户名等


认证和授权过程(包括三方)


  1、服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。

  2、用户,存放在服务提供方的受保护的资源的拥有者。

  3、客户端,要访问服务提供方资源的第三方应用,通常是网站。在认证过程之前,客户端要向服务提供者申请客户端标识。




       用户访问客户端的网站,想操作用户存放在服务提供方的资源。

  客户端向服务提供方请求一个临时令牌。

  服务提供方验证客户端的身份后,授予一个临时令牌。

  客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。

  用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。

  授权成功后,服务提供方引导用户返回客户端的网页,并返回已授权的临时凭证。

  客户端根据已授权的临时令牌从服务提供方那里获取访问令牌。

  服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。

  客户端使用获取的访问令牌访问该用户存放在服务提供方上的受保护的资源。(客户端只能访问给予它授权的用户的资源信息)

 

来源: http://www.phpddt.com/%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91/oauth-2.html

 

 

http://player.youku.com/player.php/sid/XMzI4NzA1MDA0/v.swf

 

分享到:
评论
8 楼 herman_liu76 2017-08-29  
同样有点困惑,试着猜一下原因:
【已授权的临时凭证】,一般是URL中可见的一个token,这个可以给用户看到。客户端当然也知道的。
但【客户端根据已授权的临时令牌】是客户端自己的身份认证,这是是不能给用户看到的。

“服务提供方引导用户返回客户端的网页,并返回已授权的临时凭证。”为什么不直接返回最终的令牌呢?

1.这个最终令牌是给客户端的,没必要给用户看到。那这步直接给最终令牌有什么问题呢?
2.服务端这时既有客户端的临时令牌,又有授权信息,是有能力可以直接返回最终令牌的,而且服务器已经有了最终令牌但不返回。
3.最终的令牌不想给用户看?用户看到最终令牌后,如果给其它客户端用的话,不要鉴定客户端是谁?
4.客户端的临时令牌可能有效时间比较长,有效时间内,再为其它用户服务时,没必要再去获取,直接转授权页?
5.用户再选择其它客户端时,如果授权是一样的,服务器返回同样的授权码?当然客户端不同,最终令牌不同?
6.最终令牌由授权码与客户端身份的临时令牌组成的。分开提供考虑上面的共用情况节省开销?

7 楼 aiq缘诀录 2016-06-14  
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]                                                  [/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
6 楼 郭金龙 2016-04-11  
请问。如果第三方用户是我的高度信任用户。是否可以做成,只要我能验证他给我信息,调用我我就直接给他返回用户token。
5 楼 hzl091 2016-03-24  
iwlk 写道
我没太想明白~ 为何要先返回“已授权的临时凭证” 再获取“令牌凭证”~

直接返回“令牌凭证”不就行了吗? 

总感觉“已授权的临时凭证”是多余的呀~


临时凭证是服务提供商对第三方网站进行身份认证通过之后发放的票据,只有身份认证成功获取票据之后才能往下走,所以这一步并非多余。当然这一步还只是对第三方网站验明正身,要访问用户的资源还需要用户对第三方网站进行授权,所以才有了 “第三方网站根据临时令牌从服务商那里获取访问令牌”这一步。
4 楼 iwlk 2016-02-15  
我没太想明白~ 为何要先返回“已授权的临时凭证” 再获取“令牌凭证”~

直接返回“令牌凭证”不就行了吗? 

总感觉“已授权的临时凭证”是多余的呀~
3 楼 hnlixf 2015-11-17  
2 楼 天梯梦 2015-08-23  
zjggle 写道
图片还加密 ,你还是中国人么,连个马赛克都不如


我这个是转帖,原帖图片已经不存了,我从新更新了,谢谢提醒!
1 楼 zjggle 2014-11-23  
图片还加密 ,你还是中国人么,连个马赛克都不如

相关推荐

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 ...OAuth2.0认证的四种模式?它们的大体流程是什么? Spring cloud Security OAuth2包括哪些组件?职责? 分布式系统认证需要解决的问题? 掌握学习方法,掌握思考方式。

    spring security + oauth 2.0 实现单点登录、认证授权

    spring security + oauth 2.0 实现单点登录、认证授权,直接贴代码

    oauth认证授权原理

    oauth2.0协议的认证原理,适合初学者使用

    OAuth 2.0 (Getting started with OAuth2.0)

    学习OAuth 2.0最系统的介绍,从入门到掌握授权、认证的原理,开发必备。

    oauth2-wechat-develop:以接入微信开放平台为例讲解oauth2原理

    从上面可以看出,Oauth2.0的运行原理就是:第三方应用请求某个服务应用的用户给予授权,用户统一授权后,第三方应用就可以和服务应用进行后续的获取资源的令牌申请。整个流程的关键点就是用户是否同意授权。 Oauth...

    基于OAuth2.O的资源共享机制RSBO (2012年)

    本文针这些问题,提出了一种基于OAuth2.0协议的资源共享机制RSBO(Resource Sharing based OAuth2.0)并对其进行阐述,RSBO利用OAuth2.0协议认证授权的访问令牌原理,为共享资源创建资源令牌,该机制解决了用户信息泄露及...

    新浪微博的Node封装nodeweibo.zip

    (3)搞清楚微博的认证机制即oauth2.0认证原理。 (4)第3点很重要,确保你理解这种开发方式。 ------------------------------------------------- */ var Weibo = require('nodeweibo'); var setting = ...

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     6.3 OAuth2.0网页授权 134  6.3.1 配置网页授权回调域名 135  6.3.2 网页授权流程 135  6.3.3 方法封装 139  6.3.4 案例:通过网页授权获取用户信息 145  6.4 生成带参数二维码 149  6.4.1 创建临时...

    JAVA上百实例源码以及开源项目源代码

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    JAVA上百实例源码以及开源项目

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

Global site tag (gtag.js) - Google Analytics