CommuniGate Pro
Версия 6.0
Доступ
 
 
XIMSS

XIMSS Модуль

В XIMSS модуле CommuniGate Pro реализован открытый протокол XIMSS. Этот протокол поддерживает прогрессивных клиентов, позволяя им получать доступ к функциям Сервера эффективным и безопасным образом.

XIMSS модуль CommuniGate Pro поддерживает как незашифрованные, так и безопасные (SSL/TLS) соединения.

Полное описание протокола и его возможностей смотрите в разделе XIMSS протокол.

Использование XIMSS модуля CommuniGate Pro требует специального Лицензионного Ключа для групповой работы или специального Лицензионного Ключа XIMSS. Без таких Ключей Сервер будет обслуживать до 5 одновременных XIMSS сессий.

Конфигурирование XIMSS Модуля

Для того, что бы настроить параметры XIMSS модуля, используйте Веб Интерфейс Администратора. Откройте страницу Доступ в разделе Установки:
Обработка
Уровень Журнала: Каналы: Приёмник

Используйте эту настройку для того, что бы указать, какую информацию XIMSS модуль должен сохранять в Журнале работы Сервера. Обычно используется уровень Основные (отчёты о передаче сообщений) или уровень Проблемы (передача сообщений и не фатальные ошибки). В случае, если в работе XIMSS модуля возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня Подробности или Всё: в этом случае в Журнал работы Сервера будет записываться также более подробная информация о работе модуля на уровне протокола или на уровне ссылок. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.

Записи, помещённые XIMSS модулем в Журнал работы Сервера, имеют пометку XIMSSI.

Когда вы указываете ненулевое значение в настройке Максимальное число Каналов, XIMSS Модуль создаёт так называемый Приёмник. Модуль начинает принимать все XIMSS соединения, которые устанавливают клиенты для того, что бы взаимодействовать с вашим Сервером. Эта настройка используется для того, что бы ограничить число одновременных соединений, которое может принимать XIMSS модуль. Если открыто предельное число соединений, то модуль будет отказывать в приёме новых соединений. В этом случае клиентские приложения должны попытаться соединиться позднее.

По умолчанию, Приёмник XIMSS модуля принимает незашифрованные соединения на TCP порт 11024. Нажмите на ссылку Приёмник для того, что бы настроить порт Приёмника XIMSS.


XIMSS Соединения с Другими Модулями

XIMSS соединения могут устанавливаться с TCP портами, обслуживаемыми другими модулями CommuniGate Pro. Если в соединении, установленном с HTTP модулем, первым полученным символом будет <, то HTTP модуль передаёт соединение в XIMSS Модуль.

При передаче соединения:

Если все пользователи устанавливают XIMSS соединения через порты других Модулей, то вы можете отключить Приёмник XIMSS, обнулив значения портов.


Безопасность Flash Клиентов

Когда Flash клиент соединяется с XMLSocket сервера (таким, как XIMSS модуль CommuniGate Pro), он может отправить специальный запрос policy-file-request (запрос файла политики). XIMSS модуль направляет в ответ XML документ, позволяющий клиенту получать доступ к любому порту Сервера.


Сессии XIMSS

Когда пользователь аутентифицирован, XIMSS модуль создаёт XIMSS сессию. Для взаимодействия с этой сессий может использоваться текущее TCP соединение XIMSS модуля.

Сессия XIMSS может быть создана и вне XIMSS модуля, используя специальные запросы, отправляемые HTTP User модуль. Дополнительную информацию смотрите в разделе XIMSS Протокол.

Записи о XIMSS сессии, помещаемые в Журнал работы Сервера, имеют пометку XIMSS.


HTTP Привязка

Клиентское приложение может работать с XIMSS интерфейсом через HTTP соединения.

Для создания новой XIMSS сессии, клиентское приложение должно отправить HTTP запрос на Вход.

Когда XIMSS сессия создана, клиентское приложение может отправлять в неё запросы XIMSS протокола и получать ответы XIMSS протокола используя HTTP запросы.

Клиентские приложения могут использовать HTTP запросы GET и POST.
Если запрос содержит тело, то подразумевается, что оно является XML текстом, независимо от действительного значения поля заголовка Content-Type. XML текст должен быть элементом <XIMSS/>.
Если в результате запроса создаётся непустое тело ответа, то это тело всегда является XML текстом, в котором содержится один элемент <XIMSS/>, а полем заголовка Content-Type является text/xml.

HTTP Вход

Для начала XIMSS сессии, клиентское приложение должно отправить HTTP запрос в HTTPU модуль CommuniGate Pro используя слудующие URL:

http://domainName[:port]/ximsslogin/
или
https://domainName[:port]/ximsslogin/

Если в запросе содержится параметр userName, то Сервер пытается аутентифицировать указанного Пользователя.
Если присутствует параметр password, то используется обычный незашифрованный метод.
Если присутствует параметр sessionid, то используется метод
SessionID.

