RFC: 3920
Оригинал: Extensible Messaging and Presence Protocol (XMPP): Core
Другие версии: RFC 6120
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: Семенов Юрий Алексеевич

5.4. Пример сервер-сервер

Следующий пример показывает поток данных для двух серверов, обеспечивающих безопасность с помощью STARTTLS (заметим: альтернативные шаги, показанные ниже, приведены для иллюстрации работы протокола в случаях сбоев; они не являются обязательными).

Шаг 1: Сервер1 инициирует поток в серверу2:

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

Шаг 2: Сервер2 откликается посылкой тэга потока Серверу1:

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

Шаг 3: Сервер2 посылает расширение STARTTLS Серверу1 вместе с данными о механизме аутентификации и любыми другими возможностями потока:

<stream:features>
  <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'>
    <required/>
  </starttls>
  <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
    <mechanism>DIGEST-MD5</mechanism>
    <mechanism>KERBEROS_V4</mechanism>
  </mechanisms>
</stream:features>

Шаг 4: Сервер1 посылает команду STARTTLS Серверу2:

<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

Шаг 5: Сервер2 информирует Сервер1 о том, что он может продолжать работу:

<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

Шаг 5 (alt): Сервер2 информирует Сервер1 о том, что согласование применения TLS не прошло и поток закрывается:

<failure xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
</stream:stream>

Шаг 6: Сервер1 и Сервер2 пытаются завершить согласование применения TLS через TCP.

Шаг 7: Если согласование TLS прошло успешно, Сервер1 формирует новый поток к Серверу2:

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

Шаг 7 (alt): Если согласование TLS не прошло, Сервер2 закрывает TCP-соединение.

Шаг 8: Сервер2 откликается посылкой заголовка потока Серверу1 вместе с данными о доступных возможностях потока:

<stream:stream
    xmlns='jabber:server'
    xmlns:stream='http://etherx.jabber.org/streams'
    from='example.com'
    id='s2s_234'
    version='1.0'>
<stream:features>
  <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
    <mechanism>DIGEST-MD5</mechanism>
    <mechanism>KERBEROS_V4</mechanism>
    <mechanism>EXTERNAL</mechanism>
  </mechanisms>
</stream:features>

Шаг 9: Сервер1 продолжает согласование применения SASL (раздел 6).

2007 - 2017 © Русские переводы RFC, IETF, ISOC.