HTTP/SSL сервер авторизации

Previous pageReturn to chapter overviewNext page

 

Эту задачу выполняет встроенный веб сервер. Если требуется SSL, то потребуются соотв. настройки программы. Запрос и отклик имеет стандартный HTTP/1.1 формат, используется Keep-Alive для удержания TCP соединения, т е. соединение по каждому запросу не рвется.

 

В запросе можно использовать GET или POST. Параметры запроса могут передаваться двумя путями -

 

В строке запроса.
XML данные в теле запроса. В этом случае в HTTP заголовке должен быть указан тип данных XML (атрибут Content-Type: text/xml).

 

Запрос Discavery.

 

Запрашивается ресурс /ticonfig.xml. Параметров запроса нет. Возвращаются XML данные (описаны в формате XSD) -

 

 <xsd:element name="HTTPAutoConfig">

   <xsd:complexType>

     <xsd:attribute name="ServerVer" type="xsd:string"/>

     <xsd:attribute name="HTTPProxy" type="IPPort" use="optional"/>

     <xsd:attribute name="SocksProxy" type="IPPort" use="optional"/>

     <xsd:attribute name="HTTP" type="IPPort" use="optional"/>

     <xsd:attribute name="SSL" type="IPPort" use="optional"/>

     <xsd:attribute name="SSLHost" type="xsd:string" use="optional"/>

     <xsd:attribute name="RecomendedProtocol" type="xsd:integer" use="optional"/>

   </xsd:complexType>

 </xsd:element>

 

Данные идентичны UDP протоколу (см. топик). Если данных нет (порт не сконфигурирован), то соотв. атрибута может не быть.

 

Запрос авторизации (статуса клиента).

 

Запрашивается ресурс /user/tiagent.xml. Отметим, что аутентификация и авторизация производится средствами WWW сервера, поэтому директорий user обязательно должен быть сконфигурирован для доступа только клиентов программы.

 

Параметры запроса в формате XML (описаны в формате XSD) -

 

 <xsd:element name="AgentRequest">

   <xsd:complexType>

     <xsd:attribute name="Request" type="xsd:integer" default="-1"/>

     <xsd:attribute name="FilterLevel" type="xsd:integer" use="optional"/>

     <xsd:attribute name="CacheMode" type="xsd:integer" use="optional"/>

     <xsd:attribute name="NewPassword" type="xsd:string" use="optional"/>

     <xsd:attribute name="AgentVer" type="xsd:string" use="optional"/>

     <xsd:attribute name="RespHint" type="Bool" use="optional"/>

     <xsd:attribute name="RespAll" type="Bool" use="optional"/>

     <xsd:attribute name="RespName" type="xsd:string" use="optional"/>

     <xsd:attribute name="LogonTTL" type="xsd:integer" use="optional"/>

     <xsd:attribute name="PromptRequest" type="Bool" use="optional"/>

   </xsd:complexType>

 </xsd:element>

 

Request - тип запроса. 0 - запрос на авторизацию, 1 - отключить авторизацию, другое - получить только статус клиента (т.е. состояние авторизации не менять). В отличие от UDP протокола, для HTTP/SSL возможно запрашивать данные неавторизованного клиента.

 

FilterLevel - если есть, то поменять уровень фильтрации (F1-F4).

 

CacheMode - если есть, то поменять режим кэширования.

 

NewPassword - если есть, то поменять пароль. Доступно только для клиентов с авторизацией по имени, для которых пароль прописан в программе. Новый пароль передается в открытом виде, поэтому это не рекомендуется без SSL.

 

AgentVer - можно сообщить версию агента. Будет отображаться в мониторе работы. Не более 16 символов.

 

RespHint - Опция для формирования отклика. Если не "0", то в отклик будут включены подсказки (параметры с Hint на конце имени, а также подсказки F1-F4).

 

RespAll - Опция для формирования отклика. Если не "0", то в отклик будут включены все данные по биллингу клиента. Иначе только балланс. Обычно агент запрашивает все данные только при первом обращении к серверу в начале сессии клиента, что оптимально с точки зрения минимизации трафика.

 

RespName - Можно задать имя xml элемента в отклике. Т.е. заменить <xsd:element name="AgentRequest"> на другое имя.

 

LogonTTL - можно задать время удержания авторизации. Иначе используется параметр из настроек программы. В WWW сервере, в отличие от прокси, TCP соединение не удерживает авторизацию, поэтому если запросы идут слишком редко, она может отключиться по таймауту.

 

PromptRequest - Используется при запросе на отключении авторизациии (значение "1"). Опционально. При последующей авторизации будет принудительно выставлен запрос на аутентификацию, что приведет к появлению окна аутентификации броузера. Можно использовать для того, что-бы запросить авторизацию под другим клиентом.

 

Одноименные параметры используются и при передаче данных в строке запроса.

 


 

WWW сервер в некоторых случаях может возвратить ошибку HTTP откликом -

 

403 - Запрос отклонен по соображениям безопасности. Он пришел из внешних сетей, или по открытому протоколу HTTP, когда в настройках разрешен только SSL, или если клиент Traffic Inspector не ассоциирован с этим запросом. Последнее возможно, если для директории user разрешили анонимный доступ, или прошла аутентификация для администратора, не являющегося клиентом программы.

 

Также возможно появление других HTTP ошибок в случае некорректного запроса или внутренних ошибок программы. См. журнал событий на сервере.

 

