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的学习与总结。

目录
相关文章
|
20天前
|
存储 安全 定位技术
OAuth:理解与应用
【8月更文挑战第22天】
31 0
|
存储 NoSQL 数据库
Oauth2协议中如何对accessToken进行校验
Oauth2协议中如何对accessToken进行校验
279 0
|
10月前
|
存储 安全 Java
接入OAuth2
接入OAuth2
82 0
|
12月前
|
存储 安全 数据安全/隐私保护
OAuth2.0与OAuth1.0你了解了吗?
OAuth2.0与OAuth1.0你了解了吗?
|
存储 JSON 缓存
九.SpringCloud+Security+Oauth2实现微服务授权 - Oauth2&JWT的认识
SpringCloud+Security+Oauth2实现微服务授权 - Oauth2&JWT的认识
|
JSON 安全 前端开发
什么是 OAuth?
什么是 OAuth? 从高层次开始,OAuth 不是API或服务:它是授权的开放标准,任何人都可以实施它。 更具体地说,OAuth 是应用程序可以用来为客户端应用程序提供“安全委托访问”的标准。OAuth 通过 HTTPS 工作,并使用访问令牌而不是凭据对设备、API、服务器和应用程序进行授权。 OAuth 有两个版本:OAuth 1.0a和OAuth 2.0。这些规范彼此完全不同,不能一起使用:它们之间没有向后兼容性。 哪一个更受欢迎?好问题!如今,OAuth 2.0 是使用最广泛的 OAuth 形式。所以从现在开始,每当我说“OAuth”时,我都是在谈论 OAuth 2.0——因为它很可能
175 0
什么是 OAuth?
|
XML 安全 JavaScript
单点登录必知的两个著名协议:SAML、OAuth2
单点登录必知的两个著名协议:SAML、OAuth2
|
消息中间件 安全 JavaScript
SpringCloud Gateway + Jwt + Oauth2 实现网关的鉴权操作
SpringCloud Gateway + Jwt + Oauth2 实现网关的鉴权操作
SpringCloud Gateway + Jwt + Oauth2 实现网关的鉴权操作
|
XML 安全 C++
认证与授权——单点登录协议盘点:OpenID vs OAuth2 vs SAML
无论是Web端还是移动端,现在第三方应用账户登录已经成为了标配,任意打开个网站都可以看到,QQ/微信账号登录的字样。使用第三方账户的登录的过程,既要限制用户身份只让有效注册用户才能登录,还要根据注册用户的不同身份来控制能浏览的内容,这就需要认证和授权 相关文章链接: OAuth2.
2198 0
|
XML JSON 安全
SAML和OAuth2这两种SSO协议的区别
SAML和OAuth2这两种SSO协议的区别
SAML和OAuth2这两种SSO协议的区别