Аутентификация по внешнему API
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-ответа. Обратите внимание, что не все атрибуты являются необходимыми, отправлять нужно только те, которые требуются:
{"access_duration":"1D","access_level":"ALL","sponsor":1
,"unregdate":"2030—01—01","category":"default"
Пример реализации, совместимой с 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 хоста, использующийся для вызова авторизации пользователя. Обратите внимание, что перед ним автоматически ставится косая черта;
- Связанные области — области, которые будут связаны с данным источником аутентификации.