Переход на новый порядок авторизации API-запросов

Для сторонних сервисов из Каталога решений для бизнеса

301
content

В данной статье мы описали новый подход к авторизации обращений через API для сторонних сервисов из Каталога решений для бизнеса.

Технология OAuth 2.0 — оптимальный способ авторизации API-запросов сервисов. Но мы видим, что не все разработчики из каталога решений готовы сейчас поддержать эту технологию. Поэтому мы планируем внедрение упрощенной авторизации запросов к API для сервисов из каталога.

Изменение технологии авторизации важно для повышения безопасности. А в будущем это станет основой для новых возможностей для сервисов из Каталога решений: например, мы сможем предоставлять сервисам отдельные от продавцов лимиты запросов.

Изменения касаются только сервисов Каталога решений для бизнеса


Как работает авторизация API-запросов сейчас

Для получения доступа к данным продавца сервису сейчас достаточно одного из двух условий:

  1. Получить от продавца API-токен.
  2. Подключаться к профилю продавца через OAuth 2.0, если сервис поддерживает подключение через эту технологию.

Если вы подключены к профилям продавцов только через OAuth 2.0, изменения в авторизации вас не коснутся


Что меняется

Изменения коснутся сервисов, подключенных к профилям продавцов через API-токен

Для всех сервисов из Каталога решений для бизнеса будет сгенерирован специальный токен-секрет сервиса или Сервисный секрет.

Нужно будет передавать сервисный секрет во всех обращениях к данным продавца через WB API. По нему мы будем определять, какой именно сервис обращается к данным продавца от его имени.

Срок жизни сервисного секрета составляет 180 дней. Новый сервисный секрет будет сгенерирован за 30 дней до истечения срока. Два секрета будут валидны одновременно, вплоть до окончания срока жизни старого.

Сервисный секрет не заменяет User-Agent (UA), который сейчас передают сервисы в своих запросах. Удалять UA из запросов нельзя

Также продавцы получат возможность создавать четыре вида токенов вместо одного:

Вид токенаНазначениеДоступ
Базовый токенДля большинства интеграций, работающих с основными категориями данныхОсновные категории данных: заказы, товары и так далее. Некоторые новые категории данных в этом токене будут недоступны
Персональный токенДля собственных интеграций продавца, в том числе on-premise решений, установленных на серверах продавцовВсе категории данных API, в том числе те, к которым нет доступа через Базовый токен.

Персональный токен нельзя использовать при работе с любыми облачными сервисами, в том числе из Каталога решений. Исключение составляют on-premise решения
Сервисный токенДля подключения конкретного облачного сервиса из Каталога решенийДанные продавца.

Продавцу доступно быстрое создание токена под конкретный сервис по заранее заложенному шаблону настроек токена.

Токен будет работать только с тем сервисом, для которого он был выпущен, и не будет работать с on-premise решением из Каталога
Тестовый токенДля тестирования интеграции в процессе разработкиТестовые данные (песочница).

Без доступа к реальным данным продавца

Новый порядок работы с API

Все сервисы из Каталога решений для бизнеса при отправке API-запросов должны передавать:

  • предоставленный им продавцом Сервисный токен
  • Сервисный секрет, закодированный с использованием открытого стандарта JWT.

Чтобы получить сервисный секрет, напишите на почту business-solutions@rwb.ru

Токены, которые сервисы получили от продавцов до запуска новой схемы авторизации, продолжат работать как Базовые токены до завершения своего срока действия. Все обращения к WB API с использованием базовых токенов также должны быть подписаны сервисным секретом.

Новым сервисам, только что добавленным в каталог, можно временно использовать базовые токены до окончания их срока действия. Обращения с ними необходимо подписывать сервисным секретом.

Использование базовых токенов без сервисного секрета не допускается

Запрещено использовать Персональные и Сервисные токены других сервисов из Каталога решений для подключения новых продавцов. Запросы с такими токенами не будут проходить через WB API.

