Перейти к содержанию
Innovialabs

Авторизация в Postman: API-ключи, Bearer-токены и OAuth 2.0

Практика4 мин

Коротко

Авторизацию в Postman задают один раз на уровне коллекции, а запросы наследуют её через Inherit auth from parent; токены храните в переменных окружения, обновляйте pre-request скриптом, а секреты держите в локальных значениях или Vault, а не в общих данных.

Где настраивается авторизация

У каждого запроса, папки и коллекции в Postman есть вкладка Authorization. Выбранный тип авторизации Postman сам превращает в нужный заголовок или параметр запроса.

Главное правило: настраивайте авторизацию на уровне коллекции. У новых запросов по умолчанию стоит Inherit auth from parent — они берут настройки у папки или коллекции. Если токен поменяется, его обновят в одном месте, а не в каждом запросе.

Если конкретному запросу авторизация не нужна, например эндпоинту логина, выберите для него No Auth.

API Key

Простейший вариант: статический ключ, который сервис выдаёт в личном кабинете.

  • Key — имя заголовка или параметра из документации API, например X-API-Key;
  • Value — сам ключ, лучше через переменную: {{api_key}};
  • Add to — Header или Query Params.

Предпочитайте заголовок: ключ в URL попадает в историю, логи серверов и прокси.

Bearer Token

Используется, когда API выдаёт токен доступа, чаще всего после логина. Postman добавляет заголовок:

Authorization: Bearer <token>

В поле Token укажите переменную {{access_token}}. Токен можно сохранить автоматически: в запросе логина на вкладке Scripts (раздел post-response, в старых версиях Tests) добавьте:

const data = pm.response.json();
pm.environment.set("access_token", data.access_token);

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

OAuth 2.0

Для OAuth 2.0 Postman умеет сам получать токен. В разделе Configure New Token выберите Grant Type:

Grant TypeКогда используется
Authorization Code (With PKCE)Вход от имени пользователя через браузер, рекомендуемый вариант
Authorization CodeТо же без PKCE, для старых серверов
Client CredentialsСервис обращается к API от своего имени, без пользователя
Password CredentialsУстаревший вариант, используйте только если сервер иначе не умеет

Основные поля: Auth URL, Access Token URL, Client ID, Client Secret, Scope и Callback URL. Для потоков через браузер включите Authorize using browser и добавьте в настройках OAuth-приложения на стороне провайдера тот callback URL, который показывает Postman.

Нажмите Get New Access Token, войдите и нажмите Use Token. В новых версиях Postman есть автоматическое обновление токена, если сервер выдаёт refresh token. Проверьте эту настройку в своей версии.

Автообновление токена pre-request скриптом

Если API выдаёт короткоживущие токены, а встроенного обновления нет, добавьте pre-request скрипт на уровне коллекции. Он выполняется перед каждым запросом и получает новый токен, только когда старый истёк:

const expiresAt = Number(pm.environment.get("token_expires_at") || 0);

if (Date.now() > expiresAt) {
  pm.sendRequest({
    url: pm.environment.get("token_url"),
    method: "POST",
    header: { "Content-Type": "application/x-www-form-urlencoded" },
    body: {
      mode: "urlencoded",
      urlencoded: [
        { key: "grant_type", value: "client_credentials" },
        { key: "client_id", value: pm.environment.get("client_id") },
        { key: "client_secret", value: pm.environment.get("client_secret") }
      ]
    }
  }, (err, res) => {
    if (err) { console.error(err); return; }
    const data = res.json();
    pm.environment.set("access_token", data.access_token);
    pm.environment.set("token_expires_at", Date.now() + (data.expires_in - 60) * 1000);
  });
}

На коллекции выберите Bearer Token со значением {{access_token}}. Запас в 60 секунд нужен, чтобы токен не истёк прямо во время запроса. Если провайдер не возвращает expires_in, обновляйте токен по ответу 401.

Как не светить секреты

Общий воркспейс видят все участники, поэтому:

  • Храните секреты в переменных окружения, а не в запросах. У переменной есть начальное значение (initial), которое синхронизируется с командой, и текущее (current), которое остаётся на вашем компьютере. Секрет кладите только в current.
  • Отмечайте переменные как secret — значение будет скрыто в интерфейсе.
  • Используйте Postman Vault, если он доступен: секреты хранятся локально и подставляются как {{vault:имя}}.
  • Не экспортируйте коллекции и окружения с реальными токенами, особенно в репозиторий.
  • Разделяйте окружения: dev, staging и production с разными ключами, а production-ключи выдавайте как можно меньшему числу людей.
  • Если ключ всё же попал в общий доступ, отзовите его у провайдера, а не просто удалите из Postman.

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

Чаще всего запрос не наследует авторизацию: у него выбран другой тип вместо Inherit auth from parent. Также проверьте, выбрано ли нужное окружение и не истёк ли токен. Посмотрите итоговые заголовки в Postman Console.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.