Skip to main content
Пользователь уже вошёл, но перед переводом, сменой email или удалением данных вы хотите, чтобы он подтвердил действие ещё раз — нажатием в мессенджере, а не кодом из SMS.

Что выбрать

Подойдут оба механизма Veriqa, а различаются они тем, что видит пользователь и откуда начинается подтверждение. Признак выбора. Если в сообщении нужно назвать саму операцию — сумму, получателя, новый адрес — или действие начинается не в браузере пользователя, выбирайте API серверного подтверждения. Если достаточно убедиться, что за экраном сейчас сам пользователь, хватит step-up.

Что понадобится

  • сервер Veriqa с включённым каналом и подключённое к нему приложение — например, по рецепту Вход в веб-приложение;
  • доступ к бэкенду, который выполняет операцию.

Шаги: step-up

1

Отправьте новый authorize-запрос перед действием

Обычный запрос на вход, без специальных параметров — см. Что отправляете.
2

Проверьте auth_time

Выполняйте операцию, только если auth_time из нового id_token укладывается в ваше окно свежести — см. Что проверяете.
3

Сузьте канал, если нужно

Параметр acr_values направляет подтверждение в конкретный канал — см. Усиление: два разных канала.

Шаги: API серверного подтверждения

1

Объявите тип действия

В записи клиента опишите тип действия: слоты и текст сообщения — см. Настройте клиента.
2

Создайте подтверждение

Бэкенд получает токен по client credentials и вызывает POST /api/transaction/confirmation, передав в expected_identities идентичность владельца учётной записи — см. шаги 2–3.
3

Покажите QR-код или ссылку

Выведите channel_entry из ответа на экран пользователя — см. Создайте подтверждение.
4

Дождитесь исхода

Опрашивайте GET /api/transaction/{id}/result и выполняйте операцию при confirmed с совпавшим matched_type — см. Прочитайте исход.

Как проверить

Запустите операцию и подтвердите её на телефоне — операция должна выполниться. Затем повторите и отклоните подтверждение: операция выполниться не должна. Для API серверного подтверждения проверьте ещё подтверждение с чужого аккаунта: matched_type в результате должен остаться null.

Куда дальше