Как это работает

Краткий жизненный цикл входа через приложение, Tapok и Сбер ID.

Как работает Tapok

Полный поток

Приложение          Tapok                 Сбер ID
    │                  │                      │
    │ /auth/authorize  │                      │
    ├─────────────────▶│                      │
    │                  ├──── вход ───────────▶│
    │                  │◀── callback ─────────┤
    │◀── code + state ─┤                      │
    │                  │                      │
    │ /auth/token      │                      │
    ├─────────────────▶│                      │
    │◀── результат ────┤                      │

SDK создаёт:

  • случайный state;
  • nonce;
  • PKCE verifier и S256 challenge.

В redirect-flow callback открывается в той же вкладке, поскольку verifier хранится в sessionStorage. Popup-flow держит verifier только в памяти SDK.

Hosted

tapok.login() создаёт привязанный к origin Auth Request, проверяет источник и состояние postMessage, обменивает одноразовый code по PKCE и получает 10-минутный JWT с отдельным для origin UID и nullable-признаком 18+. Backend проверяет JWT по JWKS.

const tapok = new Tapok()
const result = await tapok.login()

Connect

Frontend проверяет state и передаёт code с verifier своему backend. Backend добавляет client_id и API key и выполняет обмен через Tapok.

const callback = connect.finishSignIn()
await sendToOwnBackend(callback)

Connect-приложение получает pairwise ID и только подтверждённые пользователем scopes.

Два callback

  • Сбер ID → Tapok — внутренний callback платформы.
  • Tapok → приложение — ваш точный redirectUri.

Интеграции нужно настраивать только второй адрес.

Выход

  • /auth/logout завершает текущую сессию;
  • /auth/revoke отзывает текущую Connect-связь/доступ;
  • собственную серверную сессию Connect-приложение завершает самостоятельно.

Не используйте browser storage как основание для доступа к защищённым данным.