Beginner’s Guide to OAuth – Part II : Protocol Workflow
By Eran Hammer-Lahav Monday October 15, 2007
这是一篇翻译的文章,上面标题有原文链接。
要解释OAuth,最好还是用生活中的实例。定义文档的附录A中有一个类似的例子,不过着眼点在HTTP请求的语法上。本文则贯穿用户、消费者(Consumer)和服务提供者(Service Provider)的角度介绍了一个典型的OAuth会话应用场景。一个苏格兰人的真实经历,成为了我们的故事。现在开始:
简刚从苏格兰的艾莱岛度假两周回来。回到家的她想把照片分享给朋友们。简用Faji——一个照片分享网站——来分享她的旅途相册。她登录到faji.com的账户,上传了两张照片,然后设置为“不公开”。
在OAuth技术看来,简是用户(User),faji.com是服务提供者(Service Provider),她上传的那两张照片就是受保护资源(Protected Resource)。
将照片分享给网上的好友之后,简还想把这些照片分享给她的祖母。她不想将这些珍贵的照片交给其他人,可偏偏祖母又不能上网。于是简打算订购数码冲印服务,将照片邮寄给祖母。简选择了Beppa,一个友善负责的在线照片冲印服务商。
在OAuth技术看来,Beppa是信息消费者(Consumer)。由于简把照片设置为不公开的,Beppa只能先用OAuth取得简对访问照片的授权,然后才能冲印这些照片。
简访问beppa.com,接着开始订购冲印服务。Beppa支持从众多照片分享网站导入照片,包括Faji。简选择照片的来源,并单击继续。
Beppa支持Faji照片的导入。说明Beppa的开发人员已经以OAuth消费者开发人员的角色,从Faji那里取得了操作Faji的API所需的OAuth消费者凭证(Consumer Key)还有消费者密钥(Consumer Secret)。
简点下继续按钮后,Beppa和Faji的后台服务器之间发生了一些重要的事情。Beppa从Faji那里取得了一个请求凭证(Request Token)。这个请求凭证不是由用户签发的,Beppa用它来请求一个访问简的非公开照片的授权。
简单击了继续之后等着屏幕上的变化。她品着她那瓶昂贵的黑波摩,等着下一个页面载入。
Beppa收到了请求凭证之后,把简带到Faji的OAuth用户认证界面。URL地址中带着请求凭证,并且告诉Faji,一旦简登录并授权就把她带回http://beppa.com/order。
简被带到Faji的网站,并要求她登录。OAuth要求服务提供者先请用户登录,再询问他们是否授权给消费者。
简可以通过浏览器地址栏中的网址看出,她现在已经在Faji的的网站上了,于是她输入用户名和密码。
OAuth技术可以确保简的用户名和密码不会被Beppa或者其他网站知道——简永远不必把这些认证信息录入beppa.com。
成功登录了Faji之后,简会看到向消费者Beppa授权的信息。Faji会告诉简谁(本例中是Beppa)在请求授权以及具体请求哪种授权。简可以选择允许或者拒绝。
简确认了Beppa仅仅在请求它所需的最小权限——她不希望Beppa修改照片或者诸如此类的事情发生——她还会注意到这是个一小时有效期的一次性访问授权,一小时足够Beppa取得她的照片了。
只要简许可了这个授权请求,Faji就把请求凭证标记为经过用户授权的。然后简的浏览器会被带回Beppa上一步和请求凭证一起提供的URL(http://beppa.com/order)。这让Beppa得知它现在可以继续下一步,取得简的照片了。
简等着Beppa向她展示从她的Faji取回来的照片。
在简等着的这段时间里。Beppa用那个经过用户授权的请求凭证换了一个访问凭证(Access Token)。请求凭证只用来请求用户授权,访问凭证才是用来访问受保护资源(本例中简的照片)的。在第一次请求中,Beppa用请求凭证换了访问凭证,第二次(也可以是多次请求,先取得照片列表,然后获取每张照片)请求取得照片。
Beppa完成操作后,简的浏览器刷新,并完成订单。
Beppa成功取得了简的照片,显示成缩略图让她挑选冲印那张。
简对Beppa没问她要用户名和密码就抓取到了照片印象非常深刻。她对刚才所见的过程非常满意,然后下了冲印订单。
>=< >o< >b< >s< >_< >^<你不妨认为这是一条可爱的分界线>^< >_< >s< >b< >o< >=<
译者说
OAuth是个好东西,对保护用户隐私非常重要。国内许多大型网站还在要求你输入其它网站的用户名和密码,尽管它们都保证只是用来找人,不会记录。但是,谁知道呢?在国内互联网巨头们竞争白热化的时代,很想象这些网站对你的隐私不感兴趣。OAuth具体实现起来比较复杂,这篇文章只是一个工作原理的通俗解释,虽然出现了术语,不过还是适合非专业人士阅读。
一条评论
亭松图挂了