您的位置:首页 > 理论基础 > 计算机网络

OpenID让网络身份变得真实而且诱人

2007-04-27 11:33 295 查看
当我坐下来听Verisign以及EastMedia的小伙子们讲述PIP(PersonalIdentificationProvider)和Rails整合的时候,我就爱上了OpenID这个想法,但是我从来没有真正的花时间来研究它。我是这么想的:“有多个帐号登录有多大事呀?”。对于大多数人来说,答案仍然是“没多大事”。但是我已经看到了OpenID应用的曙光。

昨天,我花了几个小时阅读了使用OpenID登录的细节,并且在Highrise里面将其实现。这个让我眼界打开。不光是认识到了OpenID作为另外一个登录方式是多么的简单,更重要的,我认识到了这个流程事实上是多么的合乎情理的。

是的,OpenID确实需要重新导向另外一个网站,但是只要你把一个站点的登录信息存储在OpenID里面,而且登录到你本机的PIP里面,你就再也不会看到重新导向了。一开始,这个可能看起来很可怕。不需要输入密码就可以登录到一个网站?但是再次提醒一下,这基本上和我通过SSHKeychain在世界上任何一个地点来获得我的应用程序服务器的授权,以及所有提供“rememberme”选项的网站基本相同。

这里仍然有一些问题需要解决。最主要的就是phishing诈骗的问题。但是聪明人都是在很勤奋工作的,我确定我们肯定会想到更聪明的解决方案。我不认为这个问题和其他的未知性会有足够的理由阻止OpenID的应用。

我们现在需要的就是采纳OpenID.幸运的是,OpenID看起来已经引起了很多新创业公司以及业界巨头的注意。在后面一类里面比较引人注目的就是AOL(美国在线)最近刚刚为每个AIM用户提供一个OpenID。每个帐号对应的OpenID链接就是http://openid.aol.com/<screenname>.这个解决方案的简单性就是让我今天开始实现OpenID功能的部分动力。不需要申请任何新东西就能使用OpenID有很大的作用,最起码方便它的起步。

让它变的简单到什么都不用做一样
现在我们理论上有几百万AIM的用户拥有了OpenID的帐号。太好了。现在他们只需要有一两个地方可以真正用到OpenID.这就是技术起到作用的地方。软件工具箱。也就是“让它变的简单到什么都不用一样”。虽然现在已经有很多为Ruby设计来实现这个功能的生成器,但是我总体上对生成器或者类似的需要学习如何使用或者设置规范的工具不大感冒。我更喜欢试着去找到一个简单到不费吹灰之力就可以使用的智能API。

今天我使用Ruby的第一个尝试被列在下面(没多久我就会把它封装成一个插件):

classSessionController<ApplicationController

includeOpenIdAuthentication

defcreate

ifopen_id?(params[:name])

open_id_authentication(params[:name])

else

password_authentication(params[:name],params[:password])

end

end


private

defpassword_authentication(name,password)

if@current_user=

@account.users.find_by_name_and_password(name,password)

successful_authentication

else

failed_authentication"Sorry,thatusername/passworddoesn'twork"

end

end

defopen_id_authentication(identity_url)

authenticate_with_open_id(identity_url)do|status,identity_url|

casestatus

when:missing

failed_authentication"Sorry,theOpenIDservercouldn'tbefound"

when:canceled

failed_authentication"OpenIDverificationwascanceled"

when:failed

failed_authentication"Sorry,theOpenIDverificationfailed"

when:successful

if@current_user=

@account.users.find_by_identity_url(identity_url)

successful_authentication

else

failed_authentication"Sorry,nouserbythatidentityURLexists"

end

end

end

end

end


你额外需要做的就是实现successful_authentication这个负责创建会话和重新导向到这个应用的过程/函数;以及failed_authentication这个负责弹出提示错误的flash信息和重新导向到登陆界面。params[:name]这个参数既可以是一个常规的用户名,也可以是一个OpenID的用户名。我通过判断输入变量是否看着像URL(以http开头)来决定输入的是哪一种。底层的验证机制被委托给ruby-openid的类库。

这段代码仍然只是半成品。它只实现了授权的部分,而不是生成新帐号和获得额外属性的部分。但是它毕竟是一个开始,我为之而激动。

我真心相信OpenID有很大的可能性会变的真实而且使用,即使是对那些仅仅听到“授权”这个术语就要打哈欠的人。这个不会一夜就能发生,而且除了我们都加入进来,贡献自己的微薄之力,这一天肯定不会到来。今天这些实现的东西已经开了一个很好的头。同志们,少找借口,多干实事。

如果我这一番推销还不能让你对OpenID感兴趣,我推荐你去看ScottKveton的文章。然后去消化SimonWillison的关于OpenID的讲座以及他的“用OpenID实现六个酷功能”的文章。

如果这还不能打动你,那请考虑Firefox3将要自动带有对OpenID的支持,而且微软也在同一条船上。突然之间,一个OpenID在所有网站运用的未来变的非常的现实。

原文链接:http://www.loudthinking.com/arc/000604.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: