OAuth1.0a的使用例(RFC5849 1.2节的中文翻译)
2010-10-08 21:42
309 查看
碰巧遇到OAuth,在网上学了一学,在此记录以备忘。
看了很多介绍文章,最后还是觉得RFC最能让你理解具体这个协议是怎么工作了,在此把RFC5849的1.2节翻译一下。
RFC5849
1.2 例子
参考资料
http://tools.ietf.org/html/rfc5849
这里能看到一个很直观的user experience分析图
http://hueniverse.com/oauth/
论述OAuth1.0a, WRAP( ) 以及 OAuth2.0的文章
http://radar.oreilly.com/2010/01/whats-going-on-with-oauth.html
看了很多介绍文章,最后还是觉得RFC最能让你理解具体这个协议是怎么工作了,在此把RFC5849的1.2节翻译一下。
RFC5849
1.2 例子
Jane (resource owner) 已经上传了一些她的假期照片(protected resources) 到她的照片分享网站'photos.example.net' (server). 她希望用 'printer.example.com' 网站(client) 来打印其中一张照片.和通常一样,Jane用她的用户名和密码登录到 'photos.example.net' .但Jane不想告诉'printer.example.com'她的用户名和密码,而为了打印而这个网站需要访问照片。为了给用户提供更好的服务,'printer.example.com' 已经事先取得了一组'photos.example.net'的客户端资格(client credentials): 客户端识别号码(Client Identifier): dpf43f3p2l4k3l03 客户端共享密文(Client Shared-Secret): kd94hf93k423kf4 'printer.example.com' 网站也设置好了它的程序以便利用列举在 'photos.example.net' 的API文档里的协议终端接口,这些终端使用 "HMAC-SHA1"签名方法:
临时资格请求 https://photos.example.net/initiate 资源主授权 URI: https://photos.example.net/authorize Token请求URI: https://photos.example.net/token 在'printer.example.com'能请求Jane授权它访问照片之前,它必须同'photos.example.net'建立一组临时资格以用来识别代理请求。 为了实现这个,客服端送出一下HTTPS [RFC2818 ] 请求到服务器端: POST /initiate HTTP/1.1 Host: photos.example.net Authorization: OAuth realm="Photos", oauth_consumer_key="dpf43f3p2l4k3l03", oauth_signature_method="HMAC-SHA1", oauth_timestamp="137131200", oauth_nonce="wIjqoS", oauth_callback="http%3A%2F%2Fprinter.example.com%2Fready", oauth_signature="74KNZJeDHnMBp0EMJ9ZHt%2FXKycU%3D" 服务器端验证这个请求并在HTTP应答的正文里面回复一组临时资格(改行只是为了显示方便): HTTP/1.1 200 OK Content-Type: application/x-www-form-urlencoded oauth_token=hh5s93j4hdidpola&oauth_token_secret=hdhd0244k9j7ao03& oauth_callback_confirmed=true 客户端转送Jane的user-agent到服务器的资源主授权端口以获得对于访问私有照片的Jane的批准:
https://photos.example.net/authorize?oauth_token=hh5s93j4hdidpola 服务器请求Jane用她的用户名和密码登录,如果登录成功,服务器再要求她批准授权 'printer.example.com' 访问她私有的照片。Jane 批准这个请求然后她的user-agent就被转送到客服端在以前的请求里提供的callback URI: (改行只是为了显示方便): http://printer.example.com/ready? oauth_token=hh5s93j4hdidpola&oauth_verifier=hfdp7dh39dks988 这个callback请求通知客户端Jane完成了授权处理。然后客户端用它的临时资格来要求另一组token资格(在一个安全的Transport Layer Security (TLS) 通道上): POST /token HTTP/1.1 Host: photos.example.net Authorization: OAuth realm="Photos", oauth_consumer_key="dpf43f3p2l4k3l03", oauth_token="hh5s93j4hdidpola", oauth_signature_method="HMAC-SHA1", oauth_timestamp="137131201", oauth_nonce="walatlh", oauth_verifier="hfdp7dh39dks9884", oauth_signature="gKgrFCywp7rO0OXSjdot%2FIHF7IU%3D" 服务器验证这个请求并在HTTP应答的正文里面回复一组token资格: HTTP/1.1 200 OK Content-Type: application/x-www-form-urlencoded oauth_token=nnch734d00sl2jdk&oauth_token_secret=pfkkdhi9sl3r4s00 有了这组token资格,客户端做好了访问私有照片的准备: GET /photos?file=vacation.jpg&size=original HTTP/1.1 Host: photos.example.net Authorization: OAuth realm="Photos", oauth_consumer_key="dpf43f3p2l4k3l03", oauth_token="nnch734d00sl2jdk", oauth_signature_method="HMAC-SHA1", oauth_timestamp="137131202", oauth_nonce="chapoH", oauth_signature="MdpQcU8iPSUjWoN%2FUDMsK2sui9I%3D" 'photos.example.net'服务器验证这个请求并回复被请求访问的照片.在Jane的授权的存活期间,'printer.example.com'能够用同一个token资格继续访问Jane的私有照片, 或者直到Jane让访问无效.
参考资料
http://tools.ietf.org/html/rfc5849
这里能看到一个很直观的user experience分析图
http://hueniverse.com/oauth/
论述OAuth1.0a, WRAP( ) 以及 OAuth2.0的文章
http://radar.oreilly.com/2010/01/whats-going-on-with-oauth.html
相关文章推荐
- Ajax4jsf User Guide 中文翻译 -- 在JSF中使用AJAX
- 转--搞清如何使用oAuth 1.0 & 1.0a
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
- 搞清如何使用oAuth 1.0 & 1.0a
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
- ER-STUDIO 6.5工具使用帮助的中文翻译
- Speex手册----Speex编/解码API的使用(libspeex) 中文翻译
- 《Entity Framework 6 Recipes》中文翻译系列 (44) ------ 第八章 POCO之POCO中使用值对象和对象变更通知
- AFN文档中文翻译以及简单使用说明
- 《Entity Framework 6 Recipes》中文翻译系列 (17) -----第三章 查询之分页、过滤和使用DateTime中的日期部分分组
- 《Entity Framework 6 Recipes》中文翻译系列 (13) -----第三章 查询之使用Entity SQL
- 搞清如何使用oAuth 1.0 & 1.0a
- [原]SWFObject FAQ 使用swfobject以及flash的注意事项 中文翻译版
- OAuth1.0 RFC5849 中文版 (部分翻译)
- 使用Sphinx建立CloudStack中文文档翻译环境
- 生成包含C库的应用程序----ADS编译器和库文件使用指南 中文翻译(原创)
- 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存
- 黄聪:让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
- 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法
- Nginx--官网中文翻译(中英文对比)--11-使用nginx作为http负载均衡Using nginx as HTTP load balancer