Агент Web API
Web API — это базовый, встроенный в ядро сервера аутентификации, интерфейс для обработки запросов на аутентификацию.
Этот интерфейс помогает связать целевой ресурс с сервером аутентификации: в ресурс добавляется программный код, реализующий функции клиента аутентификации. При такой интеграции целевой ресурс, в который выполняется аутентификация, вызывает этот код, а код действует как агент: он устанавливает защищенное соединение с сервером аутентификации и передает по нему введенные пользователем данные для проверки.
Этот способ интеграции подходит для ресурсов, исходный код которых можно модифицировать. Учитывайте, что при интеграции с Web API ресурс становится узлом аутентификации и его IP-адреса нужно указывать в настройках виртуального сервера.
Запрос
Web API включает в себя единственную команду — запрос аутентификации. Запрос передается методом POST по протоколу HTTPS на https://<mfa.indeed-cloud.ru>/auth.
login=<user@indeed.local>&passcode=<passcode>[&agent=radius]
где:
agent– необязательный параметр, определяющий тип агента. Доступные значения:api, radius, adfs, selfportal, console, keycloak. Значение по умолчанию –api.
Ответ
На запрос от сервера аутентификации поступает ответ в формате объекта JSON.
В ответе содержатся 3 ключа:
Authсодержит значение со статусом аутентификации;Detailsсодержит значение с подробностями статуса;Timeсодержит значение времени в секундах, затраченное на выполнение аутентификации.
Возможные значения ключей Auth и Details
| Статус | Детали | Причина |
|---|---|---|
| Success | User Authenticated with token <token number> | Успешная аутентификация по токену <номер токена> |
| Success | User Authenticated with temporary passcode | Успешная аутентификация по временному коду |
| Failed | Could not map IP address with organization | Нет подходящего узла аутентификации |
| Failed | Could not map IP address with shared auth client | Нет подходящего общего узла аутентификации |
| Failed | Org service is not active | Аккаунт неактивен |
| Failed | User not found | Пользователь не найден |
| Failed | Error with org settings | Ошибка в настройках аккаунта |
| Failed | User is locked | Пользователь заблокирован |
| Failed | Error with DB connection | Ошибка подключения к базе данных |
| Failed | Not allowed due to start date | Аутентификация до этой даты запрещена |
| Failed | Not allowed due to stop date | Аутентификация после этой даты запрещена |
| Failed | Not allowed due to week day | Аутентификация в этот день недели запрещена |
| Failed | User does not have an active token | У пользователя нет активных токенов |
| Failed | Wrong passcode value | Неверное значение временного кода доступа |
| Failed | Could not authenticate with any tokens | Невозможно аутентифицировать ни одним токеном |
Настройка узлов аутентификации
Добавьте целевые ресурсы в качестве узлов аутентификации, чтобы сервер аутентификации мог обрабатывать запросы.
Для этого:
- Войдите в консоль с учетными данными оператора виртуального сервера.
- Выберите сервер на вкладке Виртуальные серверы.
- Выберите вкладку второго ряда Настройки.
- Раскройте панель Узлы аутентификации.
- Нажмите Добавить.
- Введите условное имя целевого ресурса и его IP-адрес.
- Нажмите Сохранить.
Проверка
Для проверки корректности работы сервера аутентификации через Web API вы можете использовать команды curl или tcpdump.
curl
С помощью этой команды вы можете отправить произвольный запрос на аутентификацию и посмотреть ответ от сервера.
Для этого выполните:
curl -k -L -d "<данные для аутентификации>" -X POST "<https://mfa.indeed-cloud.ru/auth/>"
- Успешная аутентификация
- Неуспешная аутентификация
C:\Users\indeed> curl -k -L -d "login=indeed_user&passcode=481312" -X POST "https://mfa.indeed-cloud.ru/auth/"
{
"Auth":"Success",
"Details":"User authenticated with token GA000001",
"Time":"0.022203683853149414"
}
C:\Users\indeed> curl -k -L -d "login=indeed_user&passcode=111111" -X POST "https://mfa.indeed-cloud.ru/auth/"
{
"Auth":"Failed",
"Details":"Could not authenticate with any tokens",
"Time":"0.014974832534790039"
}
tcpdump
Эту команду для анализа сетевого трафика вы можете использовать для анализа HTTPS-трафика на стороне сервера аутентификации.
Формат (выдержка):
tcpdump– запустить захват и вывод сетевых пакетов;[-v]– выводить в расширенном объеме;[-vv]– выводить в максимальном объеме;[-n]– IP-адреса и номера портов вместо имен;[-i] <интерфейс>– захватывать пакеты на сетевом интерфейсе<интерфейс>;[port <порт>]– захватывать только пакеты на порт протокола<порт>;[host <хост>]– захватывать только пакеты на/от машины<хост>;[and|or|not]– пересекать|объединять|исключать условия.
Примеры:
# tcpdump -vv port https
# tcpdump -i any port radius or port https or port mysql