Для реализации некоторых корпоративных сценариев аутентификации система WNAM предоставляет возможность получения и проверки значения некоторого LDAP-атрибута пользователя, взятого из Active Directory. На основе этого метода можно строить семейство политик авторизации, в котором сравнивается значение AD-атрибута со значением, полученным в RADIUS-запросе или заданным в самой политике. На основании сравнения атрибутов принимается решение о совпадении/несовпадении политики аутентификации, и как следствие, определяется последующая логика работы подсистемы профилей.

В домене ОС Windows Active Directory у любого объекта (в данном случае идет речь об объекте типа "Пользователь") есть некоторый набор атрибутов. Набор атрибутов выглядит как пары "ключ-значение", причем значением может быть строка/число/дата/массив и т.п. Набор возможных атрибутов определяется схемой Active Directory, которая может быть расширена администратором или при установке сложного ПО (например, Exchange).

Для просмотра атрибутов объектов подходит инструмент ADSI Editor, представленный ниже.

Для того, чтобы использовать атрибуты при формировании политик аутентификации, необходимо выполнить следующие действия:

  1. Настроить взаимодействие с Active Directory.
  2. Выбрать необходимые атрибуты.
  3. Настроить условия матчинга атрибута в правиле (правилах) аутентификации.

Для примера выполним настройку двух правил:

  • совпадающее при условии, что запрашивающий доступ пользователь авторизовался в домене более 10 раз;
  • совпадающее при условии, что в RADIUS-атрибуте "Cisco-AVPair-mdm-tlv-device-uid" в запросе пользователя значение совпадает с значением AD-атрибута extensionAttribute1.

Для настройки взаимодействия системы WNAM с доменом следует обратиться к соответствующему разделу настоящей документации (Способ интеграции  системы WNAM с доменом). Следует обратить внимание, что поддерживается только новый способ интеграции (через flask-сервис).

Можно использовать одно из следующих взаимодействий:

  • только LDAP-взаимодействие (при этом проверка учетной записи (пароля) будет происходить по LDAP, т.е. необходимо применять РАР авторизацию (VPN) либо локальную БД учетных записей с учётками, совпадающими с доменными);
  • LDAP и NTLM-взаимодействие (при этом проверка атрибута учетной записи будет происходить по LDAP, а проверка пароля при EAP-PEAP авторизации - по NTLM).

В любом случае, после окончания настройки взаимодействия необходимо при помощи какой-либо учетной записи (данная учетная запись в последующем не используется, т.е. применяется разово) получить список атрибутов из AD. Список атрибутов доступен в разделе "раздел".

В представленном списке атрибутов необходимо отметить интересующие (в примере отмечен: extensionAttribute1 и logonCount) чекбоксами, не забыв сохранить изменения в списке.

Далее  следует перейти в настройки профилей аутентификации и создать (клонировать) два новых профиля (раздел "Конфигурация" → "Профили пользователей"). Правила сопоставления SSID, сервера доступа и т.п. следует настроить в обычном режиме .

В разделе "Конфигурация" → "Методы" в разделе "EAP-PEAP" необходимо выбрать домен, настроенный ранее в интеграции с Active Directory.  В "Методах" следует установить чекбокс "Совпадение в атрибуре в Active Directory (домен выбран ниже)". При этом выпадающий список атрибутов заполнится названиями, которые выбраны чекбоксами на стадии интеграции ("интересующие").

Затем следует выбрать способ сравнения из выпадающего списка. Допустимые способы:

  • равно;
  • содержит;
  • не равно;
  • равно (MAC-адрес)$
  • численные сравнения.

Далее необходимо выбрать радио-переключателем один из двух источников данных для сравнения: заданное здесь же значение или динамическое значение, получаемое из радиус атрибута. Соответственно, следует указать здесь значение дня сравнения или имя RADIUS-атрибута.

Для способа типа "Содержит" важно, чтобы значение, которое настроено в правиле (фиксированное или из атрибута) содержалось в AD-атрибуте пользователя (поиск по подстроке).

Для способа "Равно (МАС-адрес)" значение из AD-атрибута и значение из правила (например, полученное из RADIUS-атрибута User-Name или Calling-Station-Id) будут приведены к единому внутреннему формату МАС-адреса ХХ-ХХ-ХХ-ХХ-ХХ-ХХ, а затем сравнены.

Для способов "Численно..."  значение из AD-атрибута и значение из правила будут приведены к типу long integer, а затем сравнены арифметически.

Если в ходе обработки аутентификационного запроса  происходит проверка данного правила, производится запрос AD-атрибута в LDAP (возможно, асинхронный). Затем будет проведена проверка совпадения, в результате которой данное правило может быть оставлено или убрано из списка правил-кандидатов.

В лог-файле системы WNAM с включенном режимом трассировки появятся записи вида: 

17:20:14.073 TRACE [A12Service.java:1056] - requestAttributeCheckInAd domain lab.wnam.ru lookup time 22 ms.
17:20:14.073 TRACE [ASession.java:152] - log [25] requestAttributeCheckInAd - username 'vpupkin@lab.wnam.ru' is found in 'lab.wnam.ru'
17:20:14.073 TRACE [ASession.java:152] - log [26] requestAttributeCheckInAd - attribute logonCount, value '67'
17:20:14.422 TRACE [A12Service.java:921] - filterForAdAttribute user: vpupkin@lab.wnam.ru, dom_req: null, attrs: [DomainAttribute [name=logonCount, value=67]]
17:20:14.422 TRACE [A12Service.java:947] - filterForAdAttribute user: vpupkin@lab.wnam.ru, rule: NumericGte, found with attr: DomainAttribute [name=logonCount, value=67], compare to: 10
17:20:14.422 TRACE [ASession.java:152] - log [91] filterForAdAttribute - a1profiles candidates: 1, removed 0

Полученный в ходе LDAP-запроса список атрибутов кэшируется (по умолчанию на 10 минут). Просмотреть кэш можно по кнопкам внизу таблицы раздела "Диагностика" → "Корпоративные подключения". Кэш списка атрибутов представлен ниже.

17:23:42.321 INFO [A12Service.java:2299] - Dump AD user-group mapping cache, 1 entries: 
17:23:42.322 INFO [A12Service.java:2307] - username: 'vpupkin' groups [1]: [Wi-Fi Test Users]
17:23:42.322 INFO [A12Service.java:2309] - Dump AD user-attribute mapping cache, 1 entries:
17:23:42.322 INFO [A12Service.java:2319] - username: 'vpupkin@lab.wnam.ru' a_v: [logonCount='67']


  • No labels