第三方登陆——OAuth2.0协议
2016-06-29 21:44
417 查看
OAuth协议百度解释为:为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。OAuth是Open Authorization的简写。
那么OAuth协议具体是指什么呢?例如,我想登陆咱们CSDN的网站,但是我没有账号也懒得去注册,那么我就可以通过下图1中的红色方框里面的那四种方式登陆到咱们网站。
图1
例如我选择通过QQ登陆,那么CSDN网站将使用带有特定参数的URL去请求QQ的登陆页面,之后将会弹出如下图2的弹框。图3就是带有特点参数的URL,从图3中我们可以看到登陆的域名是QQ的,并且采用的是oauth协议,并且输入的账号信息都是在QQ的QAuth页面进行的,那么咱们网站是无法得知咱们QQ的用户名和密码的。
图2
图3
下面我们分析一下这个URL:https://graph.qq.com/oauth/show?which=Login&display=pc&response_type=code&client_id=100270989&redirect_uri=https%3A%2F%2Fpassport.csdn.net%2Faccount%2Flogin%3Foauth_provider%3DQQProvider&state=test https://graph.qq.com:QQ登陆OAuth的服务器的URL,所有想通过QQ登陆的网站都是这个地址。
client_id:CSDN使用QQ登陆时的id,在QQ网站中每个网站对应一个client_id,第三方网站要想使用QQ登陆,必须向QQ互联提交申请材料,只有通过的网站才可以使用QQ登陆。
redirect_uri:回调地址,CSDN向QQ发送请求时,对比client_id是否一致,已确认是否可以登陆成功。
这个URL被称为Request Token URL: 获取未授权的Request Token服务地址。
以上是第三方登陆的请求过程,下面我们来看一下登陆结果。当登陆成功后QQ会跳转到CSDN给定的一个地址,并且URL上带有一个加密的参数,如下: https://passport.csdn.net/account/login?oauth_provider=QQProvider&code=0B22A9D31F1B917502631BE62BE380ED&state=test
QQ登陆授权之后出于安全性的考虑CSDN网站还将发送一个带有特定参数的URL去验证登录信息是否合法。发送的带有特定参数的URL如下:https://XXX.qq.com/oauth/...?...&client_id=100270989&client_secret=...&...&code=XXX
这个URL被称为User
Authorization URL: 获取用户授权的Request Token服务地址。
以上就是小编对OAuth协议的理解,如有错误或者遗漏,欢迎大家的指正和分享!
相关文章推荐
- PHP版QQ互联OAuth示例代码分享
- OAuth 2.0授权协议详解
- 在Nginx中增加对OAuth协议的支持的教程
- django接入新浪微博OAuth的方法
- 开放平台-web实现QQ第三方登录
- 自定义网页QQ登录按钮
- 微信OAuth授权获取用户OpenId-JAVA(个人经验)
- 腾讯微博Android客户端开发——OAuth认证介绍
- spring security oauth2
- 新浪OAuth同步方案(测试成功)
- oauth2.0初体验
- Android 关于新浪微博的OAuth2.0授权
- 在对OAUTH2理解基础上的一个小故事
- this is a weibo for test
- Google API 1: Google日历api操作 (PHP)
- Google API 1: Google日历api操作 (PHP)
- 新浪微博Oauth授权及API的使用
- 理解OAuth 2.0