Если параметр userName отсутствует, то Сервер пытается аутентифицировать запрос, используя TLS Сертификат Клиента (если он задан) или используя методы аутентификации HTTP.
Эта функциональность аналогична используемой в Веб Интерфейсе функциональности Автоматического Вход и Единого Механизма Входа, но здесь используется URL /ximsslogin/.

Если пользователь был успешно аутентифицирован и XIMSS сессия была успешно создана, то в ответе на запрос HTTP Входа содержится сообщение session со строкой-идентификатором сессии. Обратите внимание на то, что сообщение session не содержит атрибута id.

Пример:
C:GET /ximsslogin/?userName=account@domain&password=abcd HTTP/1.1
  Host: myserver.com
  Content-Length: 0

S:HTTP/1.1 200 OK
  Content-Length: 105
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS><session urlID="562-kAI2lxNBR4ApmHg4wiW9" userName="account@domain" realName="J. Smith" /></XIMSS>

Запрос на URL /ximsslogin/ может содержать text/xml тело. В этом случае, операция входа не выполняется.
XML тело должно содержать один элемент <XIMSS>, содержащий, в свою очередь, одну или несколько XIMSS операций, Предшествующие Входу. Сервер отправляет HTTP ответ с XML данными. Ответом является элемент <XIMSS>, содержащий результаты выполнения затребованных операций.

Пример:
C:GET /ximsslogin/ HTTP/1.1
  Host: myserver.com
  Content-Type: text/xml
  Content-Length: 42

  <XIMSS><listFeatures id="list" /><XIMSS>

S:HTTP/1.1 200 OK
  Content-Length: 231
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS><<features id="s" domain="x.domain.dom"><starttls/><sasl>LOGIN</sasl><sasl>PLAIN</sasl><sasl>CRAM-MD5</sasl><sasl>DIGEST-MD5</sasl><sasl>GSSAPI</sasl><language>german</language><signup/></features><response id="s"/></XIMSS>

Альтернативный URL может использоваться для начала сессии XIMSS посредством TLS Сертификат Клиента или посредством другиех методов аутентификации HTTP:

http://domainName[:port]/auth/ximsslogin/
или
https://domainName[:port]/auth/ximsslogin/

Этот метод полезен если приложение сначала получает HTML страницу или некоторый другой документ, используя /auth/ область, заставляя браузер запросить полномочия клиента, а затем приложение создаёт XIMSS сессию для этого же пользователя, так как браузер переотправит эти же полномочия при отправке запроса на URL /auth/ximsslogin/.

Синхронные Коммуникации по HTTP

Клиент должен направлять в созданную XIMSS сессию запросы, используя следующие URL:

http://domainName[:port]/Session/sessionID/sync
или
https://domainName[:port]/Session/sessionID/sync
где sessionID является атрибутом urlID сообщения session.

Тело HTTP запроса должно содержать один элемент <XIMSS /> с ноль, одним или более запросами XIMSS протокола.

Сервер возвращает один элемент <XIMSS /> в теле HTTP ответа. Этот элемент содержит сообщения response XIMSS протокола (одно для каждого отправленного XIMSS запроса, в том же порядке); все синхронные сообщения данных созданы в ответ на переданные XIMSS запросы.

Пример:
C:POST /Session/562-kAI2lxNBR4ApmHg4wiW9/sync HTTP/1.1
  Host: myserver.com
  Content-Length: nnn

  <XIMSS><noop id="i1" /><readTime id="i2" /></XIMSS>

S:HTTP/1.1 200 OK
  Content-Length: nnn
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS><response id="i1"/><currentTime id="i2" gmtTime="20070502T083313" localTime="20070502T003313"/><response id="i2"/></XIMSS>

Клиентское приложение может использовать "пустой запрос" (HTTP запрос без тела) для того, что бы прочитать асинхронные сообщения данных XIMSS.

При получении такого пустого запроса, Сервер проверяет наличие ожидающих асинхронных сообщений данных для указанной сессии. Если асинхронные сообщения данных отсутствуют, то запрос удерживается до наступления одного из следующих событий:

Пустой запрос может задавать время ожидания в параметре maxWait (число секунд).

Если сообщения данных не были получены, то Сервер отправляет ответ с пустым элементом <XIMSS/>, без каких-либо атрибутов.

Если были получены какие-либо сообщения данных, то Сервер отправляет ответ ("асинхронный ответ"), содержащий один элемент <XIMSS/> с атрибутом respSeq. Этот атрибут содержит последовательный номер для этого элемента <XIMSS/> ответа.

Сервер хранит последний "асинхронный ответ", сформированный для каждой сессии.

Каждый пустой запрос должен содержать параметр ackSeq. В нём должно находится значение respSeq из последнего полученного асинхронного ответа.

Если клиент не получал еще никаких асинхронных ответов, то этот значение этого параметра должно быть 0.

Когда Сервер получает пустой запрос со значением ackSeq равным значению respSeq последнего хранимого сформированного асинхронного ответа, то он рассматривает этот запрос как "подтверждение" и удаляет его.

