💡 DevTools для этого симулятора: Network — все реальные запросы к httpbin.org (видно заголовки Authorization, X-QO-Session-ID, X-API-Key) Application → Storage — localStorage и Cookies (qo_jwt, qo_access_token, qo_session_id, qo_refresh_token) Console — декодирование Base64: atob("...")
Session Token Сессионный токен
Сервер создаёт уникальный session_id и хранит его в своей БД. Клиент получает его в Cookie — и отправляет обратно с каждым запросом.
1. Идентификация
2. Аутентификация
3. Авторизация
admin / admin123
🛡 Администратор
ivan / pass123
👨🎓 Студент
ivan / wrong
❌ Неверный пароль
Авторизован
Ответ от httpbin.org ↑ видно в DevTools → Network
Cookie в браузере
// Войдите, чтобы увидеть session_id
Запрос к API (каждый)
// После входа каждый запрос несёт Cookie автоматически
⚠ Почему не Cookie в Network? Браузер запрещает устанавливать заголовок Cookie через JS (fetch/XHR) из соображений безопасности — это делает только сам браузер. Поэтому в реальный запрос идёт X-QO-Session-ID — чтобы показать идею. Сам cookie qo_session_id реально хранится в Application → Cookies.
JWT JSON Web Token
Формат Header.Payload.Signature. Сервер не хранит токен — вся информация закодирована внутри. Хранится в localStorage, передаётся в заголовке Authorization.
1. Идентификация
2. Аутентификация
3. Авторизация
admin / admin123
🛡 Администратор
ivan / pass123
👨🎓 Студент
mentor / mentor456
👩🏫 Ментор
Авторизован
Ответ от httpbin.org ↑ видно в DevTools → Network
JWT токен H.P.S
// После входа здесь появится токен
Authorization заголовок
Authorization: Bearer ...
Декодированный токен
● HEADER (красный)
// войдите для декодирования
● PAYLOAD (жёлтый)
// войдите для декодирования
● SIGNATURE (синий) — серверная подпись, не декодируется без секретного ключа
Access Token живёт 30 секунд в этом демо (в реальности 15–30 мин). Когда истекает — Refresh Token тихо получает новый.
admin / admin123
🛡 Администратор
ivan / pass123
👨🎓 Студент
Ответ от httpbin.org ↑ видно в DevTools → Network
Access Token — истекает через
30
В реальности: 15–30 минут
Refresh Token — истекает через
30 дней
Хранится в HttpOnly Cookie · никогда не передаётся в обычных запросах
Access Token localStorage
// После входа
Refresh Token Cookie
// После входа
⚡ Обновление токена
API Key Ключ API
Статичный ключ без срока жизни. Нет входа в систему — только ключ. Передаётся в заголовке или URL-параметре.
Как работает: клиент получает API Key один раз (например, в личном кабинете сервиса) и хранит его. Идентификация и аутентификация — по ключу. Нет логина, нет сессии.
HTTP запрос
Ответ от httpbin.org ↑ видно в DevTools → Network
Сравнение способов и безопасность
# ✅ X-API-Key заголовок (рекомендуется)GET/v1/coursesX-API-Key:sk_live_qo_1234567890abcdef → Не виден в URL-логах и истории браузера# ⚠️ URL-параметр (не рекомендуется)GET/v1/courses?api_key=sk_live_qo_1234567890abcdef → Ключ виден в адресной строке, логах сервера, Referer-заголовках# ✅ Authorization заголовокGET/v1/coursesAuthorization:ApiKey sk_live_qo_1234567890abcdef
Basic Auth Базовая авторизация
Логин и пароль кодируются в Base64 и передаются в заголовке Authorization: Basic ... при каждом запросе.
⚠️ Важно: Base64 — это кодирование, не шифрование. Любой может декодировать его обратно за секунду. Basic Auth безопасен только поверх HTTPS.
ivan:pass123
aXZhbjpwYXNzMTIz
Ответ от httpbin.org ↑ видно в DevTools → Network
HTTP запрос с Basic Auth
Декодирование в DevTools Console
Попробуй сам в консоли браузера (F12 → Console)
// Кодирование:btoa("ivan:pass123") // → "aXZhbjpwYXNzMTIz"// Декодирование — это может сделать ЛЮБОЙ!atob("aXZhbjpwYXNzMTIz") // → "ivan:pass123"// Именно поэтому Basic Auth нужен только поверх HTTPS
OAuth 2.0 Authorization Code Flow
Что происходит шаг за шагом, когда пользователь нажимает «Войти через Google». Нажимай «Следующий шаг» для прохождения потока.
👤
Пользователь
🖥️
Приложение (quickoffer.ru)
🔐
Auth Server (Google)
📦
Resource Server (Google API)
Шаг 0 / 8
Нажмите «Следующий шаг» для начала
// Здесь будет показан HTTP-запрос или ответ для каждого шага
💡 Ключевая идея OAuth: приложение quickoffer.ru никогда не видит ваш пароль от Google.
Google сам проверяет личность и выдаёт приложению только токен доступа с ограниченными правами.
Лог событий
ИНФО
Выбери режим и войди в систему
localStorage
пусто
Cookies
пусто
DevTools (F12) Network — реальные запросы
Application → Local Storage
Application → Cookies