Интеграция сторонних Captive Portal
Платформа Wimark ONE позволяет интегрироваться со сторонними порталами. Схема несколько отличается от стандартного RADIUS-based auth.
Для этого реализован HTTP/HTTPS Redirect на уровне Точек доступа (работает с типами установки на L2 (режим моста) и L3 (режим NAT)), а также CoA HTTP API на стороне платформы.
В отдельных случаях может быть выключен Masquerading при HTTP Redirect, добавлен external RADIUS MAC Bypass (с проверкой по MAC адресу на стороннем сервере RADIUS).
В настоящее время реализовано только управление временем авторизации пользователя (Session-Timeout).
Схема работы
-
При подключении пользователь подключается и получает DHCP адрес
-
На платформу уходит внутреннее сообщение о подключении - в ответ на него прилетает одно из двух состояний
- Пропустить пользователя в сеть Интернет (whitelist)
- Не пропускать пользователя (blacklist) и перенаправлять на портал авторизации (redirect)
-
На точке доступа редирект работает через схему DNAT правила и HTTP сервера, HTTP сервер определяет с какого MAC, IP, WLAN пользователь подключился и делает HTTP 307 Redirect на новый URL
- Например, URL может быть таким:
<https://auth.domain.com/some_portal/?mac={CLIENT_MAC}&wlan={WLAN_SSID}&client_ip={CLIENT_IP}&cpe_id={AP_UUID}&wlan_id={WLAN_UUID}&switch_url=https://10.241.81.76:1324/api/authorize&redirect_url=http://home.domain.com>
b. Все переменные в {VAR} будут разыменованы точкой исходя из текущих настроек. Также можно дополнить URL по своему усмотрению любыми параметрами.
-
Пользователь проходит на портал, проходит все этапы идентификации и авторизации и далее на указанный в настройках switch_url (switch_url настраивается администратором платформы) отправляется CoA HTTP запрос (По-умолчанию, для CoA HTTP API используется порт 1324 на стороне контроллера. Поэтому для switch_url используйте URL=http://ip:1324/):
POST REQUEST /api/authorize
{
"mac":"c2:cc:4b:db:a4:dc", # required
"wlan_id":"284ef13e-165d-439c-ab80-a17aa77c70e4", # required
"session_timeout":1800,
"username":"7927818130",
"ip":"10.10.10.3",
"cpe_id":"143e5d59-f3d0-481a-c89a-080027c1afe6",
}
POST RESPONSE
{
"status" : "ok | error"
"code": 0 | 1,
"description" : "error description if any"
}
- Далее пользователь в течении времени Session Timeout может прозрачно ходить в рамках WLAN без необходимости прохождения авторизации.
- Можно превентивно послать запрос на деавторизацию пользователя с теми же параметрами, что и при авторизации, но используя API /auth/deauthorize
POST REQUEST /api/deauthorize
{
"mac":"c2:cc:4b:db:a4:dc", # required
"wlan_id":"284ef13e-165d-439c-ab80-a17aa77c70e4" # required
}