Когда Сервер получает пустой запрос со значением ackSeq равным значению respSeq последнего хранимого сформированного асинхронного ответа, уменьшенного на единицу (respSeq-1), и последний сформированный ответ все еще хранится, то Сервер отправляет этот ответ клиенту повторно. В результате, если клиент сталкивается с ошибкой при передаче во время выполнения HTTP транзакции "пустого запроса", то он может отпраить пустой запрос повторно.

Пустой запрос без параметра ackSeq подтверждает, что все "асинхронные ответы" сформированы и хранятся.

Пример:

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=0 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

...optional pause (up to 90 seconds)...
S:HTTP/1.1 200 OK
  Content-Length: 10
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS/>

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=0 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

...optional pause (up to 90 seconds)...
S:HTTP/1.1 200 OK
  Content-Length: nnn
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS respSeq="1"><folderReport folder="INBOX" mode="notify" /></XIMSS>

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=0 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

S:HTTP/1.1 200 OK
  Content-Length: nnn
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS respSeq="1"><folderReport folder="INBOX" mode="notify" /></XIMSS>

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=1 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

...optional pause (up to 90 seconds)...
S:HTTP/1.1 200 OK
  Content-Length: 10
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS/>

Асинхронные Коммуникации по HTTP

Клиент может отправлять запросы в созданную XIMSS сессию таким образом, что все ответы (включая сообщения response и синхронные сообщения данных) будут возвращаться только в ответ на "пустой запрос".

http://domainName[:port]/Session/sessionID/async
или
https://domainName[:port]/Session/sessionID/async
где sessionID является атрибутом urlID сообщения session.

Тело HTTP запроса должно содержать один элемент <XIMSS /> с ноль, одним или более запросами XIMSS протокола.

Все генерируемые сообщения response (по одному для каждого запроса XIMSS, отправляемые в том же порядке) и все синхронные сообщения данных, созданные в ответ на переданные XIMSS запросы, передаются повторно в XIMSS сессию как асинхронные сообщения. Сервер возвращает пустой HTTP ответ.

Пример (одно соединение, опрос):

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=0&ackSeq=0 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

S:HTTP/1.1 200 OK
  Content-Length: 10
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS/>

C:POST /Session/562-kAI2lxNBR4ApmHg4wiW9/async HTTP/1.1
  Host: myserver.com
  Content-Length: nnn

  <XIMSS><noop id="i1" /><readTime id="i2" /></XIMSS>

S:HTTP/1.1 200 OK
  Content-Length: 0
  Connection: keep-alive
  Content-Type: text/plain;charset=utf-8
  Server: CommuniGatePro/5.2

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=0&ackSeq=0 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

S:HTTP/1.1 200 OK
  Content-Length: nnn
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS respSeq="1"><response id="i1"/><currentTime id="i2" gmtTime="20070502T083313" localTime="20070502T003313"/><response id="i2"/></XIMSS>

Пример (2 соединения, ожидание):

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?ackSeq=0 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

...waiting...





S:HTTP/1.1 200 OK
  Content-Length: nnn
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

  <XIMSS respSeq="1">
    <response id="i1"/>
    <currentTime id="i2" gmtTime="20070502T083313"
      localTime="20070502T003313"/>
    <response id="i2"/>
  </XIMSS>

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?ackSeq=1 HTTP/1.1
  Host: myserver.com
  Content-Length: 0

...waiting...





C:POST /Session/562-kAI2lxNBR4ApmHg4wiW9/async HTTP/1.1
  Host: myserver.com
  Content-Length: nnn

  <XIMSS><noop id="i1" /><readTime id="i2" /></XIMSS>

S:HTTP/1.1 200 OK
  Content-Length: 0
  Connection: keep-alive
  Content-Type: text/xml;charset=utf-8
  Server: CommuniGatePro/5.2

Мониторинг активности XIMSS

Вы можете наблюдать за активностью XIMSS Модуля через Веб Интерфейс Администратора.

Для того, что бы открыть страницы наблюдения за Доступом, нажмите на ссылку Доступ в области Наблюдения:
Показано 3 из 3
ID Сетевой Адрес Пользователь Подсоединён Состояние Обрабатывает
9786[216.200.213.116]user1@domain2.dom3 минlisting messages2 сек
9794[216.200.213.115]user2@domain1.dom34 секreading request 
9803[216.200.213.115]2 секauthenticating 
ID
Это поле содержит числовой идентификационный номер XIMSS сессии. В Журнале CommuniGate Pro, эта сессия отмечается как XIMSS-nnnnn, где nnnnn это идентификационный номер сессии.
Это поле содержит IP адрес присоединившегося клиента.
Пользователь
Это поле содержит имя Пользователя (после успешной аутентификации).
Подсоединён
Это поле содержит время соединения (время, в течении которого открыта эта TCP/IP сессия.
Состояние
Это поле содержит или имя текущей операции, или, если никакой операции не производится, текущее состояние сессии (Authenticating, Selected и т.д.).
Обрабатывает
Если есть какая-нибудь активная XIMSS операция, то это поле содержит время, прошедшее с момента начала операции.

Статистика активности XIMSS доступна через SNMP агент CommuniGate Pro.


Руководство CommuniGate® Pro. Copyright © 1998-2009, Stalker Software, Inc.