Введение
Начиная с версии ПО WLC 1.39.2 поддержан функционал external-portal-manager, который позволяет обрабатывать входящие HTTP-запросы от внешнего портала, для авторизации беспроводных клиентов.
Данный функционал может быть использован эксплуатациями со своим индивидуальным внешним порталом.
Функционал работает на ТД моделей: WOP-20L, WEP-200L, WEP-30L, WEP-30L-NB, WEP-30L-Z, WOP-30L, WOP-30LS, WOP-30LI начиная с версии ПО 2.12.0
Схема взаимодействия при первом подключении клиента.
Описание схемы взаимодействия при первичном подключении клиента.
- Установка соединения клиента с ТД.
- ТД выполняет MAB для клиента на RADIUS-сервере.
- Проверка наличия УЗ клиента для MAB авторизации в БД.
- Т.к клиент подключается впервые, УЗ клиента для MAB отсутствует в БД.
- ТД получает Access-Reject от RADIUS-сервера.
- Клиент пытается посетить какой либо ресурс, через HTTP GET запрос.
- ТД перехватывает запрос клиента, подставляет значения wildcard параметров из redirect-url-custom и перенаправляет на страницу портала.
- Клиент попадает на страницу редиректа, проходит процесс авторизации и отправляет учетные данные на внешний портал.
- Внешний портал проверяет и сохраняет учетные данные клиента в БД.
- Внешний портал получив учетные данные клиента обрабатывает их и после отправляет HTTP POST запрос к WLC. Куда отправить ответный HTTP запрос, внешний портал узнает из параметра LOGIN_URL, который содержится в redirect-url-custom.
- WLC валидирует наличие обязательных параметров в HTTP POST запросе для аутентификации клиента, в случае если все обязательные параметры присутствует, проверяет наличие информации по клиенту и к какой ТД он подключен и затем отправляет запрос на ТД для аутентификации клиента.
- ТД отправляет RADIUS запроса Acess-Request подставляя в RADIUS атрибуты User-name и User-Password значения, которые были переданы от внешнего портала в виде параметров username и password в http запросе на шаге №4. После отправки RADIUS-запроса запускается таймаут, который задается через параметр: radius-response-timeout (10 секунд по умолчанию).
- RADIUS-сервер проверяет наличие УЗ клиента в БД.
- RADIUS-сервер получает результат проверки наличия УЗ клиента в БД.
- RADIUS-сервер отправляет ответ Access-Accept на запрос ТД на шаге #12
- ТД отправляет уведомление на WLC, что клиент успешно авторизован. Запись сохраняется в журнале клиентов.
- WLC отправляет HTTP RESPONSE на HTTP REQUEST, который был отправлен на шаге #4 от внешнего портала.
- Внешний портал сохраняет УЗ клиента для MAB. Каждый раз при подключении к новой ТД либо роуминге, ТД будет выполнять MAB и т.к УЗ клиента уже будет храниться в БД, клиент будет аутентифицирован без взаимодействия со страницой портала.
- ТД перенаправляет клиента на изначально запрошенный ресурс.
Схема повторного подключения клиента к новой ТД либо роуминге.
Описание схемы взаимодействия при повторном подключении клиента, либо роуминге.
- Установка соединения клиента с ТД.
- ТД выполняет MAB для клиента на RADIUS-сервере.
- Проверка наличия УЗ клиента для MAB авторизации в БД.
- Т.к клиент подключается повторно к новой ТД, либо совершает роуминг, УЗ клиента для MAB присутствует в БД.
- ТД получает Access-Accept от RADIUS-сервера.
- Клиент пытается посетить какой либо ресурс, через HTTP GET запрос.
- ТД предоставляет доступ клиенту на запрошенный внешний ресурс.
Структура запроса от внешнего портала
Данные передаются в теле HTTP POST запроса в строке вида: <ключ>=<значение>, разделенных &
Пример тела HTTP запроса:
cmd=login&client-mac=60a5e22c74be&ip-address=10.25.229.12&username=eltex-user&password=0i10EGAKP0TAHkratgWKKZEzOk9HL2ZMAyEH5luq
Таблица описание параметров:
| Параметр | Описание | Обязательный или необязательный |
|---|---|---|
| cmd | На текущий момент начиная с версии WLC 1.39.2 поддерживается только команда: login | Обязательный |
| client-mac | MAC-адрес клиента в одном из форматов:
| Обязательный |
| ip-address | IP-адрес клиента в формате:
| Обязательный |
| username | Username клиента. Значение данного параметра передаются в RADIUS запросе Acess-Request в рамках атрибута User-name | Обязательный |
| password | Пароль клиента. Значение данного параметра передается в RADIUS запросе Acess-Request в рамках атрибута User-password. | Обязательный |
Структура ответа внешнему порталу от WLC
Данные передаются в теле HTTP ответа в формате xml
Пример HTTP ответа от WLC:
<?xml version="1.0"?><response><client-mac>7a:c5:b8:80:07:eb</client-mac><ip-address>10.25.229.12</ip-address><result>success</result><errcode>0</errcode></response>
| Параметр | Описание | Обязательный или необязательный |
|---|---|---|
| client-mac | MAC-адрес клиента в формате:
| Необязательный |
| ip-address | IP-адрес клиента в формате:
| Обязательный |
| result | Результат авторизации клиента по параметрам из HTTP POST запроса:
| Обязательный |
| errcode | Код ошибки:
| Обязательный |
Пошаговая настройка
Настройка external-portal-manager
Для того, чтобы WLC начал обрабатывать входящие http запросы от внешнего портала, необходимо:
- Включить external-portal-manager с помощью настройки enable
- Задать параметр ip-address, который будет использоваться для приема входящих http запросов. Если используется схема failover, необходимо использовать vrrp адрес, для обеспечения отказоустойчивости.
Опционально можно настроить:
- Параметр login-url, который задает значение у параметра <LOGIN_URL> в произвольной строке редиректа: redirect-url-custom. Это необходимо, чтобы передать внешнему порталу dns имя контроллера, вместо ip-adress+port (по умолчанию)
- Параметр port, который будет использоваться для приема входящих http запросов. По умолчанию используется порт: 8045.
- Параметр radius-response-timeout - который задает время ожидания авторизации клиента на RADIUS сервере.
external-portal-agent enable ip-address 100.139.31.1 exit
Настройка portal-profile
Настраиваем portal-profile.
В строке ридеректа (redirect-url-custom) должны быть заданы обязательные параметры:
<ORIGINAL_URL>
<CLIENT_IP>
<CLIENT_MAC>
<LOGIN_URL>
Тип проверки: external-portal
portal-profile eltex-external-portal
redirect-url-custom http://eltex-co.ru/?redirect-url=<ORIGINAL_URL>&user-ip=<CLIENT_IP>&user-mac=<CLIENT_MAC>&login-url=<LOGIN_URL>
verification-mode external-portal
exit
Настройка radius-profile
Необходимо создать и настроить radius-profile, чтобы задать на ТД адрес RADIUS-сервер, который будет выполнять авторизацию беспроводного клиента.
В целевой схеме указывается адрес WLC, который проксирует запрос на RADIUS-сервер. Подробнее в статье.
При необходимости можно задать адрес RADIUS-сервера для взаимодействия между ТД и внешним порталом.
radius-profile default-radius
description "default-radius"
auth-address 100.139.31.1
auth-password ascii-text encrypted 8CB5107EA7005AFF
domain default
exit
Настройка ssid-profile
Необходимо создать ssid-profile, включить в нём портальную авторизацию и привязать portal-profile и radius-profile на предыдущих шагах и затем привязать его к необходимой локации либо переопределить в индивидуальном профиле точки доступа.
ssid-profile exter-external-portal ssid "exltex-portal" radius-profile default-radius portal-enable portal-profile eltex-external-portal vlan-id 2955 band 5g enable exit