简单说下MSN是如何支持XMPP的

MSN目前只是部分支持XMPP,主要是登录,和已有的好友聊天,查看好友名片,它的原理大致如下:
1. 第三方XMPP客户端先申请一个客户号,这代表第三方应用本身。
2. 客户端让用户使用Oauth2.0机制来登录MSN帐号(和新浪微博一样),登录成功MSN服务器返回给客户端一个令牌
3. 客户端使用XMPP协议去连接messenger.live.com(SRV记录)或xmpp.messenger.live.com(A记录)的5222端口,连接必须使用SSL,验证机制采用X-MESSENGER-OAUTH2和SASL,使用步骤2得到的令牌去MSN的XMPP服务器验证身份,而不是使用传统的JID帐号和密码
常用的SASL验证过程如下

S: <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
      <mechanism>PLAIN</mechanism>
    </mechanisms>
    <c hash="sha-1" node="http://www.process-one.net/en/ejabberd/" ver="k87......lysI=" xmlns="http://jabber.org/protocol/caps">
    <register xmlns="http://jabber.org/features/iq-register" />
C: <auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">aGVscGRl......uLA==</auth>
S: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />

msn的XMPP服务的SASL验证过程如下

S: <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
     <mechanism>X-MESSENGER-OAUTH2</mechanism>
    </mechanisms> 
C: <auth mechanism="X-MESSENGER-OAUTH2" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">EwAgAq1DBAAUlb......xHJQAAA%3d%3d</auth>
S: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />


4. 从messenger.live.com验证成功后,MSN的XMPP服务器返回一个JID给客户端,这个JID不同于用户的MSN帐号,而是服务器分配的一个JID(用户使用同一MSN帐号登录,XMPP服务器仍会分配同一个JID给他),这个JID的格式为"xxxxxxxxxxx@messenger.live.com"
常见的资源绑定方式,jid是SASL时已经提供了的,客户端向服务器提出一个资源申请,服务器一般照准,返回完整的jid

C: <iq id="rm2876_77" type="set">
     <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
      <resource>Rooyee</resource>
     </bind>
    </iq>
S: <iq id="rm2876_77" type="result">
     <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
      <jid>helpdesk@jabbercn.org/Rooyee</jid>
     </bind>
    </iq>

msn的XMPP的资源分配过程,不管客户端申请了什么资源,服务器只管返回自己认定的全jid

C: <iq id="rm2876_41" type="set">
     <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
      <resource>Rooyee</resource>
     </bind>
    </iq>
S: <iq id="rm2876_41" type="result">
     <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
      <jid>26......5c@messenger.live.com/{ad......d}</jid>
     </bind>
    </iq>


撰写本文的这个时候. 微软的XMPP服务只支持部分的RFC6120和RFC6122(不支持好友列表管理),支持vCard(XEP-0054,不支持管理vCard),支持聊天状态通知(XEP-0085),支持延迟发送(http://xmpp.org/extensions/xep-0203.html)
另外,由于目前还是beta阶段,MSN的XMPP服务器很不稳定,经常登不上
参考:http://msdn.microsoft.com/en-us/windowslive/hh528487

推荐到豆瓣

搜集XMPP服务器软件

现在开始搜集XMPP服务器软件的信息,大家可以把我的 helpdesk@jabbercn.org 加为好友来告知,或进入 "XMPP中文翻译计划@group.rooyee.im" 群来告知( 如何加入群),我的email地址也是 helpdesk@jabbercn.org

推荐到豆瓣

搜集XMPP客户端软件

现在开始搜集XMPP客户端软件的信息,大家可以把我的 helpdesk@jabbercn.org 加为好友来告知,或进入 "XMPP中文翻译计划@group.rooyee.im" 群来告知( 如何加入群),我的email地址也是 helpdesk@jabbercn.org

推荐到豆瓣

linyu19872008开启了XEP-0016的翻译工作

linyu19872008 开启了 XEP-0016 一文的翻译工作

推荐到豆瓣