Skip to main content

Агент 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
СтатусДеталиПричина
SuccessUser Authenticated with token <token number>Успешная аутентификация по токену <номер токена>
SuccessUser Authenticated with temporary passcodeУспешная аутентификация по временному коду
FailedCould not map IP address with organizationНет подходящего узла аутентификации
FailedCould not map IP address with shared auth clientНет подходящего общего узла аутентификации
FailedOrg service is not activeАккаунт неактивен
FailedUser not foundПользователь не найден
FailedError with org settingsОшибка в настройках аккаунта
FailedUser is lockedПользователь заблокирован
FailedError with DB connectionОшибка подключения к базе данных
FailedNot allowed due to start dateАутентификация до этой даты запрещена
FailedNot allowed due to stop dateАутентификация после этой даты запрещена
FailedNot allowed due to week dayАутентификация в этот день недели запрещена
FailedUser does not have an active tokenУ пользователя нет активных токенов
FailedWrong passcode valueНеверное значение временного кода доступа
FailedCould not authenticate with any tokensНевозможно аутентифицировать ни одним токеном

Настройка узлов аутентификации

Добавьте целевые ресурсы в качестве узлов аутентификации, чтобы сервер аутентификации мог обрабатывать запросы.

Для этого:

  1. Войдите в консоль с учетными данными оператора виртуального сервера.
  2. Выберите сервер на вкладке Виртуальные серверы.
  3. Выберите вкладку второго ряда Настройки.
  4. Раскройте панель Узлы аутентификации.
  5. Нажмите Добавить.
  6. Введите условное имя целевого ресурса и его IP-адрес.
  7. Нажмите Сохранить.

Проверка

Для проверки корректности работы сервера аутентификации через 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"
}

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