原文作者:Jeff Atwood
回想起2008年夏天我们开发Stack Overflow的时候,我采纳了OpenID这种登录方法。我还写了一篇博文,题为“别再创建新的用户名和密码”,介绍了我之所以选择OpenID的原因:
我知道,OpenID远不是一个理想的解决方案。但是在眼下,“每个网站都有单独的登录账号”的问题已经非常严重,以致于我愿意接受一些折中方案,以免情况继续恶化下去。我绝不可能把我的银行账号与OpenID绑定。但是,还有很多其他的网站,我不需要它们达到银行那样的安全级别,而我使用它们的频率远远高于我的银行账号。要记住所有这些网站上的登录账号——一旦密码忘记了,我的Email收件箱就成了事实上的集合点和安全通道——所有这些痛苦累加起来,是巨大的、实实在在的!
在互联网的世界里,每一个屁大点的网站就要求我专门为他们创建一个特别的用户名和密码,这总是让我苦不堪言!没错,如果你是一位厉害的极客,你可能会组合使用“工具箱”里的特殊软件和USBKey,分别为常用的几十个网站产生安全的用户名和密码。但对于绝大多数默默无闻的普通人来说,他们对“安全”毫无概念,他们只图方便。于是,他们反反复复地使用相同的用户名和密码。更糟糕的是,他们设置的密码可能还很简单。
这就是互联网上身份认证的现状,完全可以用“支离破碎、漏洞百出”来形容。
但是,事情本不该是这样的。打开你的钱包(或者手提包,或者不管什么包)看一看,我敢打赌,你会发现各种各样的凭据,用以证明你在各种场合下的身份。
一般来说,钱包里会有以下几种不同形式的、有着不同强度的证件:
(有时候,呃,甚至还有大腿舞的免费卡……你懂的!)
在现实世界里,我们通常不会带上两打的证件;在网上,我们也不应该对人们有这样的期望。要不然,你的钱包会鼓得不行,你还会被人怀疑有毛病。在现实世界里,我们只须带上2~ 3张高强度的证件,再辅以一些其他形式的弱证件——不知何故,这样便足以应付了。
我建议,我们的“网络钱包”应该模仿我们现实世界里的钱包。只要有网站需要知道我的身份,他们应该要求看我的“互联网驾驶证”。
当然,我指的并不是那种“驾驶证”。我只是借用“驾驶证”这个术语,比喻一种在互联网上多个地方都能使用的在线凭据。如果我只是想给某篇博客文章写点评论,那么使用某种相对较弱的证件应该就可以了。如果我想创建一个新的银行账号,或者在一个交友网站上填写自我介绍信息,也许就有必要从我的虚拟钱包里拿出较强形式的证件了。
用户需要接受的核心概念是,登录网站须展示一种第三方凭据以验明他们的身份。这个想法并没有它看起来那样疯狂。现如今,你在多少网站上能使用Facebook、Google或Twitter的账号直接登录?已经有很多啦!
此时此刻,在线身份认证的整个形势可能看起来像期待中东和平一样不现实。然而,在面对一个棘手问题的时候,你就是这样应对的吗——把手一甩,不假思索就接受现状,还懒懒地说“这能有什么办法啊”?
有些人就是这样子的。这是他们的权力。我个人更喜欢做一点改变,并且从自己做起。这意味着,我们在Stack Overflow和Stack Exchange网站上都极力推广“互联网驾驶证”这个概念,必要时还会对用户进行宣传教育。
让我们来举一个银行ATM机的例子。为了使用它,我需要在上海浦东发展银行注册一个账号吗?不需要。只要这台机器支持,我可以使用任何第三方的可信凭证。
相似地,为了登录Stack Exchange网站(包括Stack Overflow),你只须拿出你的“互联网驾驶证”——你的OpenID或者与OAuth 2.0兼容的证件。
在创办Stack Overflow之初,我们设立了明确的使命,那就是要让互联网变得更好。然而,增加一对毫无意义的用户名/密码有违我们的初衷。为了让互联网变得更加美好,我们唯有坚持不懈地追求更好的、更简单的、可以重复使用的第三方在线证件。这也是为什么我要敦促大家加入我们的阵营,一起来支持OpenID、OAuth 2.0以及任何其他有前景的“互联网驾驶证”的实现形式。