Интеграция сторонних Captive Portal

Страница перенесена в Confluence

Платформа 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).

Схема работы

  1. При подключении пользователь подключается и получает DHCP адрес

  2. На платформу уходит внутреннее сообщение о подключении - в ответ на него прилетает одно из двух состояний

    1. Пропустить пользователя в сеть Интернет (whitelist)
    2. Не пропускать пользователя (blacklist) и перенаправлять на портал авторизации (redirect)
  3. На точке доступа редирект работает через схему DNAT правила и HTTP сервера, HTTP сервер определяет с какого MAC, IP, WLAN пользователь подключился и делает HTTP 307 Redirect на новый URL

    1. Например, 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 по своему усмотрению любыми параметрами.

  4. Пользователь проходит на портал, проходит все этапы идентификации и авторизации и далее на указанный в настройках 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" 
}

  1. Далее пользователь в течении времени Session Timeout может прозрачно ходить в рамках WLAN без необходимости прохождения авторизации.
  2. Можно превентивно послать запрос на деавторизацию пользователя с теми же параметрами, что и при авторизации, но используя API /auth/deauthorize
POST REQUEST /api/deauthorize
{
   "mac":"c2:cc:4b:db:a4:dc", # required
   "wlan_id":"284ef13e-165d-439c-ab80-a17aa77c70e4" # required
}


Revision #3
Created 17 October 2022 13:55:42 by Daniil Sliusar
Updated 3 July 2023 11:46:19 by Ольга Шаповалова