Ответ
Токен — это компактная строка, выступающая в роли учетных данных, которая выдается сервером после успешной аутентификации и используется клиентом для доступа к защищенным ресурсам.
Основные типы и их применение:
-
Токены доступа (Access Tokens):
- Назначение: Краткосрочный ключ для доступа к API.
- Формат: Часто JWT (JSON Web Token).
- Передача: В заголовке
Authorization: Bearer <token>.GET /api/user/profile HTTP/1.1 Host: api.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... - Структура JWT:
header.payload.signature. Полезная нагрузка (payload) содержит claims (утверждения), например, ID пользователя и срок действия.
-
CSRF-токены (Токены защиты от межсайтовой подделки запроса):
- Назначение: Защита state-changing операций (POST, PUT, DELETE) от выполнения несанкционированными сайтами.
- Принцип: Уникальное, непредсказуемое значение, генерируемое сервером и передаваемое клиенту (обычно в скрытом поле формы или в cookie). Сервер проверяет совпадение токена из тела запроса и из cookie сессии.
<form action="/transfer" method="POST"> <input type="hidden" name="csrf_token" value="a1b2c3d4e5f6"> <!-- другие поля формы --> </form>
-
Refresh Tokens: Долгоживущие токены, используемые для получения новых Access Tokens без повторного ввода логина и пароля.
Преимущества токенов перед сессиями на основе cookies:
- Stateless сервер: Серверу не нужно хранить состояние сессии, что улучшает масштабируемость.
- Кроссплатформенность: Легко использовать в мобильных и desktop-приложениях, SPA.
- Гибкость: В токен можно закодировать права доступа (scope) и другую метаинформацию.