> ## Documentation Index
> Fetch the complete documentation index at: https://veriqa.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Hop-режим

> Короткая одноразовая ссылка в QR-коде вместо ссылки канала: лёгкий QR-код, сигнал «отсканировано» на компьютере, страница запуска на телефоне и контекст сканирующего устройства. Чем он лучше и как его включить.

В hop-режиме QR-код на странице входа несёт не ссылку мессенджера, а **короткую одноразовую ссылку
на ваш сервер Veriqa**. Телефон открывает её, сервер отмечает скан и отправляет пользователя дальше —
в мессенджер или почту. Этот один лишний переход и даёт лучший пользовательский опыт, который есть в
Veriqa.

<Tip>
  **Hop-режим рекомендуем включать.** По умолчанию он выключен только потому, что ему нужен issuer,
  заданный абсолютным адресом `https` и доступный телефону. Как включить — [ниже](#как-включить).
</Tip>

## Главные отличия

| | Без hop-режима | С hop-режимом |
| - | - | - |
| **Что в QR-коде** | Ссылка канала — диплинк мессенджера или письмо. Она длинная, и QR-код получается плотным | Короткая ссылка на ваш сервер. QR-код лёгкий, камера любого телефона читает его сразу, и плотность не зависит от канала |
| **Что видит компьютер после скана** | Ничего, пока канал не ответил на старт или не пришло подтверждение | Сразу: «QR-код отсканирован. Продолжайте в Telegram.» Выбор каналов сменяется инструкцией «Продолжите на телефоне…» с кнопкой «Выбрать другой способ» |
| **Один QR-код на все каналы** | Нет — у каждого канала свой QR-код | Можно: `QrMode: Unified`, канал пользователь выбирает на телефоне |
| **Если приложение мессенджера не открылось** | Помочь нечем: переход целиком на стороне мессенджера | Страница запуска на телефоне сама открывает приложение и держит кнопку, чтобы повторить |
| **Что известно о сканирующем телефоне** | Ничего | Время, IP, браузер, ОС и тип устройства — сигналы риска рядом с [контекстом инициатора](/docs/ru/concepts/initiator-context) |
| **Повторное открытие ссылки из другого браузера** | Не видно | Помечается — `WarnOnRepeatScan`, по умолчанию включено |
| **Что нужно от развёртывания** | Ничего сверх обычного | Issuer — абсолютный адрес `https`, доступный телефону |

## Как это выглядит для пользователя

1. На компьютере, телевизоре или терминале пользователь сканирует QR-код камерой телефона.
2. Телефон открывает короткую ссылку. Страница входа на компьютере в ту же секунду пишет «QR-код
   отсканирован» и показывает, что делать дальше.
3. Телефон переходит в мессенджер — сразу или через страницу запуска, смотря по
   [стилю перехода](#стиль-перехода).
4. Пользователь подтверждает вход одним касанием, и вход завершается на компьютере.

Отсканировал не тем устройством или передумал — кнопка «Выбрать другой способ» возвращает выбор
каналов на той же странице, с тем же входом. Как только канал ответил на старт, кнопка уходит: вход
уже привязан к этому каналу.

## Стиль перехода

| `RedirectStyle` | Что получает телефон |
| - | - |
| `Interstitial` (по умолчанию) | Страницу запуска: она сама открывает приложение мессенджера и держит кнопку на случай, если оно не открылось |
| `Direct` | Сразу перенаправление в мессенджер, без промежуточной страницы |

`Interstitial` надёжнее там, где прямой переход в приложение мессенджера срабатывает не всегда. У
канала Email свои правила — см.
[Email в hop-режиме](/docs/ru/guides/channels#email-в-hop-режиме).

## Как включить

```json appsettings.json theme={null}
{
  "Veriqa": {
    "OpenIddict": {
      "Server": { "Issuer": "https://auth.example.com" }
    },
    "HopMode": { "Enabled": true }
  }
}
```

Режим включается для всего сервера, для отдельного канала (`Veriqa:Channels:{Channel}:HopEnabled`) или
для одного приложения — в записи его OIDC-клиента. Все ключи и порядок, в котором они перекрывают
друг друга, — в справочнике [Veriqa:HopMode](/docs/ru/reference/configuration#veriqahopmode).

Каждая hop-ссылка строится на `Veriqa:OpenIddict:Server:Issuer`, поэтому при включённом режиме
issuer обязан быть абсолютным адресом `https` — иначе сервер не стартует. Чтобы попробовать режим на
своей машине, выставьте Veriqa через HTTPS-туннель — см.
[Локальная проверка интеграции](/docs/ru/integrations/local-testing#hop-режим-на-локальном-стенде).

## Безопасность

* **Это не сокращатель ссылок.** Куда вести пользователя, сервер всегда выводит из транзакции, а не
  берёт из ссылки, — открытым редиректом hop-ссылку не сделать.
* **Контекст сканирующего телефона — сигнал риска, а не фактор аутентификации.** Он помогает
  распознать чужой запрос, но вход по-прежнему подтверждает сам пользователь в своём мессенджере.
  Что собирать, решают ключи `HopMode.Collect*`: IP, браузер и тип устройства — по умолчанию да,
  отпечаток браузера и геолокация — только если вы их включили.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.