深入理解OAuth与豆瓣OAuth test
OAuth从出生似乎得到了太多业界的关照..几大被墙网站都有OAuth验证API..
今天在群里聊天.有人问我:国内除了豆瓣人人新浪微博.还有哪个提供api了?
我一时语塞..为国内的环境感到一丝凄凉..
扯远了..我们今天就来分析一下OAuth..怎么来用OAuth.
写这篇文章的原因就是我学习OAuth协议的时候..搜索到一些文章..都是出自一个叫[OAuth开发文档.docx]的文档中的..
比较笼统..并且不容易理解..
所以我想我有必要用我自己的话来描述一下OAuth协议.
为了更好的解释.我们就用豆瓣来举例吧.
一个用户A在豆瓣上注册了一个账号. 登录进去后他可以进行一些动作.比如发布广播等.
那么好.现在有个网站B..想让A在我的网站上发表一个广播..
但是有个问题..网站B对于用户A来说是不可靠的..用户A不想把自己的账号密码放到网站B上..
另外.网站B对于豆瓣来说也是不可靠的..豆瓣不知道网站B是不是真正的用户A.
为了解决这个问题..这三个人(豆瓣/用户A/网站B)就坐一起开了个小会..
会议的结果就是OAuth协议.
这个协议为了安全看起来是有点复杂的..下面我就简单的说下步骤..我有些比喻是不恰当的.只是让大家理解步骤而已.
大的步骤来说有三步.
在这些步骤之前..网站B得去豆瓣申请一个信物1(oauth_consumer_key)和一把钥匙1(oauth_consumer_secret)(钥匙很多.这个钥匙叫做钥匙1)..算是两人见面认识一下..然后网站B再去拜访豆瓣.豆瓣可以认识说:哦.这不是B吗?
第一步.
网站B拿着钥匙去跟豆瓣说.hi兄弟.我来了..然后豆瓣说:我只认钥匙不认人的.掏出来你的信物1(oauth_consumer_key)和钥匙1(oauth_consumer_secret)我来识别下.
这时候网站B战战兢兢的拿出来.. 豆瓣验证后说: 噢 没错. 你就是B. 那好.我再给你另外一把钥匙2(oauth_token_secret)和信物2(oauth_token)..
网站B就拿着回去了.
第二步.
这时候用户A就要参与进来了.. 网站B拿着信物2(oauth_token)和钥匙2(oauth_token_secret)带着A又来拜访豆瓣..这时候三个人站一块..豆瓣先要验证用户A是不是真的.
表现到动作上来讲就是用户A需要在豆瓣上登录一下..如果验证成功.豆瓣就需要问下用户A了.
豆瓣说: A啊 你认识那个B吗? 你让他动你的东西么?
A说: 认识认识啊 他是我好兄弟. 我的东西他随便动..
这时候豆瓣就知道了. 那好..那网站B就可以从我这里增删改你的东西了.
另外.网站B还是提供给豆瓣一个后门.. A同意后.豆瓣就要求A用户拿着钥匙2去后门找网站B了
第三步.
如果上面都还算顺利的话..网站B就拿着钥匙1(oauth_consumer_secret)跟钥匙2(oauth_token_secret)再去拜访豆瓣..
豆瓣再次验证通过后.就会给网站B一个钥匙3(oauth_token_secret)和一个信物3(oauth_token)..
这个虽然名字上为oauth_token.但是我们普遍都叫做oauth_access_token.
这时候对于用户/豆瓣来说.网站B就可以信任了.
如果以后网站B想要去修改用户A的内容.需要拿上钥匙1(oauth_consumer_secret)和钥匙3(oauth_token_secret)去找豆瓣就可以了.
到此为止.这个过程就结束了..
上面的步骤大体是这样的..但是有些细节的不同.比如签名加密等..
这个就可以从我的代码中仔细去理解了.
我们可以拿豆瓣的API去测试一下.
获取access_token的话.如果你喜欢用开源的OAuth库也可以..我为了自己理解.所以写了一个.
拿到access_token后.每次去增删改东西的时候.都需要把URL secret等都签名一下..放到header里面.
当你请求API的时候.比如是发表一个广播 这个API的URL是http://api.douban.com/miniblog/saying
每次你请求.豆瓣都要check一下这个头..看看是什么验证的..
比如他一看头里面是Authorization: OAuth..噢知道了 是OAuth验证.
这时候他就去检查那些必要的字段.比如oauth_consumer_key等.
剩下的大家就可以去看OAuth协议 看我的代码了..
我写了一个douban的test 你可以去试一下.
你要先去申请一个应用.然后修改config.php中的地址..
建议继续学习:
- 豆瓣的Url结构方式一览 (阅读:6748)
- 别得瑟了,你很可悲! (阅读:6534)
- 新浪微博OAuth认证流程分析 (阅读:4137)
- 基于PECL OAuth打造微博应用 (阅读:4171)
- PHP for Twitter OAuth 教学演示 (阅读:3598)
- 在sae中利用SaeFetchurl进行豆瓣的OAuth授权 (阅读:3701)
- OAuth那些事儿 (阅读:3215)
- OAuth 1.0a与1.0协议的改进… (阅读:2919)
- 新浪微博 Android SDK中OAuth2.0隐式授权部分的一个代码逻辑问题 (阅读:2541)
- [演讲稿]OAuth1.0协议 (阅读:2429)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Jessica 来源: Skiyo
- 标签: OAuth 豆瓣
- 发布时间:2010-08-11 09:59:27
- [70] IOS安全–浅谈关于IOS加固的几种方法
- [69] Twitter/微博客的学习摘要
- [64] 如何拿下简短的域名
- [63] android 开发入门
- [62] Go Reflect 性能
- [61] find命令的一点注意事项
- [59] 流程管理与用户研究
- [58] 图书馆的世界纪录
- [57] Oracle MTS模式下 进程地址与会话信
- [56] 【社会化设计】自我(self)部分――欢迎区