OAuth 协议

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。
OAuth是一个开放的授权协议,它提供一个方法可以让用户(User)授权第三方应用(Client)来访问用户保存在服务器(Server)上的资源。(不需要获得用户名和密码)。
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。
OAUTH协议特点
简单:不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用;
安全:没有涉及到用户密钥等信息,更安全更灵活;
开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
OAUTH相关的三个URL:
  Request Token URL: 获取未授权的Request Token服务地址;
User Authorization URL: 获取用户授权的Request Token服务地址;Access Token URL: 用授权的Request Token换取Access Token的服务地址;

调查目标:实现QQ,新浪微薄,人人的账号进行身份验证。

调查结果:使用OAuth2.0实现。

说明:

1.  OAuth2.0支持更好。——人人只支持OAuth2.0;新浪微薄,QQ支持OAuth1.0和OAuth2.0;QQ微薄支持的是OAuth1.0a;网易微薄,搜狐微薄等支持OAuth1.0。

2.  OAuth2.0的好处在于实现起来更为简单(减少了访问Server的次数),安全性更高。每次得到的Access Token是变化的。

3.  OAuth1.0存在安全隐患,但其得到的Access Token是不变的,更利于身份验证。

 

协议简介:                                         

OAuth是一个开放的授权协议,它提供一个方法可以让用户(User)授权第三方应用(Client)来访问用户保存在服务器(Server)上的资源。(不需要获得用户名和密码)。

具体步骤:                                          

1.  向Server申请App key和AppSecret,填写相关的资料(重点是设置redirect URL)

说明:

由于在QQ开放平台设置redirect URL时需要在网页中添加语句验证,所以Demo中QQ部分的演示没能实现。

 

2.  重定向浏览器到授权地址。等用户完成授权,得到Token。(Android使用了WebView

说明:

 

1)  授权地址中需要传递的参数有:

Client ID
App key:936537698
Redirect URI
:www.example.com
Response type
:code
    Example:https://api.weibo.com/oauth2/authorize?client_id=936537698&redirect_uri=http://www.example.com&response_type=code
 
2)   用户确认授权后,浏览器会重定向到redirect URI,返回的地址中带有一个token
Example:www.example.com/code=Code 此处的Code保存起来换取Access Token
 
3)   需要注意的是,由于OAuth2.0都是使用的https, 在Android中使用WebView访问地址时需要重写WebViewClient类onReceivedSslError函数,使其在遇到错误时继续访问。
 

3.  用前一步得到的Token换取Access Token和UID

说明:

1)  发送post请求。

2)  参数如下:

Client ID

App key:936537698

Client Secret

App Secret:775f63c……

Grant type

:authorization_code

Code

:上一步得到的Code

Redirect URI

:www.example.com

3)  返回的是Josn数据,其包含的数据中有Access Token和UID对我们是有用的。(新浪与人人返回的Josn解析存在差异)。

4)  由于此处post到的依然是https的地址,所以需要对http Client进行一些处理。

 

4.  通过前一步得到的Access Token和UID向Server发送申请验证用户身份。

说明:

1)  发送get请求

2)  请求参数如下:

Access Token

:Josn数据中提取出来的access token

UID

:新浪中需要使用,人人可省略

 

3)  人人传递Access Token时需要进行进一步的Encode编码。

4)  如果成功,返回的也是一个Josn数据,其中会包含用户UID。

新浪Example:https://api.weibo.com/2/users/show.json?access_token=2.00tdYkCCkOc4BB706734f555Rov12D&uid=1872914593


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值