详细的定义可以看wiki,下面举个例子说说我的理解
现在很多网站都可以用第三方的账号登陆,比如,现在我要登录淘宝
买东西,而如果我没有淘宝的账号,我也可以用微博
的账号登录,这个微博账号就是第三方账号了。
OpenID强调 验证 authentication
,而OAuth强调 授权 authorization
。 验证就是说“我”是不是
(微博用户),而授权是说“淘宝”可不可以
,而可不可以
的前提则是“我”是不是
。
过程大概是这样
- 我点开微博登录的链接,淘宝就跳到微博登录页面,问我你是不是那个微博用户,是的话你用你的账号密码去登录,你先去给微博验明正身,是的话再来找我
-
好啦,我屁颠屁颠输入账号跟密码,如果可以登录说明我这个身份是对的,通过了微博的验证后微博就告诉淘宝说,没错没错,我家里确实有么这个家伙
上面这些都是OpenID的责任,而且OpenID也只做这件事,就是前面说的
是不是
- 然后呢,淘宝就说好好,有你微博验证我放心,于是就让我通过了
- 等等,这时淘宝只知道微博他们家有我存在,但是并不知道我在微博家里叫什么名,做过什么事,其实淘宝也不应该知道,对吧,要是知道我在微博家老是到处举报别人卖假货坑顾客什么的,那我让你进我大淘宝岂不是会坏了我的大事,你丫是来捣乱的吧(至于淘宝为什么会这么想,哼哼~你们懂的)
-
所以,淘宝通常就会做一件事,什么事呢?这时就轮到OAuth出场了,淘宝在把我交给微博验明正身的时候其实还“忽悠“了我,明明只是验个身份,却问我要不要把我在微博家叫什么名做过什么事也告诉它(就是通常看到的几个打勾选项:
允许访问我的昵称
/允许访问我的头像
等等),淘宝说这样就可以为我提供更多的服务,什么服务呢?模凌两可,我呢看到有更多服务也没多想就打勾了,不要白不要是吧。这里就用到了OAuth,就是前面说的
可不可以
,这个要是真发现我在微博家干过的事,会不会把我加入重点监控对象,那就要看淘宝有多少节操了
其实现在很多的第三方登录都是这样,验证身份的同时顺便把你在其他地方的资料拿到手,名曰资料共享,其实共享一些非敏感信息倒也无妨,还可以免去了每去一个新网站都要填写一大堆重复资料的问题。但是我要吐槽的是,很多网站明明让我用第三方账号登录,你都OAuth了为毛登录后还要再填一遍邮箱昵称之类的东西?早知道这样我还不如直接在你这边注册就好了,在我看来这是用户体验的问题了。
写这些其实就是想用简单通俗的语言来解释这两者的区别(旁边哥们怒了:那你为毛还这么啰嗦!啰嗦!嗦! 哎呀~我的耳朵我的耳朵…)
以上,不对的地方请指正,谢谢!