Archive for December 11th, 2008

Tips to create your own OpenID

这是一篇修改过的blog,以前写的有错误(划线的为错误内容,大括号中为更新的内容),文章就不删除了,写点简单介绍吧:

“OpenID是一个单点登录的标准,它允许用户使用同一个“数字验证”去登录众多的网络服务”,这是来Wikipedia的描述。简而言之,有了OpenID,我们就可以使用一个类似网址的标示来登录网站,考虑如下的情况:

每每你中意一个ID,却发现已经有人捷足先登,把这个ID注册了,你只能注册类似foobar1234,foobar2008这样的很尴尬的账号,很是郁闷。还有,有一天你会发现注册了太多的账号,以至于你都想不起来你的账号名或者密码来了。

这些的问题OpenID都可以解决,它通过委托机制将目标网站的验证委托给一个OpenID服务网站,你可以Google OpenID查询更多信息,此处不在赘述。本问介绍一下如果用同一个域名创建多个OpenID,比如:

http://charry.org/openid 这个是我的御用OpenID,绑定到 https://charry.pip.verisignlabs.com,但是我还可以使用:

http://charry.org/openid2
http://charry.org/openid3

等标示。方法异常简单:

只要在http://charry.org 的首页面中判断被请求的路径是什么,如果是/openid就转向到 /openid,如果是/openid2就转向/openid2,如:

Header(“Location: http://charry.org/openid”);

{只要在根目录下创建多个目录,比如/openid, /openid2, /openid3,很多文章介绍,要在网站根目录所在的页面中加入OpenID的信息,其实有些误导,没有必要,诸如:http://charry.org/openid 这样的URL也可以作为OpenID,并非一定要http://charry.org 这样的URL。这样的话,我们就可以建立多个OpenID的URL了,理论上OpenID是为了解决登录账号过多的问题,我们有必要搞这么多的OpenID吗?其实这么做,是因为很多国外的OpenID服务商,比如VeriSignLabs,在国内访问起来很慢,所以常会导致无法登录的问题。所以我们可以建立两个OpenID,一个用于登录国外的网站(使用国外的OpenID服务商),一个用于登录国内的网站(使用国内的OpenID服务商)。}

拿其中一个URL做例子(/openid),只要在/openid下的页面中加入OpenID的信息:

<link rel=”openid.server” href=”http://pip.verisignlabs.com/server” />
<link rel=”openid.delegate” href=”http://charry.pip.verisignlabs.com/” />
<link rel=”openid2.provider” href=”http://pip.verisignlabs.com/server” />
<link rel=”openid2.local_id” href=”http://charry.pip.verisignlabs.com/” /

这样你登录的网站将会把 http://charry.org/openid 作为OpenID绑定。

目前支持OpenID的网站还不多,虽然此方法可以解决我们的一些烦恼,但我们还要等待它的普及,好在很多大的网站已经开始支持它了,比如Blogger,sf.net,yupoo.com等。

See also:http://en.wikipedia.org/wiki/OpenID