RADIUS-протокол
Вы можете пропустить этот раздел при первичной установке системы и вернуться к нему, если вам понадобится работа с протоколом RADIUS.
RADIUS - протокол авторизации и аккаунтинга (передачи информации о соединении). В качестве транспорта используется UDP. Протокол бинарный, определяет формат передачи пакетов нескольких типов, в каждом из которых могут быть определены пары "атрибут-значение". NAS (Network Access Server) - сервер, через который происходит выход клиента с RADIUS-авторизацией.
Типы пакетов могут быть следующими:
1. AUTHENTICATION_REQUEST
Запрос авторизации, отправляется NASом RADIUS-серверу и содержит помимо идентификационной информации соединения, указанной выше, информацию о логине и пароле пользователя. Логин передаётся в открытом виде, пароль шифруется.
2. AUTHENTICATION_REJECT
Отказ в авторизации, может содержать атрибут с кодом ошибки.
3. AUTHENTICATION_ACCEPT
Пользователь авторизован. В данном пакете могут содержатся атрибуты, устанавливающие характеристики соединения пользователя (IP-адрес, скорость, максимальную длину сессии, частоту Update-пактов и т.п.).
4. ACCOUNTING_REQUEST
Запросы аккаунтинга могут быть трёх типов: Start, Stop, Update. Различаются они атрибутом Acct-Status-Type который равен 1, 2 или 3 соответственно. Данный тип запросов передаёт на RADIUS-сервер информацию о ходе соединения (соединение началось, завершилось или текущее состояние соединения).
5. ACCOUNTING_RESPONSE
Ответ RADIUS-сервера о том, что он получил запрос аккаунтинга. Ответ не содержит никаких атрибутов. Исключение составляет ответ MPD-серверу, который может содержать атрибут, информирующий NAS о необходимости разрыва соединения.
Посредством RADIUS-атрибутов передаётся вся информация пакета. Все используемые атрибуты должны быть описаны в файле dictionary.xml. Фактически файл определяет соотнесение кодов атрибутов их строковым обозначениям и типам. Он необходим при разборе RADIUS-пакета и при его создании, для выяснения кода атрибута по его имени.
Обратите внимание, что строковые обозначения атрибутов в нашем словаре могут отличаться от обозначений в словарях производителей оборудования. Для взаимодействия это совершенно не важно, т.к. в пакете атрибут обозначает числовой код.
Такой файл есть в любом приложении, которому может понадобится работа с RADIUS-протоколом. Во всех конфигурациях атрибуты должны указываться с именем таким же как и в данном конфигурационном файле. Атрибуты идентифицируются по имени, недопустимы атрибуты с одинаковыми названиями в пределах dictionary.xml. Перезагрузка словаря приложением происходит при изменении конфигурации связанного с приложением экземпляра модуля.
Рассмотрим формат описания атрибута в словаре.
<attribute name=
"cisco-Fax-Connect-Speed"
type=
"string"
add=
"yes"
code=
"8"
/>
Где:
code - числовой код атрибута;
name - строковое обозначение, отображается в логах, указыается в конфигурации;
type - тип атрибута, возможные типы далее;
add - при установке в yes в пакете имя строкового атрибута дублируется в поле со значением, это особенность CISCO устройств.
Возможные типы атрибутов:
octets - последовательность байт;
string - текстовая строка;
integer - беззнаковое целое число, 4 байта;
ipaddr - IP-адрес, 4 байта;
abinary - текстовая строка с бинарными кодами.
Значения атрибутов в текстовых конфигурациях указываются в виде: <NAME>=<VALUE>, например: Framed-IP-Address=192.168.168.2. Для текстовой строки с бинарными кодами бинарный код указывается как \0x<code>, где <code> - код в 16-ичной системе счисления. Например: cisco-SSG-Command-Code=\0xC SERVICE А.
Тегированные атрибуты указываются в виде: <NAME>:<TAG>=<VALUE>, например: ERX-Activate-Service:2=testtest. Тегированный атрибут в словаре должен быть помечен атрибутом tag, который определяет логику для разных типов атрибутов.Таблица. Логика тегирования
Тип тегирования/Тип атрибута |
integer |
string |
1 |
Тег - первый байт значения, значение от 0x01 до 0x1F, если тегирования нет - его значение 0. Оставшиеся три байта - само число. |
Тег - первый байт значения, значение от 0x01 до 0x1F, если тегирования нет - его значение 0. Оставшиеся байты - значение строки. |
2 |
Не поддерживается. |
Если значение первого байта от 0x01 до 0x1F, то это тeг, иначе - первый байт - это начало значения, тэгирования нет. |
При необходимости указания нескольких атрибутов они разделяются точкой с запятой, например: Framed-IP-Address=192.168.168.2;Service-Type=1;ERX-Activate-Service:2=testtest. Для указания точки с запятой в теле атрибута нужно писать её парно. Например: Framed-IP-Address=192.168.168.2;cisco-SSG-Service-Info=QU;;1024000;;512000;;D;;1024000;;512000.
Строковые представления для некоторых перечислимых числовых RADIUSатрибутов в данный момент не поддерживаются. Например, значению 1 атрибута Service-Type соответствует Login.