Ulteo Open Virtual Desktop v3.0

Protocol Description


 

The purpose of this documentation is to describe the protocols used by Ulteo Open Virtual Desktop.

Список используемых протоколов

Hyper Text Transfert Protocol (HTTP)

Основным коммуникационным протоколом Ulteo OVD для сеанса связи является HTTP поверх SSL. Этот протокол работает по TCP на порту 443.

Ulteo OVD также использует HTTP для связи между серверами: от Session Manager к Application Server и обратно. Для этого используется TCP порты 1111 и 1112 (они не являются стандартными сервисными портами).

Некоторые программы Ulteo OVD , такие как Административная консоль(Administration Console) и Web клиент работают на обычном HTTP порту, поскольку предполагается , что клиенты используют web браузер.

HTTP on Wikipedia

Remote Desktop Protocol (RDP)

RDP -- это протокол для подключения к удаленному рабочему столу (RDP) созданный Microsoft Corp.В®  для применения в программах использующих терминальные сервисы( Terminal Services в 2003/2008).

RDP также используется и в Ulteo Open Virtual Desktop для вывода на экран удаленных рабочих столов и приложений.

RDP работает по TCP на порту 3389.

RDP on Wikipedia

Secure Socket Layer (SSL)

SSL является протоколом с шифрованием передаваемых данных, используется для связи между сервером и клиентом.

SSL используется в Ulteo OVD для создания виртуального тоннеля для HTTP и RDP.

SSL on Wikipedia

Сервер

Сервера соединяются посредством сервисов HTTP  встроенных в web сервер Apache.  Session Manager слушает TCP порт 1111, а Application Servers для этого использует порт 1112.

Session Manager идентифицирует Application Server используя FQDN (Fully Qualified Domain Name).

Applications Servers отвечает только тому Session Manager , адрес которого указан в файле конфигурации.

Безопасность

В настоящий момент, сервер аутентифицируется через  DNS систему.

Когда Application Server отправляет сведения о своем статусе , то он указывает аргумент называемый  fqdn. Session Manager выполняет 2 аутентификационных проверки и 1 проверку авторизации.

  • FQDN resolution: вычисляет FQDN , чтобы получить IP адрес и проверяет его, на совпадение IP адреса  удаленного сервера  ($SERVER['REMOTE_ADDR'] in PHP). Аутентификация зависит полностью от этого совпадения.

  • reverse resolution: вычисляет IP адрес сервера, проверяет его  на совпадение с аргументом FQDN .  Аутентификация непосредственно зависит от этого совпадения.  Проверка может быть отключена в административной консоли используя Disable FQDN check

  • authorization: проверка на совпадение FQDN с одним из определенных Authorized FQDN , указанных в административной панели.

Ошибки HTTP

Web сервисы используют стандартные HTTP коды ответов.

  • 200 OK : запрос успешный

  • 400 Bad Request : запрашиваемый аргумент не действительный

  • 401 Unauthorized : от SM к ApS: ApS определяет , что удаленный адрес не SM. От ApS к SM: ApS еще не зарегистрирован или не прошел аутентификацию.

  • 500 Internal Server Error : Или обнаружена ошибка или система не работает.

OVD клиентская сессия

Процесс установления простой сессии

Следующая схема пошагово описывает процесс формирования Ulteo OVD сессии (сеанса).

В этом примере  используется только один Application Server, сессия не использует подключения к файл серверам  (внутренним или внешним) и клиент подключается непосредственно к OVD , без шлюза.

Session Manager -- клиентская часть

Веб-службы SM используются клиентским программным обеспечением для проведения сеанса и управления сессией.

Основной URL адрес для доступа - https://sm.ulteo.com/ovd.

Ниже список доступных веб-службы.

applications.php

  • method: GET

  • arguments: none (за исключением аутентификации , описано в auth.php)

  • returns: список приложений и другое в XML  формате.

Этот веб-сервис информирует о доступных приложениях и прочих данных , по отношению к конкретному пользователю. Аутентификация может быть выполнена с помощью службы auth.php или напрямую .

XML формат:

  • user Root node
    • login Attribute
    • application nodes
  • application Node
    • id Attribute
    • name Attribute
    • description Attribute
    • mime nodes
  • mime Node
    • type Attribute

Пример:

