OpenID和OAuth的区别

来源:互联网 发布:刘德华唱功知乎 编辑:程序博客网 时间:2024/06/05 14:07
我浏览一般网站时,特别是那些创业项目网站,除非能用OpenID登录,包括Google/Yahoo/Sina/Renren/QQ等,否则我一般不会去注册和登陆,太麻烦了。感觉OpenID这个东西很实用方便必要,如果我要做一个网站的话,一定把各种OpenID都给它加上。另外最近上新浪微博比较多,又接触了Oauth,这个东西能极好地延伸新浪微博的触角并帮创业者拓展空间。那么这个OpenID和OAuth是什么关系,有什么区别呢?我查询了一下资料,下面用大白话来描述和比较一下,希望我描写得准确。

OpenID中的三个人物
     1、我
     2、OSChina
          拥有我的资源数据,包括我过去发的贴,我的博客,我的好友粉丝等
     3、Yahoo
          拥有我的身份信息,也就是我的Yahoo邮箱

OAuth中的三个人物
     1、我
     2、新浪微博上的第三方APP
     3、新浪微博
          (1) 拥有我的资源数据,包括我过去发的贴,我的博客,我的好友粉丝等
          (2) 拥有我的身份信息,也就是我的新浪邮箱

OpenID的流程
     我企图操作OSChina中我的资源数据,比如发贴
     OSChina引导我到达Yahoo的身份认证页面
     我在Yahoo完成身份认证
     Yahoo转告OSChina我是Yahoo邮箱的主人
     Yahoo引导我返回OSChina
     OSChina允许我发帖
          所谓的“我”是本次登录生成的Cookie之类,也即认可了这个Cookie等同于Yahoo邮箱的主人

OAuth的流程
     我企图使用新浪微博上一个第三方APP,该APP可以帮助我整理和统计我在新浪微博上的粉丝
     APP引导我到达新浪微博身份认证页面
     我在新浪微博完成身份认证
     新浪微博给该APP一份许可书,上写“可以读取某某人的资源数据”,即该APP可以读取我在新浪微博上的资源数据
     新浪微博引导我返回APP
     我操作APP,APP在后台和新浪微博联系,读取和操作我的资源数据

简而言之,OpenID就是用Yahoo账号或Google账号访问其他网站,OAuth就是授权给第三方。

BTW,现在写东西非常习惯用缩进了,可能我该钻一下Python。


--------20150107补充说明OAuths与OpenID的误用or滥用-------------
注意,OAuths其实已经包括了OpenID,因为“我通过新浪微博授权第三方”就包含向第三方验证我的新浪微博帐号,超过OpenID,我还授权第三方访问和操作我的新浪微博数据。
实际应用中常有这样的情形,比如:使用新浪微博帐号访问虾米网站。这原本OpenID就足够,也即证明自己是新浪微博用户即可,但往往使用了OAuths机制,也即虾米网站还能获取或操作我的新浪微博了,这是为什么?我个人认为这里是商业上的一种潜规则,利用用户对此的不了解,暗暗地获取了用户的授权。可以想象,虾米网可以掌握我的新浪微博关注,甚至可能在微博上发帖推广等等,好处无疑是很多的。
这里有一些很好的讨论:http://www.zhihu.com/question/19628327



原创粉丝点击