AxelNAC поддерживает вызов внешнего HTTP API в качестве источника аутентификации. Использование внешнего API позволяет реализовать как аутентификацию, так авторизацию пользователей.
Аутентификация
В результате аутентификации должна быть получена информация о том, является ли комбинация имя пользователя/пароль действительной. Эта информация доступна через поля POST-запроса. В ответ сервер должен предоставить два атрибута в JSON-ответе:
result: результат должен иметь значения: 1 для успешной аутентификации, 0 для неуспешной аутентификации;
message: сообщение должно описывать причину успешной или неуспешной аутентификации.
Пример JSON-ответа:
{"result":1, "message": "Valid username and password"}
Авторизация
Авторизация должна обеспечить действия, которые необходимо применить к пользователю на основе его атрибутов. Для ответа доступны следующие атрибуты:
access_duration;
access_level;
sponsor;
unregdate;
category.
Ниже приведен пример JSON-ответа. Обратите внимание, что не все атрибуты являются необходимыми, отправлять нужно только те, которые требуются:
Пример реализации, совместимой с AxelNAC можно найти в файле /usr/local/pf/addons/example_external_auth.
Настройка источника аутентификации в AxelNAC
Для использования внешнего API для аутентификации, выполните следующие действия:
Шаг 1. Перейдите в раздел Конфигурация → Политики и контроль доступа → Источники аутентификации и нажмите Новый внутренний источник, после чего в выпадающем списке выберите HTTP.
Шаг 2. В открывшемся окне конфигурации заполните поля следующим образом:
Имя — укажите имя для источника аутентификации;
Описание — укажите описание источника аутентификации. Описание будет отображаться в списке созданных источников аутентификации;
Путь к файлу — сначала указывается протокол, затем IP-адрес или имя хоста API и, наконец, порт для подключения к API;
Имя пользователя и пароль API — если в API реализована базовая аутентификация HTTP (RFC 2617), вы можете добавить имя пользователя и пароль в эти поля. Если оставить любое из этих двух полей пустым, AxelNAC будет выполнять запросы без какой-либо аутентификации;
URL аутентификации — URL хоста, использующийся для вызова аутентификации пользователя. Обратите внимание, что перед ним автоматически ставится косая черта;
URL авторизации — URL хоста, использующийся для вызова авторизации пользователя. Обратите внимание, что перед ним автоматически ставится косая черта;
Связанные области — области, которые будут связаны с данным источником аутентификации.