结合实例通俗解释Oauth,无专业术语

 

随着社交网络和一些互联网服务的流行,OAuth的应用越来越广泛了,但OAuth使用的较为复杂,令初次接触的人有些头痛,鉴于网上OAuth的使用说明较多,代码实例也有,所以在这里不涉及任何技术术语,简单介绍OAuth到底在做什么,让刚刚接触OAuth的人理清思路。

当你看到一个网站提示你可以使用qq或新浪微博登录,或你看到一片文章,他提示你可以分享到微博,那么大多数情况他们使用了OAuth技术,这里的角色有网站,微博,用户。他们之间其实就是个代理关系,网站代理用户把内容发微博,和我们生活中的代理关系一样,就是要保证相关人的资质(用户和网站都受信),还要确认代理关系(用户相信网站),所有的工作都是围绕这个进行的。下面以网站一键分享到微博为例,介绍OAuth到底是怎么工作的。

首先,注册应用,微博要知道这个微博是谁发的,对于微博来说,网站都是应用,网站在注册应用是要向微博提供自己的信息,如名字,目的,都会干什么。微博批准了你的应用就相当于微博给网站发了一个代理资质。这个时候网站就有了代理人的身份,可以显示分享到微博的连接了(当然现在没有任何意义)

      第二步,当用户点击分享到微博的时候,这时网站拿着微博发给自己发的代理人许可去找微博,告诉他有你的用户要让我代理了,你看你是认识我的吧,你看看你认识你的用户不,我让他找你来。

微博看到自己发的代理人许可(相信网站),就给他一个申请书,让他转交给用户,告诉用户来微博找他。

      第三步,网站就把链接指向微博了,让用户点击链接去找微博,链接里包括给用户的申请书和网站的代理人许可。

微博看到申请书和代理人许可(微博相信网站并知道网站带来个用户)。让用户登录了微博(微博相信用户),微博会告诉你我认识这个网站,你是不是要让他代理的微博操作呢?并根据第一步网站提供给微博的信息,告诉用户网站都会对你的微博做哪些操作。如果用户回答是,微博就会把用户的申请书换成授权书。

      第四步,用户回到网站,网站带着用户带回来的授权书去找微博了要求授权。

微博见到了这个用户的授权书(相信网站,相信用户,相信“用户信任这个网站”)则给网站一个可以操作这个用户的权限,网站就可以根据这个权限随时操作这个用户的数据了,网站并不知道用户的密码就可以操作,用的就是这个授权,当用户变更微博密码时,只要授权还在,并不影响网站操作微博。

      到这里全部过程就结束了,那么为什么要这么复杂呢,我想是因为整个过程都不是三方同时参与,那么就要防止其中的一方伪造第三方数据以获得信任。而且由于整个过程不是一个连贯的过程,每个角色在响应其他角色请求时,都是根据对方的许可才建立信任。每次都需要根据许可重新验证对方身份。

      那么根据以上的步骤,每个角色都要保存什么信息呢?

      微博:网站信息,微博用户的信任的网站。

      网站:用户信息,微博的授权。

 

posted @ 2012-04-08 10:43  猫科动物  阅读(564)  评论(0编辑  收藏  举报