<?xml version="1.0" encoding="utf-8"?>
<user login="mwilson">
    <application id="1850" name="AbiWord" description="Compose, edit,
and view documents">   
        <mime type="application/docbook+xml"/>
        <mime type="application/msword"/>
        <mime type="application/rtf"/>
    </application>
   
    <application id="1857" name="Mousepad" description="Simple text editor">
        <mime type="text/plain"/>
    </application>
</user>

auth.php

  • method: POST

  • arguments: XML input (optionnal)

  • returns: стандартные коды ответов HTTP.

Эта служба отвечает за аутентификацию. Метод аутентификации зависит от того какой модуль аутентификации указан в панели администрирования.

Входной XML файл используется только для паролей и маркеров аутентификации.

XML формат: root node и структура XML не имеет значения для этой службы. Система только проводит проверку , существует ли указанный пользователь в системе .

  • user node
    • login Attribute
    • password Attribute
    • token Attribute

Если модуль проверки пароля указан (password module), то используются атрибуты  login и password .

Если указан модуль маркера (token module), то используется атрибут  token .

icon.php

  • method: GET

  • arguments:

    • id: идентификатор приложения

  • returns: ярлык приложения  32x32:32 image/png

Эта служба передает ярлык программы исходя из его id (идентификационного номера).

Аутентификация может быть выполнена с помощью службы auth.php или напрямую . Также имеется возможность доступа к любому ярлыку при включенной опции Public Webservices access в панели администратора.

logout.php

  • method: ANY

  • arguments: None

  • returns: XML

Эта служба запускается при окончании сессии.

mimetype-icon.php

  • method: GET

  • arguments:

    • id: a mime-type name

  • returns: the application icon as 32x32:32 image/png

Эта служба обеспечивает создание mime-type ярлыка для приложений поддерживающих mime-type.

session_status.php

  • method: GET

  • arguments: None

  • returns: статус сессии в формате XML

XML формат:

  • session Root node
    • id Attribute
    • status Attribute

userlist.php

  • method: GET

  • arguments: none

  • returns: список пользователей в формате XML .

Эта служба обеспечивает отображение списка пользователей в окне входа Session Manager.

XML формат:

  • users Root node
    • user nodes
  • user Node
    • login Attribute
    • displayname Attribute

Эта служба работает , если установлена опция Display users list в панели администратора .

Ограничение -- не более 100 пользователей в списке  (может изменено в панели администратора).

start.php

  • method: POST

  • arguments: XML content

  • returns: параметры сессии в формате XML

Эта служба запускается , когда пользователь начинает сеанс. Во входящем XML файле, клиент описывает желаемые параметры сессии. В соответствии с политикой панели администратора , Session Manager возвращает ответ с параметрами сессии или сообщение об ошибке , с объяснением почему сессия не запустилась.

Сообщения об ошибках:

  • auth_failed

  • in_maintenance

  • internal_error

  • invalid_user

  • service_not_available

  • unauthorized_session_mode

  • user_with_active_session

Web Client external API

В Ulteo OVD Web встроен Javascript API для облегчения запуска приложений или рабочего стола из других сервисов.

Простой пример страницы HTML  со встроенным Ulteo OVD приложением:

<html>
  <head>
    <!-- Load the Ulteo javascript files -->
    <script type="text/javascript" 
	    src="http://web.ulteo.com/media/script/lib/prototype/prototype.js" 
	    charset="utf-8"></script>
    <script type="text/javascript" 
	    src="http://web.ulteo.com/media/script/external.js" 
	    charset="utf-8"></script>

    <script type="text/javascript">
function start(form_) {
	var ovd = new UlteoOVD_start_Application(
                 'http://'+form_.server.value+'/ovd', 
                 form_.app.value
             );
        ovd.setAuthPassword(form_.login.value, form_.password.value);
	ovd.start();
}
    </script>
  </head>
  <body>

<form action="#" onsubmit="start(this); return false;">
 Server: 
 <input type="text" name="server" value="web.ulteo.com" />
 <br/>

 Login: 
 <input type="text" name="login" value="" />
 <br/>

 Password: 
 <input type="password" name="password" value="" />
 <br/>

 Application id: 
 <input type="text" name="app" value="2" />
 <br/>

 <input type="submit" value="Launch" />
</form>
 </body>
</html>

For further informations, check our website www.ulteo.com.