Не рекомендуем принимать Тестовый токен для подключения продавцов, так как он не предоставляет доступа к реальным данным. Использование тестового токена для оценки работы готового стороннего сервиса может негативно повлиять на опыт продавца.

  • Если ваш сервис — это готовое корпоративное решение в виде on-premise версии, которую разворачивают на серверах продавца, то такая интеграция считается собственной интеграцией продавца. В этом случае вы можете не подписывать обращения к WB API сервисным секретом. Используйте Персональный токен продавца для подключения.
  • Если сервис из Каталога решений распространяется одновременно в двух версиях — облачной и on-premise — сервисный секрет нужно передавать только в обращениях к облачной версии продукта WB API. Используйте Сервисный токен для подключения облачной версии продукта.

Как определить вид токена, полученного от продавца

Выпускаемые продавцами токены кодируются с использованием открытого стандарта JWT. Для проверки выданного типа токена декодируйте токен удобным вам способом:

  1. Определите тип токена на основе списка полей. Используйте поле acc в объекте claims с возможными значениями:
    • 1 — Базовый токен
    • 2 — Тестовый токен
    • 3 — Персональный токен
    • 4 — Сервисный токен
  2. Если тип токена Сервисный, то в поле for будет строка вида asid:efe9889d-5d7f-46dd-9ef5-c2772d5ec6b1. Необходимо взять значение после asid и сравнить его со своим asid:
    • Если значения совпадают, токен выписан для вашего сервиса.
    • Если значения не совпадают, токен выписан не для вашего сервиса и не может быть принят. Сообщите об этом пользователю.

Узнать значение своего asid можно из поля asid после декодирования сервисного секрета.


Как подписывать обращения к API сервисным секретом

В каждый запрос от имени продавца, помимо заголовка Authorization с токеном от продавца, необходимо добавлять заголовок X-Client-Secret со значением сервисного секрета, выданного конкретному сервису из Каталога.

Пример запроса к WB API с сервисным секретом:

curl \
   -H "Authorization: Bearer ${ACCESS_TOKEN}" \
   -H "X-Client-Secret: ${SECRET_TOKEN}" \
   https://marketplace-api.wildberries.ru/api/v3/orders/new

Ответы

Код ответаОписаниеПримеры текста ошибки
2xxЛюбой успешный ответ любого метода
401 Unauthorized• Запрос подписан отозванным секретом сервиса либо секретом с истекшим сроком жизни.

• Не удалось проверить секрет: неверный формат секрета либо запрос подписан недействительной подписью
Тексты ошибок 401 будут те же, что и при проверке access-токена
403 Forbidden• Запрос к данным продавца не подписан секретом сервиса либо запрос содержит сервисный токен другого сервиса.

• Попытка использования секрета с персональным токеном
secret token required

access token and secret token belong to different services

secret is not allowed

Этапы внедрения

Этап 1

Предварительная дата — октябрь 2025

  1. Всем сервисам мы сгенерируем и передадим индивидуальные Сервисные секреты. Вы можете перевыпустить свой секрет, для этого напишите на почту business-solutions@rwb.ru.
  2. На своей стороне сервис должен:
    • Внедрить дополнительный сервисный секрет в подпись всех API-запросов.
    • Запустить процесс определения типа токена, переданного продавцом.
    • Не принимать Персональные или Сервисные токены, выпущенные для других сервисов из Каталога.

Этап 2

Предварительная дата — ноябрь 2025

  1. Для продавцов на Портале будет добавлена возможность выпускать Персональные, Сервисные и Базовые токены.
  2. Сервисам будут предоставлены ссылки, которые можно будет добавить в инструкции по подключению сервисов к профилю продавца на WB Партнёры. По ссылке продавец перейдет к авторизации на WB Партнёры и далее к созданию Сервисного токена под конкретный облачный сервис. Все обязательные настройки токена для работы с сервисом будут автоматически проставлены заранее. Продавцу останется только подтвердить создание токена и передать его сервису для подключения интеграции.
  3. Сервис не должен принимать Персональные или Сервисные токены других сервисов из Каталога решений для подключения облачных версий продуктов.
  4. Сервис должен обновить пользовательские инструкции для продавцов, учитывая изменение процесса создания и передачи токенов. Если сервис распространяется в облачной и on-premise версиях, в инструкции нужно указать, какой тип токена необходимо использовать продавцу для подключения своей версии продукта.

Контакты и поддержка

По всем вопросам обращайтесь: