HTTP/SSL сервер авторизации |
|
Эту задачу выполняет встроенный веб сервер. Если требуется 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