Двухуровневая модель безопасности
Уровень 1: Mutual TLS (mTLS) — Аутентификация
Все запросы к API требуют валидного клиентского сертификата для mTLS аутентификации. Сертификат необходимо получить у инфраструктурной команды, указав информацию о вашем приложении.Уровень 2: Bearer токен — Авторизация
В дополнение к mTLS, все запросы должны содержать валидный Bearer токен в заголовкеAuthorization:
Получение токена
Токен получается через OAuth 2.0 endpoint с использованием стандартного Client Credentials flow. Для получения токена используютсяclient_id и client_secret (mTLS не требуется для этого запроса).
Endpoint: https://auth.every.ru/oauth/v2/token
Метод: POST
Параметры:
grant_type=client_credentials(обязательно)client_id— идентификатор клиента (обязательно)client_secret— секрет клиента (обязательно)scope— список необходимых scope, разделённых пробелом (обязательно)
Scopes
API использует следующие scopes для контроля доступа:catalog.lounges— доступ к получению информации о бизнес-залахcatalog.fast_tracks— доступ к получению информации о фаст-трекахbooking.lounges— доступ к бронированию бизнес-заловbooking.fast_tracks— доступ к бронированию фаст-треков
booking.lounges.
Время жизни токена
Токен действителен в течение 1 часа (3600 секунд) с момента выдачи. После истечения срока действия необходимо получить новый токен.Формат токена
Токен представляет собой JWT (JSON Web Token) в формате{header}.{payload}.{signature}.
Обработка ошибок
При ошибках аутентификации API возвращает:- 401 Unauthorized — если отсутствует или недействителен клиентский сертификат или Bearer токен
- 403 Forbidden — если токен валиден, но отсутствует необходимый scope или неверный audience
Рекомендации
- Кэшируйте токены: Сохраняйте токен и время его получения, чтобы не запрашивать новый токен при каждом запросе
- Обновляйте токены заранее: Обновляйте токен за несколько минут до истечения срока действия
- Используйте минимальные scopes: Запрашивайте только те scopes, которые действительно необходимы для вашего приложения
- Безопасное хранение: Храните клиентские сертификаты, client_id/client_secret и токены в безопасном месте (не в коде)
- Разделяйте endpoints: Endpoint для получения токена (
/oauth/v2/token) не требует mTLS, а endpoint API (/api/v2/*) требует mTLS