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

目录
相关文章
|
存储 NoSQL 数据库
Oauth2协议中如何对accessToken进行校验
Oauth2协议中如何对accessToken进行校验
316 0
|
6月前
|
安全 Java API
深度解析 Spring Security:身份验证、授权、OAuth2 和 JWT 身份验证的完整指南
Spring Security 是一个用于保护基于 Java 的应用程序的框架。它是一个功能强大且高度可定制的身份验证和访问控制框架,可以轻松地集成到各种应用程序中,包括 Web 应用程序和 RESTful Web 服务。 Spring Security 提供了全面的安全解决方案,用于身份验证和授权,并且可以用于在 Web 和方法级别上保护应用程序。
787 0
|
存储 安全 Java
接入OAuth2
接入OAuth2
98 0
|
存储 安全 数据安全/隐私保护
OAuth2.0与OAuth1.0你了解了吗?
OAuth2.0与OAuth1.0你了解了吗?
|
存储 JSON 安全
JWT验证用户信息功能与OAuth2协议
JWT验证用户信息功能与OAuth2协议
111 0
|
存储 JSON 缓存
九.SpringCloud+Security+Oauth2实现微服务授权 - Oauth2&JWT的认识
SpringCloud+Security+Oauth2实现微服务授权 - Oauth2&JWT的认识
|
存储 安全 算法
十七.SpringCloud+Security+Oauth2实现微服务授权 -非对称加密生成JWT令牌
SpringCloud+Security+Oauth2实现微服务授权 -非对称加密生成JWT令牌
|
XML 安全 JavaScript
单点登录必知的两个著名协议:SAML、OAuth2
单点登录必知的两个著名协议:SAML、OAuth2
SpringCloud整合 Oauth2+Gateway+Jwt+Nacos 实现授权码模式的服务认证(一)
SpringCloud整合 Oauth2+Gateway+Jwt+Nacos 实现授权码模式的服务认证(一)
SpringCloud整合 Oauth2+Gateway+Jwt+Nacos 实现授权码模式的服务认证(一)