ZT0iT0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5j
PTAwMDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5vcmciLHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNoYXJzZXQ9dXRmLTgK 解码响应是:
username=\ nonce=\ nc=00000001,qop=auth,digest-uri=\ response=d388dad90d4bbd760a152321f2143af7,charset=utf-8 步7:Server2发送另一个[BASE64]编码挑战给Server1:
rspauth=ea40f60335c427b5527b84dbabcdfffd 步7(替换):Server2返回错误给Server1:
步10:Server1初始化一个新流给Server2: xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams' to='example.com' version='1.0'> 步11:Server2通过发送一个流头响应Server1,并伴随着其它特征(或空特征元素): xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='example.com' id='s2s_345' version='1.0'> 7.资源绑定 接收实体SASL协商(6)之后,初始实体可能想要或是需要绑定一个特殊资源至那个流。普通的,这仅用于客户端:为了遵从在此指定的寻址格式(3)与节传 送规则(10),必须有一个资源标识符联合客户端的 根据在SASL协商中接收的一个成功指示,客户端必须发送一个新流头给服务器,服务器必须用可利用流特征列表中的内容来响应。特别的,如果服务器需要客户 端在SASL成功协商后,将资源绑定到流上,它必须包括一个由在流特征列表中的 'urn:ietf:params:xml:ns:xmpp-bind'命 名空间限定的空 服务器广告资源绑定特征给客户端: xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='c2s_345' from='example.com' version='1.0'> 根据这样的通知,资源绑定是需要的,客户端必须靠送给服务器一个包含由'urn:ietf:params:xml:ns:xmpp-bind' 命名空间限定的,类型“set”(参考IQ语义(9.2.3))的IQ节,将资源绑定到流上。 如果客户端希望允许服务器代表自己产生资源标识符,它发送一个类型“set”的IQ节,包含一个空 客户端请求服务器绑定资源: 支持资源绑定的服务器必须能代表一个客户端产生一个资源标识符。由服务器产生的资源标识符必须对 客户端绑定一个资源: 一旦服务器为客户端产生了一个资源标识符或是接受了由客户端提供的资源标识符,它必须返回一个类型为“result”的IQ节给客户端,必须包含一个 服务器通知客户端成功资源绑定: 服务器应当接受由客户端提供的资源标识符,但可能用一个服务器产生的资源标识符覆盖它;在这种情况,服务器不应当返回一个节错误 (例: 当客户端提供一个资源标识符,以下节错误条件是可能的(参考节错误(9.3)): 1) 提供的资源标识符不能被与Resourceprep(附录B)一致的服务器处理。 2) 客户端不允许绑定资源到流上(例:因为结点或用户已经达到了在被允许的连接的资源的数目)。 3) 已提供资源标识符已经使用,但服务器并不允许用同样的标识符绑定多连接资源。 用于这些错误条件的协议显示如下。 资源标识符不能被处理: