InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

使用OpenID、OAuth和Facebook Connect武装你的站点

作者 胡键 发布于 2009年4月24日

领域
企业架构,
架构 & 设计,
语言 & 开发
主题
OpenID ,
SOA ,
Web 2.0 ,
认证管理 ,
架构 ,
企业架构 ,
安全 ,
Facebook

如果你正在盘算着如何为你的新网站创建身份管理系统(通常也称为用户管理系统或权限管理系统)的话,在动手之前你一定要看看Dion Hinchcliffe写的这篇题为《现代Web身份:为什么你的Web应用应该支持OpenID、OAuth,以及可能应该支持Facebook Connect》的文章,你或许会在读完之后改变你的主意。在他看来,使用这些新一代Web身份管理系统是完成这一工作更快的做法,而且功能更强且更好。他认为通过这种方法:

  • 可以更容易、更快捷和更安全地让使用者在你的站点建立他们身份。
  • 可以让业务可以单点登录到你的应用。
  • 把你的站点转变成为一个针对于第三方应用的平台,让这些应用可以安全地访问用户数据。
  • 可以将你的站点或应用集成到使用者及其关系网的社交体验(social experience)中。

在简要回顾企业单点登录和Web身份管理的历史之后,Dion给出了当今实现Web单点登录的新思路:使用OpenIDOAuth和(可选的)Facebook Connect

OpenID

OpenID背后的想法其实很简单:

让使用者在登录你的应用时使用自己选择的身份提供商,而不是让他们去填写一个在线表格,然后把这些信息捕获到使用者不可能信任或不长期信任的私有本地账户中。

由此,OpenID为使用者提供了一种访问新站点更简单的方法(还记得上次为了下载一份资料,而不得不在那个站点上注册一个你自己也知道以后可能再也不会使用的账户么?:))。Dion把OpenID的好处总结为:

  • 更快、更简单的登录,因为消除或简化了注册过程。
  • 更好的登录过程和生命周期,因为用户从此只需使用一个ID和口令。
  • 一致的Web身份,因为ID的统一,让其他人通过这个ID就可将之与实际的用户划上等号。

使用OpenID并不要求使用者有什么改变,事实上,很多使用者很可能本身就已经有了一个OpenID,而他自己却还不知道。看看支持OpenID的提供商列表,开始你的OpenID使用之旅吧。

既然支持OpenID显然会给网站带来更大的流量,那么支持它当然是势在必行。其方式不外乎自己动手实现规范,或利用现成类库两种。这样的类库并不难找,因为目前的主流语言都已经有了相应的OpenID库

值得注意的是,支持OpenID并不意味着站点或应用就放弃了对用户信息的收集,在这种情况下它们依旧可以捕获一些使用者相关的信息,只不过这些信息是在OpenID的上下文中,而不是使用者不想给出的口令或其他保密信息。

OAuth

为站点提供编程接口可以让其知名度更上层楼,然而在流量增加的同时,站点面临的安全压力也在同比增长。OAuth正是该背景下的产物,它可以让第3方应用安全使用你的站点数据。说到使用OAuth来保护API的好处,Dion列举如下:

  • 安全、保密的第3方数据访问
  • 对于第3方访问的控制是声明性的
  • 大量第3方应用的使用将有助于推动本地站点的使用

和OpenID一样,在主流语言中你同样可以找到对OAuth的支持。对于有兴趣了解OAuth规范的读者则可以参考这里

Facebook Connect

和以上两个都是开放标准不同,Faccebook Connect是一个私有标准。至于选择它的原因,Dion给出的解释是“缺乏开放、被广泛的社交身份系统,而该类系统的影响却越来越大。”。同时,他还援引了Facebook的数据:

对大多数站点来讲,“2/3的新注册是通过Facebook Connect来的,而且这些使用者大约有一半以上都开始使用这些站点”。

Dion以自己为例对Facebook Connect的使用效果进行了说明:

例如,我经常使用一个视频共享站点Vimeo,但我的很多朋友并不使用,甚至没有那里的账户。但是,在我发布视频的时候,通过显示我视频的Facebook Connect链接,他们可以在自己的活动流(activity stream)中看到我在Vimeo上做的事情。然后,他们可以决定是否观看这个视频,或者是访问Vimeo。

Facebook Connect的功能和优点如下:

  • 一键登录,使用者可以使用自己的Facebook身份并让你的站点访问他们的Facebook信息。
  • 更多的参与,利用使用者个人兴趣来提供更具针对性的信息,交付朋友自己定制的内容。
  • 新的分发模型,通过Facebook上的活动流或其他社交渠道,使用者可以和Facebook上的联系人分享内容和发生在你站点上的行动。
  • 直接访问Facebook,使用该API,可以让超过70万的开发者构建大量应用。

Facebook Connect的使用并不复杂,因为它本身就是一组Javascript库和XML标记,关于它的使用可以参考Dion给出的入门指南

幸运的是,这3种工具并非排他的。完全可以结合使用,Dion在文中给出了结合使用OpenID和OAuth的例子:Step2项目。您是否已经建立您的站点,是否考虑开放您网站的API,是否考虑拥抱Facebook?那么Dion Hinchcliffe的这篇文章绝对应该在你的阅读范围之列。

胡键 热心开源技术,《开源技术选型手册》作者,《SOA实践指南》译者。目前致力于Groovy/Grails的研究和推广。

用户沉淀 发表人 shi andy 发表于
  1. 返回顶部

    用户沉淀

    发表人 shi andy

    使用了openid,意味着用户沉淀收到影响。网站缺少了用户沉淀,恐怕也是很多网站不愿使用的原因吧。