代码改变世界

开放平台_XAuth

2011-09-01 14:41  轩脉刃  阅读(3941)  评论(0编辑  收藏  举报

xAuth

XAuth也是一种OAuth的认证方法

 

结构和流程上看XAuth是一种oauth1.0oauth2.0的集合者

 

oauth2.0access_token接口步骤 + oauth1.0的签名方法

 

为什么出现XAuth?

 

现在需求是:

1 不希望有oauth1.0的三步复杂的认证流程,希望直接使用用户名和密码就可以完成(这对于移动设备的第三方应用非常需要)

2 不希望取得access_token之后使用https来调用接口

3 当然最总要紧的是还要保证数据的安全性

 

那么就有一种方法:

XAuth

 

特别说明:

1 xauth最早是twitter使用的,很多人都认为是由twitter开发的xauth,后在国内的网站weibo也使用了

2 xauth没有正式成为ietf推广的方案

3 xauth应该是在oauth1.0出现推广之后,oauth2.0出现之前这个阶段出现的产物

4 twitterweibo并不是允许所有的应用都可以使用xauth,都要求第三方需要向网站提交申请,主要考虑到xauth的安全性和流程确实不如oauth可靠

5 xauth主要适用于非server的第三方

6 xauth的客户端实现可以直接使用oauth1.0的实现,服务器端的实现也只是需要在access_token的接口中多增加一个分支,因此对应于实现了oauth1.0开发的第三方应用和网站来说是非常容易实现的

 

XAuth的步骤

 

XAuth的步骤非常简便(twitter为例):

 

1 客户端https请求access_token

 

https://api.twitter.com/oauth/access_token

 

oauth_consumer_key - JvyS7DO2qd6NNTsXJ4E7zA //appkey,应用申请时候获得

oauth_consumer_secret - 9z6157pUbOBqtbm0A0q4r29Y2EYzIHlUwbF4Cl9c //secrect 应用申请时获得

oauth_nonce - 6AN2dKRzxyGhmIXUKSmp1JcB4pckM8rD3frKMTmVAo //防重放唯一数

oauth_signature_method - HMAC-SHA1 //加密算法

oauth_timestamp – 1284565601//时间戳

oauth_version - 1.0 //oauth版本

x_auth_mode - client_auth //xauth的标志

x_auth_password - twitter //用户密码

x_auth_username – testuser //用户名

 

注:其中的签名方法是和oauth1.0一样的,所以客户端的实现可以直接使用各大网站oauth1.0已有的框架和SDK(我认为这是导致xauth出现的原因之一)

 

这步和oauth2.0username-password一样,但是签名和参数设置又是和oauth1.0一样

 

2 服务器端接收到xauth请求

a 使用oauth1.0的签名方式验证

b 验证用户名和密码

c 生成access_token,secret

d 直接将access_tokensecrect返回给客户端

 

3 客户端得到access_tokensecret后直接使用oauth1.0的流程请求接口

 

 

 

参考资料:

http://open.weibo.com/wiki/XAuth

https://dev.twitter.com/docs/oauth/xauth

http://yourhead.tumblr.com/post/428643811/five-things-you-didnt-know-about-xauth

http://aralbalkan.com/3057

http://xauth.org/spec/

 

作者:yjf512(轩脉刃)

出处:http://www.cnblogs.com/yjf512/

本文版权归yjf512和cnBlog共有,欢迎转载,但未经作者同意必须保留此段声明