猛禽的河蟹BLOG

--一个无学位、无户口、无异性的犬儒主义中年大叔

版权

Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
raptor.zh(at)gmail.com

存档

2008年11月
2008年10月
2008年9月
2008年8月
2008年7月
2008年6月
2008年5月
2008年4月
2008年3月
2008年2月
2008年1月
2007年12月
2007年11月
2007年10月
2007年9月
2007年8月
2007年7月
2007年6月
2007年5月
2007年4月
2007年3月
2007年2月
2007年1月
2006年12月
2006年11月

分类



链接

微笑图书室 多背一公斤

A0.八卦帮

A1.八卦帮众

A2.个人八卦

AV.友情链接

ADS.友情广告

[技术评论]身份验证

版权声明:可以任意转载,
转载时请务必以超链接形式标明
文章原始出处和作者信息及本声明。

— | by : 猛禽

(2006-11-07)

听说今年的网志年会上有一个讨论OpenID的专题。对于网站的身份验证问题不算一个新话题,自从当年MS推出并热炒passport的时候就已经开始了。即使是OpenID也出来有一阵子了。

不过我是看了前一段ZOLA对OpenID的大力推广之后,才开始去了解这个技术。虽然OpenID有自己很大的优势,但同样存在着一些目前不可克服的困难。

首先简单地把目前的身份验证手段分为三类:

1、集成验证。就是现在大多数网站所采用的方式,你要在这个网站访问,就要在这个网站注册一个用户,并且以这个用户身份登录。

2、第三方验证。如MS的Passport。服务提供网站不记录用户身份,而是通过向第三方(如MS)提请验证用户的身份。

3、 分布式验证。以OpenID为例,它的验证过程要麻烦一些:用户以一个URL作为身份标识,这个URL所指向的页面包含了用户所选择的验证服务器 (YADIS),当用户以这个URL登录服务提供网站时,网站从这个URL取得YADIS信息,然后转向YADIS网站,用户在YADIS网站输入密码以 确认身份后,最后反馈到最初的服务提供网站。

第一类验证的优点是简单方便,并且对于网站来说,可以独占用户资源。但缺点也是很明显的:对于 用户来说,要记住自己在每个网站上的用户名和密码并不是一件容易的事——因为难免碰到用户名重复的情况而不得不改变自己的用户名,或是不放心网站的用户资 料管理而在不同网站用不同的密码。

第二类验证提供了一个统一的验证渠道,对于用户来说方便很多,而且由MS这样的大公司提供验证服务也感觉 比较有保障。但对于网站来说就损失了自己的用户资源,特别是当这些网站与MS存在竞争的可能性时,他们就更加不愿意了。而且还有一个潜在的风险就是,一但 这个第三方验证失效(比如GFW),也会受到连带的影响。

于是OpenID横空出世。用户可以自由选择YADIS服务器来记录自己的身份信 息,有条件的用户甚至可以自己建立一个,避免了第三方集中验证存在的失效风险。此外分布的验证机制避免了大公司的垄断,对于网站来说也会感觉好一些。而且 对于用户来说,到哪都可以用自己唯一的URL,不存在用户名被占用的问题。

貌似OpenID是最好的解决方案?

但我认为,这只是看上去很美。

首先,从使用方便性上看,URL通常太长了,除非用户拥有自己的域名,否则使用BLOG或个人主页之类的东东通常都太长了一点。而且输入URL以后还需要转到YADIS上去输入密码(当然网站也可以实现成一步完成,由网站到YADIS上去验证,但存在风险,见《安全支付》),这也是比较麻烦的。

其次,第一类验证可以在网站上完成,不需要多余的Round-trip,响应速度最快;第二类需要到第三方验证网站转一圈,会慢一点;而OpenID需要到用户URL和YADIS上各转一圈,响应速度最慢。

第 三,绝大部分用户是不可能自己建立YADIS的,所以结果还是要交给第三方YADIS做验证,还是不可避免出现与第二类相似的集中情况。相当大部分用户甚 至连BLOG和个人主页都没有,所以还不得不在如MyOpenID这样的网站上注册一下,取得一个OpenID专用的URL,结果就与第二类验证没什么区 别了。

第四,从安全性考虑,OpenID使用的YADIS可以由用户自己选择,而各YADIS在安全性方面存在良莠不齐的情况,用户的资料安全风险还是比较大的。

第 五,可靠性差。表面上OpenID将验证过程分布到很多的YADIS上,似乎会比较安全,但实际上除非用户自己能够在URL页面上作YADIS的容错备份 (在页面上做几个YADIS的链接,这只是我的想法,至于OpenID是否支持这样做,我还没有找到进一步的资料),否则一旦用户所选择的YADIS失 效,则用户就无法正常使用了。而最大的风险还在于用户URL页面可能失效。

从验证失效的风险上来看:

第一类验证如果失效,只是那个网站无法访问,不会影响到用户访问其它的网站。假设网站的可靠性为N(N为小于1的数,比如99%),则总的可靠性也为N。

第二类验证如果失效,则用户所有依赖这个验证的访问都将失败,但就某一个网站来说,其总可靠性为N*A(A为验证网站的可靠性,比如99.99%),比第一类的可靠性要低一些。当然因为这类验证网站都是由大公司提供,可靠性通常会很高,所以与第一类的可靠性差别可以忽略。

而 对于OpenID来说,用户URL和YADIS之间,只要有一个失效,则用户的相关访问都将无法进行。以单个网站来说,其总可靠性为N*U*Y(U和Y分 别是用户URL页面和YADIS的可靠性),如果是用mblogger的页面来做URL的话,假设其可靠性为80%,而所用的YADIS可靠性为95%, 则总可靠性将大幅下降到:76%。当然这是一个极端的例子,我想不会有人拿mblogger这种靠不住的页面来做自己的OpenID URL的,而且一般的YADIS可靠性应该也不致于这么低(但也还是不如MS的passport)。

但总的来说OpenID的失效风险还是要远大于前两类验证的。

基本上在我看来,OpenID在解决了前两类验证方式的缺点的同时,也带来很多的问题。

附 加说明:本来我还以为Google Account是一种类似于Passport的第三方验证手段,但是经过几天的研究后发现,它只提供了对部分Google服务的帐户访问功能,拒绝对第三 方提供用户身份验证服务,这实在是一件很遗憾的事情,否则Google Account应该会是比OpenID更好的选择。

Tags : OpenID, Passport, Google Account

1.技术八卦 | 2006-11-20 12:47

Trackback link:

Please enable javascript to generate a trackback url

跟踪

评论(1)

smjj :

。。嗯嗯。。扫盲。。 ^O^

- 2006-11-21 14:38


 
 
  表情图标 

 本站启用了防垃圾评论的脚本,如果发现不能发表评论,可能是因为脚本未能正常下载或执行,请刷新页面后再试。
记住我?

提示: 除了 <b> 和 <i> 之外,其他的Html标签都将从您的评论中去除.url或mail地址会被自动加上链接.