Как это работает
Краткий жизненный цикл входа через приложение, 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 как основание для доступа к защищённым данным.