XMPP 3920 最靠谱的中文翻译文档 下载本文

步2:服务器使用一个流标记作为响应发送给客户端:

xmlns='jabber:client'

xmlns:stream='http://etherx.jabber.org/streams' id='c2s_234' from='example.com' version='1.0'>

步3:服务器通知客户端可利用的认证机制:

DIGEST-MD5 PLAIN

步4:客户端选择一个认证机制:

步5:服务器发送一个[BASE64]编码挑战给客户端:

xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> cmVhbG09InNvbWVyZWFsbSIsbm9uY2U9Ik9BNk1HOXRFUUdtMmhoIixxb3A9ImF1dGgiLGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNzCg==

解码挑战是:

realm=\ qop=\步5(替换):服务器返回错误给客户端:

步6:客户端发送一个[BASE64]编码响应挑战:

dXNlcm5hbWU9InNvbWVub2RlIixyZWFsbT0ic29tZXJlYWxtIixub25jZT0i T0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5jPTAw

MDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5jb20i LHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNoYXJzZXQ9dXRmLTgK

步7:服务器发送另一个[BASE64]编码挑战给客户端: cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZAo= 解码挑战是:

rspauth=ea40f60335c427b5527b84dbabcdfffd 步7(替换):服务器返回错误给客户端:

步8:客户端响应挑战:

步9:服务器通知客户端认证成功:

步9(替换):服务器通知客户端认证失败:

步10:客户端初始化一个新流给服务器:

xmlns='jabber:client'

xmlns:stream='http://etherx.jabber.org/streams' to='example.com' version='1.0'>

步11:服务器通过发送流头来响应客户端,伴随有任意另外的特征(或空特征元素):

xmlns='jabber:client'

xmlns:stream='http://etherx.jabber.org/streams' id='c2s_345' from='example.com' version='1.0'>

6.6服务器到服务器的例子

以下例子显示服务器与服务器使用SASL认证的数据流,正常情况下,是在TLS协商之后(注:以下可替换步骤是由失败情况提供的;他们不是详尽的也不是必要的由数据发送而触发)。

步1:Server1初始化流给Server2:

xmlns='jabber:server'

xmlns:stream='http://etherx.jabber.org/streams' to='example.com' version='1.0'>

步2:Server2发送一个流标记响应Server1:

xmlns='jabber:server'

xmlns:stream='http://etherx.jabber.org/streams' from='example.com' id='s2s_234' version='1.0'>

步3:Server2通知Server1可利用的认证机制:

DIGEST-MD5 KERBEROS_V4

步4:Server1选择一个认证机制:

步5:Server2发送一个[BASE64]编码挑战给Server1: cmVhbG09InNvbWVyZWFsbSIsbm9uY2U9Ik9BNk1HOXRFUUdtMmhoIixxb3A9 ImF1dGgiLGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNz 编码挑战是:

realm=\ qop=\步5(替换):Server2返回错误给Server1

步6:Server1发送[BASE64]编码响应挑战:

dXNlcm5hbWU9ImV4YW1wbGUub3JnIixyZWFsbT0ic29tZXJlYWxtIixub25j