Декодирование и проверка токенов WB API

Структура JWT, расшифровка полей и диагностика проблем

content

Что такое JWT и зачем декодировать токен

Токены WB API создаются по стандарту JWT (JSON Web Token) — международному стандарту RFC 7519 для безопасной передачи информации. JWT представляет собой строку из трёх частей, разделённых точками: заголовок, полезная нагрузка и подпись. Внутри токена в закодированном виде хранится информация о правах доступа, сроках действия и других параметрах.

Подробнее о типах токенов — в статье «Способы подключения к WB API: токен и OAuth 2.0»

Когда полезно декодировать токен

Определение типа токена. Если вы не уверены, какой токен перед вами — Базовый, Персональный, Сервисный или Тестовый — декодирование покажет это.

Проверка срока действия. Все токены действуют 180 дней. Декодирование покажет точную дату и время истечения.

Просмотр категорий и прав. Декодирование покажет, к каким категориям API есть доступ, а также режим: только чтение (RO) или чтение и запись (RW).

Диагностика проблем. Если API возвращает ошибки доступа, декодирование — первый шаг к пониманию причины.


Как декодировать токен

Официальный инструмент

WB API предоставляет безопасный инструмент декодирования с расширенной проверкой:

dev.wildberries.ru/jwt

Пошаговая инструкция

  1. Откройте инструмент — перейдите на страницу декодирования токенов.
  2. Вставьте токен целиком в поле ввода. Токен начинается с eyJ и представляет собой длинную строку символов.
  3. Нажмите «Декодировать» — на экране появится подробная информация о токене.
  4. Изучите результаты — информация разделена на блоки: тип, срок действия, категории доступа, статус.

Используйте только официальный инструмент от WB API. Сторонние онлайн-декодеры JWT могут сохранять ваши токены в своих базах данных. Токен — это ключ к вашему магазину, относитесь к нему как к паролю. Подробнее о защите токенов — в статье «Безопасность данных продавца при работе с WB API».


Структура токена и расшифровка полей

После декодирования вы увидите следующие данные:

ПараметрПоле JWTОписаниеПример
Тип токенаaccЧисловой идентификатор типа токена1 — Базовый, 2 — Тестовый, 3 — Персональный, 4 — Сервисный
НазначениеforДля кого выпущен токенself — Персональный, asid:{ID сервиса} — Сервисный
ID токенаidУникальный идентификатор токенаUUID
ID продавцаsidВаш идентификатор в системе WildberriesUUID
Срок действияexpДата и время истечения (Unix timestamp)1733360429
Дата созданияiatДата и время создания (Unix timestamp)1717588829
Категории данныхsБитовая маска доступных категорий264
ТестовыйtПризнак тестового токенаtrue / false
ID сервисаasidИдентификатор авторизованного сервисаUUID сервиса
Режим доступаТолько чтение (RO) или чтение и запись (RW)Отображается в UI декодера
СтатусАктивен, истёк, отозван или неактивенОтображается в UI декодера

Статусы токена

Активен — токен работает, можно использовать для запросов к API.

Истёк — прошло 180 дней с момента создания. Необходимо создать новый токен.

Отозван — токен был удалён в личном кабинете. Необходимо создать новый.

Неактивен — есть проблемы с доступом (например, сменился владелец кабинета или кабинет заблокирован).


Что делать, если декодирование выявило проблему

После декодирования вы можете обнаружить, что токен не работает. Наиболее частые причины:

  • Статус «Истёк» — прошло 180 дней, нужно создать новый токен
  • Статус «Отозван» — токен был удалён в личном кабинете
  • Статус «Неактивен» — сменился владелец кабинета или кабинет заблокирован
  • Нет доступа к нужной категории — при создании токена не была выбрана нужная категория, нужно создать новый токен
  • Не принята оферта — для некоторых категорий (например, «Поставки») необходимо принять соответствующий договор в личном кабинете

Во всех случаях решение — создать новый токен с нужными настройками. Подробный разбор ошибок 401 и 403 с пошаговыми решениями — в статье «Ошибки авторизации WB API и их решение».


Частые вопросы


Для разработчиков: определение типа токена

Пример структуры декодированного токена

{
  "alg": "ES256",
  "kid": "20231025v1",
  "typ": "JWT",
  "exp": 1733360429,
  "s": 32494,
  "id": "0197402d-c107-7498-ab0d-418082b62b24",
  "sid": "fb25c9e9-cae8-52db-b68e-736c1466a3f5",
  "t": false,
  "acc": 1,
  "iat": 1717588829
}

Определение типа токена по полям

Тип токенаaccfort
Базовый1Поле отсутствуетfalse
Тестовый2Поле отсутствуетtrue
Персональный3selffalse
Сервисный4asid:{ID сервиса}false

Быстрый способ: прочитайте поле acc — оно напрямую указывает тип токена.

Для партнёрских сервисов важна дополнительная проверка: у Сервисного токена (acc=4) поле asid в значении for должно совпадать с ID вашего сервиса. Если не совпадает — токен выпущен для другого сервиса.

Расшифровка битовой маски s

Поле s — битовая маска, каждый бит означает доступ к определённой категории API:

БитКатегория
1Контент
2Аналитика
3Цены и скидки
4Маркетплейс
5Статистика
6Продвижение
7Вопросы и отзывы
9Чат с покупателями
10Поставки
11Возвраты
12Документы
13Финансы
16Управление пользователями
30Только чтение

Чтобы проверить доступ к категории, примените побитовое И: s & (1 << номер_бита) != 0.

Программное декодирование

JWT-токен можно декодировать без проверки подписи для чтения данных. Используйте проверенные библиотеки для работы с JWT. Не полагайтесь только на данные из токена — для критичных операций проверяйте статус через API.

Подробнее о работе с токенами в партнёрских сервисах — в статье «Работа с токенами для партнёрских сервисов».


Что дальше