WNAM производит авторизацию абонентов сети (и для гостевого, и для корпоративного сценариев), всегда привязываясь к сущности, называемой "Площадка". Это - физическая территория, место предоставления услуги связи. Может определять здание, этаж здания, группу точек доступа, беспроводную сеть в целом ("растянутую" хоть на всю страну). WNAM не будет обрабатывать входящий запрос, если не сможет определить, к какой площадке он относится. Вы увидите сообщение "Попытка доступа с неизвестной площадки" или "site-missing-or-disabled" в pop-up окнах или логах.
Привязка к площадке требуется, потому что:
В идеальном мире у вас на каждой площадке вещается свой SSID, и на каждой площадке для клиентов своя IP-подсеть, которые между собой не пересекаются. И ваше сетевое оборудование всегда способно гарантированно определить IP адрес подключенного клиента.
Но так бывает не всегда. Возможны такие ситуации:
В этих случаях WNAM применяет детерминированные критерии определения, какой площадке сопоставить входящий запрос. Первым делом необходимо понять, о какого типа запросах речь. Источников запросов два:
RADIUS-сообщения типов Access-Request, Accounting-Request, поступающие от серверов доступа (коммутаторы и контроллеры)
HTTP-запросы страниц авторизации, поступающие на пользовательский портал (/cp/...) редиректом от беспроводных контроллеров при гостевой авторизации
В обоих случаях WNAM оперирует кэшем запросов (для гостевой авторизации он называется ConnectionInfoCache, или CI, а для корпоративной A12Sessions), в котором присутствуют все попытки авторизации, находящиеся в "процессе проведения". В записи о подключающемся абоненте сети есть всё, что требуется для проведения авторизации: МАС, IP адреса, ссылки на сервера доступа NAS, на площадки, СМС-код и т.п.
Обогащение данных в кэше производится путем парсинга поступивших RADIUS- или HTTP-запросов. К сожалению, формат этих запросов всегда зависит от производителя оборудования. И не у всех производителей в запросах присутствует все, что на хотелось.
/cp/cisco?client_mac=6A:FC:3E:DD:1E:07&switch_url=10.241.200.6&redirect=&wlan=WNAM-09-Guest&ap_mac=50:87:89:C0:27:1C&sessionId=06C8F10A0000002DA1053D6A&redirect=http://captive.apple.com/hotspot-detect.html
и
18:04:27.293 AUTH REQ : User-Name - 000acd44dfdf
18:04:27.295 AUTH REQ : User-Password - 000acd44dfdf
18:04:27.295 AUTH REQ : Service-Type - Call-Check
18:04:27.295 AUTH REQ : VSA: Cisco-AVPair: service-type=Call Check
18:04:27.295 AUTH REQ : VSA, vendor-id=9 - Cisco-AVPair - service-type=Call Check
18:04:27.295 AUTH REQ : Cisco-AVPair-service-type - Call Check
18:04:27.295 AUTH REQ : Framed-MTU - 1500
18:04:27.295 AUTH REQ : Called-Station-Id - 18-9C-5D-93-47-82
18:04:27.295 AUTH REQ : Calling-Station-Id - 00-0A-CD-44-DF-DF
18:04:27.295 AUTH REQ : Message-Authenticator - 0x660fcf5ff4f1d9eb0d6c35f0c358ea4e
18:04:27.295 AUTH REQ : EAP-Key-Name -
18:04:27.296 AUTH REQ : VSA: Cisco-AVPair: audit-session-id=AC1082260000278E967829CF
18:04:27.296 AUTH REQ : VSA, vendor-id=9 - Cisco-AVPair - audit-session-id=AC1082260000278E967829CF
18:04:27.296 AUTH REQ : Cisco-AVPair-audit-session-id - AC1082260000278E967829CF
18:04:27.296 AUTH REQ : NAS-Port-Type - Ethernet
18:04:27.296 AUTH REQ : VSA: Unknown-Sub-Attribute-2: 0x4661737445746865726e6574302f32
18:04:27.296 AUTH REQ : NAS-Port - 50002
18:04:27.296 AUTH REQ : NAS-Port-Id - FastEthernet0/2
18:04:27.296 AUTH REQ : NAS-IP-Address - 172.16.130.38
18:04:27.328 AUTH RSP : RadiusResponse [state=FAIL, fail_reason=site-missing-or-disabled, attributes=[]]
WNAM применяет перебор (поиск) по серверам доступа, площадкам, Подразделениям (Клиентам) для того, чтобы из параметров запроса понять, к какой из площадок в данный момент относится попытка доступа.
В порядке уменьшения приоритета сравниваются:
Внимание! Контроллеры Cisco направляют RADIUS-запрос ещё до того, как известен IP-адрес клиента. Поэтому при работе с этим контроллером вам следует делать всю логику вокруг параметров "SSID" и "Дополнительный ID на сервере" (который из себя представляет порядковый номер WLAN профиля на контроллере). |
В результате поиска по таблицам площадок может оказаться, что искомым критериям в запросе соответствуют несколько из них. В таком случае поиск вернет первую попавшуюся, не обязательно по порядку номера или времени создания. Чтобы такого не случалось, вы должны вдумчиво проектировать настройки ваших площадок и серверов доступа, опираясь на описанный выше алгоритм матчинга.