Параметры отклика в формате XML (описаны в формате XSD) -

 

 <xsd:element name="AgentResponse">

   <xsd:complexType>

     <xsd:sequence>

       <xsd:element name="MessagePopup">

         <xsd:complexType>

           <xsd:simpleContent>

             <xsd:extension base="xsd:string">

               <xsd:attribute name="SendTime" type="xsd:dateTime" use="optional"/>

             </xsd:extension>

           </xsd:simpleContent>

         </xsd:complexType>

       </xsd:element>

     </xsd:sequence>

     <xsd:attribute name="ServerVer" type="xsd:string" use="optional"/>

     <xsd:attribute name="ServerTime" type="xsd:dateTime" use="optional"/>

     <xsd:attribute name="UserGUID" type="xsd:string" use="optional"/>

     <xsd:attribute name="User" type="xsd:string" use="optional"/>

     <xsd:attribute name="BlockState" type="xsd:integer" use="optional"/>

     <xsd:attribute name="BlockStateHint" type="xsd:string" use="optional"/>

     <xsd:attribute name="Reason" type="xsd:integer" use="optional"/>

     <xsd:attribute name="BillState" type="xsd:integer" use="optional"/>

     <xsd:attribute name="BillStateHint" type="xsd:string" use="optional"/>

     <xsd:attribute name="Active" type="Bool" use="optional"/>

     <xsd:attribute name="Ballance" type="xsd:float" use="optional"/>

     <xsd:attribute name="Currency" type="xsd:string" use="optional"/>

     <xsd:attribute name="TrafExclude" type="xsd:float" use="optional"/>

     <xsd:attribute name="BillTraffic0" type="xsd:float" use="optional"/>

     <xsd:attribute name="FilterLevel" type="xsd:integer" use="optional"/>

     <xsd:attribute name="FilterCurrLevel" type="xsd:integer" use="optional"/>

     <xsd:attribute name="CacheMode" type="xsd:integer" use="optional"/>

     <xsd:attribute name="CacheEnabled" type="Bool" use="optional"/>

     <xsd:attribute name="PassChangeEn" type="Bool" use="optional"/>

     <xsd:attribute name="ServiceMask" type="xsd:integer" use="optional"/>

     <xsd:attribute name="F1" type="xsd:string" use="optional"/>

     <xsd:attribute name="F2" type="xsd:string" use="optional"/>

     <xsd:attribute name="F3" type="xsd:string" use="optional"/>

     <xsd:attribute name="F4" type="xsd:string" use="optional"/>

     <xsd:attribute name="ProxyConf" type="Bool" use="optional"/>

     <xsd:attribute name="RefInterval" type="xsd:integer" use="optional"/>

   </xsd:complexType>

 </xsd:element>

 

ServerVer - версия программы (сервера)

 

ServerTime - время на сервере.

 

Reason - код возврата (ошибки авторизации)

 

0 - OK.

1 - Клиент не найден или неверный пароль. Появление этой ошибки маловероятно, обычно возвращается HTTP ошибка 403.

2 - Неверная отметка времени. Для HTTP/SSL не используется.

3 - Авторизация с этого IP адреса запрещена.

4 - Этот клиент уже авторизовался с другого компьютера.

5 - Авторизация с этого MAC адреса запрещена.

6 - С этого адреса работают под другим именем.

7 - Запрос на сброс сессии работы агента. Агент должен закрыть соединение и выполнить его повторно. Это не подразумевает закрытие авторизации.

8 - NTLM аутентификация не разрешена. Для HTTP/SSL не используется.

9 - Не тот тип авторизации.

 

Следующие данные возвращаются только, если Reason = 0 (запрос ассоциирован с клиентом программы).

 

User - Отображаемое имя клиента.

 

UserGUID - GUID клиента.

 

BlockState - состояние блокировки. Расшифровывается в BlockStateHint.

 

BillState - состояние работы клиента. Расшифровывается в BillStateHint.

 

Active - если не "0", то клиент авторизован и может работать с Интернет.

 

Ballance - балланс клиента.

 

Следующие данные возвращаются, если в запросе был указан RespAll = 1.

 

Currency - денежная единица клиента.

 

TraffExclude - предоплаченный трафик.

 

BillTraffic0 - Обьем неизрасходованного трафика из предоплаченного.

 

FilterLevel - Минимальный разрешенный уровень фильтрации.

 

FilterCurrLevel - Текущий уровень фильтрации.

 

CacheMode - режим кэширования.

 

CacheEnabled - если не "0", то кэширование разрешено. Определяется настройками программы, с настройками броузера клиента никак не связано.

 

PassChangeEn - если не "0", то разрешена смена пароля клиентом. Иначе запрос на смену пароля возвратит ошибку.

 

ServiceMask - битовый параметр, какие службы разрешены клиенту.

 

F1-F4 - подсказки для режимов фильтрации. Соотв. настройкам программы.

 

ProxyConf - если не "0", то для клиента разрешено автоматическое конфигурирование броузера.

 

RefInterval - интервал повторения запросов. Соотв. настройкам программы.

 

MessPopup - сообщение клиенту (если есть). К нему прилагается атрибут SendTime - время отправки сообщения администратором.

 

 


Текущая страница справки: help.smart-soft.ru/index.html?sdkagenthttp.htm

Сайт разработчиков Traffic Inspector