上次将i-name和domain name作比较并不是很恰当,i-name只是XRI的一种表现形式。domain name终结于ip,而XRI终结于URL。XRI通过XRDS解析文档来获取所有需要的URL,我们所关心的正是它们。
为了得到XRDS的具体内容,我们可以使用XRI解析器也就是xri.net来进行一次带参数的查询
http://xri.net/=my?_xrd_r=application/xrd%2Bxml_xrd_r参数告诉解析器返回一个xrd+xml类型的文档。这里有很多Service小节,默认情况下,2idi的i-name都有OpenID、contact page和forwarding三种服务终点----Service End Point。2idi提供了一个试验性的功能,让我们可以手动修改XRDS,登录后在Services的SEP子栏目中可以找到。注意这是一个非常简单的入口,没有任何的撤销或者恢复默认的命令,除非你对XRDS很熟悉,否则在修改之前,最好用上面那个连接将原始的文档下载下来备份。
首先为了让FoXRI看起来更酷,我加入Skype:
<xrd:service>一般情况下,当访问根=my的时候,xri.net从XRDS中查询到forwarding服务,并把控制权交给此小节中的URL,这里是2idi,2idi转向服务查询XRI中的子键准备提交新的URL,在没有任何子键的情况下,2idi自动给出contact page的URL。我希望=my能指向一个更有意义的地址,在那里我可以再次链接包括contact page在内的诸多服务,于是
<xrd:path xrd:select="true">
(+call)
</xrd:path>
<xrd:uri xrd:priority="1" xrd:append="none">
skype:m.yang?call
</xrd:uri>
</xrd:service>
<xrd:Service xrd:priority='1'>一个简单的跳转节就完成了这个功能,无需对Type、MediaType及Path进行定义。但注意为了同时保持forwarding,此处Service的优先级必须比forwarding节的高,就是更小的priority,我设置为1(所有priority的值都建议分散设置,类似当年BASIC中的行号,以10、20、30......的方式设置,这样便于将来的维护)。
<xrd:Type xrd:match='null'/>
<xrd:Path xrd:match='null'/>
<xrd:URI xrd:priority='1' xrd:append='none'>
http://yangming.info/
</xrd:URI>
</xrd:Service>
根据YADIS,理论上将OpenID委派出去应该这么干:
<xrd:service>保存后xrd:openid:Delegate部分被自动删除了,如果不加xrd:的话2idi又会提示缺少xrd命名空间,遍历整个openid.net邮件列表也没有找到有关的信息,只能推测2idi不支持此功能。看来转移OpenID的计划还是暂时失败了。
<xrd:type xrd:select="true">
http://openid.net/signon/1.0
</xrd:type>
<xrd:uri xrd:priority="1" xrd:append="none">
http://www.myopenid.com/server/
</xrd:uri>
<xrd:openid:Delegate>
http://ym.myopenid.com/
</xrd:openid:Delegate>
</xrd:service>
把戏中的把戏:在没有Delegate元素的情况下,用=my登录OpenID会转到认证my.myopenid.com,也就是说如果你的i-name和在MyOpenID的注册名一样的话,那么上面的方法就足够了,可惜my.myopenid.com已经被注册了。
没有评论:
发表评论