关于我
 

xjpvictor's Blog
小老鼠,上灯台,两只耳朵竖起来

openid乱弹


·web琐事

本文发表于超过180天以前,部分内容可能已经失效

openid是早些年提出来的一个通用id的想法,就是一个id,到处登录。按理说这个想法很好,但是却始终不流行,大部分网站并不支持使用openid登录,支持的也只是在不显眼的地方,更像是顺便支持。而关键问题是,没人用。

openid使用的是网址作为用户的id,也就是说在登录的时候用的是比email长比email难记忆的网址。虽然像openid网站所说,其实大家都有openid,因为facebook,blogspot之类的都可以作为openid,但是普通用户谁记得自己的facebook的url?我不是说geek,甚至advanced user,而是最普通的用户,一般是很少在意url的,而且现在移动设备流行,用app的话也没有url这么一说,所以openid没人用也就可以理解了。再说,facebook,blogspot之类都能作为openid,让用户选择?恐怕一般人会干脆什么都不选,而是换其他的登录方式吧。

所以现在流行的是oauth。倒是可以解决一个帐号多处登录,但是oauth的问题在于必须区分提供登录的网站。比如bitbucket,登录按钮一堆,用twitter登录,用facebook登录,用github登录,支持的网站越多,这个列表会越长,可是再长也有限,最终还是少数几个网站掌握着用户登录数据。

而且现在使用oauth的网站,其实并不仅仅是为了简化登录,更多的是希望社交。看看提供oauth登录按钮都是些什么网站就知道了,facebook,twitter,google plus。网站使用oauth登录更希望的是能在这些社交网站上与用户的好友产生互动,从而增加自己的流量。至于简化登录流程,他们才不在乎,反正就算用户用oauth注册了也还是有一堆所谓详细资料要填写,甚至还要设置密码,和直接注册没什么区别。

所以最好的方法是邮箱提供商,比如gmail,同时提供登录验证,而目标网站,比如facebook则使用email作为用户名,根据email的域名向邮箱提供商指定的登录验证页面发送登录请求。

这样可以采用email作为用户的唯一id,而email提供商在dns中规定登录页面。比如说gmail,在dns中规定,采用google.com/xxx/这个页面作为登录页面,那么比如说facebook在用户输入邮箱地址后,查询邮箱域名的dns,获取登录页面地址,然后向登录页面发送验证请求,如果用户已经登录了,那么就直接进入facebook,不然就转到登录页面。这样的好处是用户不需要记忆又长又不习惯的网址,而是采用email,同时又免去了要不停登录的麻烦,而网站也可以不需要为每个登录验证网站单独放置按钮。

再进一步,登录验证网站可以向目标网站提供一些基本的用户资料,比如头像,用户名,全名,bio,国家,主页等等,这样就形成了一个用户在全互联网的统一profile,而email本身即是唯一的,所以这个以email作为id的profile也是唯一的。目标网站在请求验证后可以获取这些资料,甚至用户可以公开一些不敏感的资料,减少用户注册时填写资料的麻烦。gravatar其实就是做这个的,只是它并不提供登录验证。

如果邮件提供商开放一点的话,甚至可以outsource登录验证提供商,让用户选择自己的验证提供商,这样目标网站访问邮箱域名的dns获得邮件提供商的验证地址后,验证地址的服务器再根据用户的邮箱地址把请求forward到真正的登录验证提供商。

而advanced user则可以自己搭建邮件服务器和验证服务器,也算是去中心化了。

不过有个问题,就是邮箱提供商跑路,或者验证提供商跑路。如果像雅虎关闭中国邮箱一样提前通知,倒是还好,否则目标网站无法验证登录,也就无法让用户修改邮箱地址了。有个方法就是备用邮箱,用户注册邮件时要求填写备用邮箱,验证服务商记下备用邮箱并且发送给目标网站,目标网站收到用户重置邮箱请求时就向备用邮箱发送重置链接。

至于安全方面,验证服务器可以强制要求ssl连接,使用2FA之类。虽然说会导致验证服务器失守就会导致所有服务被盗,但另一方面来说,只要验证服务器安全,即使目标网站被攻破,也不会导致采用同样密码的其他网站被盗。而且一旦验证服务器被攻破,验证服务器可以暂时停止服务,这样目标网站就应该是安全的。

这样做的话,对用户来说,最大的好处就是免去了维护密码和重复登录的麻烦。而目标网站则是可以不再储存用户的密码,减低安全风险。同时因为极大的简化了注册的流程,所以可以说可以为所有用户免注册。比如说当一个新用户访问facebook,facebook可以根据email和公开的profile建立一个账户,如果用户对facebook感兴趣,基于这个账户的存在,可以很方便的开通正式账户,这样应该会有更多的人注册。而对于邮件提供商来说,可以增加用户粘度。甚至像google这种,建立了基于email的用户profile后,android上的邮件客户端可以根据email显示头像,而不需要用户设置,应该是蛮吸引人的。

以上,是openid引发的乱弹。。还是很难实现的。看看现在采用oauth登录的网站就知道了,google不会允许facebook帐号登录,facebook也不会允许google帐号。都希望别人用自己的,但是自己不会用别人的。说到底,还是钱的事。

本文 "openid乱弹" 由 K. Huang 首先发表于 xjpvictor's Blog 并以 CC BY-NC 4.0 许可证发布 © 2013
转载注明引用来源 https://blog.xjpvictor.info/2013/07/thoughts-on-openid/

赞助我

评论

你的邮箱地址不会被公开。必填项以 * 标出

无意义或不相关评论将被删除

取消 上传图片 或拖拽上传

* Some files will not be uploaded. Only png, gif, jpg are allowed and maximum 10 images, each file less than 10M.

你可以添加 10 个 png/gif/jpg 图片 (每个文件小于 10M)

允许使用以下html标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

你可以上传文件,粘贴代码或长文至 Drop.it.r

更多相似文章