Rusau LearnВойти

Тестирование API

Авторизация в Postman и cURL: токен, типы авторизации и импорт запросов

Авторизацию в Postman настраивают на вкладке Authorization. Её можно задать у отдельного запроса, но удобнее у коллекции или папки, и тогда запросы внутри наследуют её сами. Чаще всего это Bearer Token: сервер выдаёт токен после регистрации или входа, и Postman отправляет его в заголовке Authorization. Basic Auth передаёт логин и пароль с каждым запросом, API Key нужен для интеграций сервисов, а OAuth 2.0 стоит за входом через Google или GitHub. cURL – это запрос, записанный одной командой. Её копируют из Swagger или DevTools и импортируют в Postman, чтобы не собирать запрос вручную.

Мой видеоурок: #8 Postman для тестировщика 2.0 / Типы авторизации и CURLОткрыть на YouTube
Bearer Token
самый частый тип авторизации, токен уходит в заголовке
Inherit auth
запросы берут авторизацию у папки или коллекции
Бесплатно
урок с заданиями в моём базовом курсе

Идентификация, аутентификация и авторизация

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

Права зависят от роли. У обычного пользователя, модератора, администратора и суперпользователя разные наборы разрешений на четыре операции с данными: создание, чтение, изменение и удаление (CRUD). Один может только читать, другому разрешено ещё редактировать и удалять. Регистрация и вход обычно идут POST-запросами, потому что клиент отправляет на сервер данные, чаще всего логин и пароль.

Вкладка в Postman и заголовок запроса называются Authorization, хотя по смыслу там настраивают аутентификацию: каким способом запрос докажет серверу, кто его отправил. Какие права есть у пользователя, сервер решает уже сам.

На практике это проверяют ролями. В админке интернет-магазина тестировщик входит менеджером, которому нельзя удалять пользователей, и отправляет из Postman запрос DELETE на удаление пользователя с токеном этого менеджера. Ожидаемый ответ – 403 Forbidden: сервер знает, кто пришёл, но действие ему запрещено. Без токена тот же запрос должен вернуть 401 Unauthorized. Если сервер ответил 200 и пользователь исчез, это дефект авторизации: кнопку удаления менеджеру в интерфейсе не показывают, но сам запрос проходит.

Как работает токен авторизации

Пользователь впервые регистрируется в системе: клиент отправляет POST-запрос с логином и паролем, сервер сохраняет данные и вместе с ответом возвращает токен. В учебном сервисе reqres.in, на котором я показываю урок, регистрация отвечает кодом 200 и телом с идентификатором пользователя и токеном. Своих пользователей там завести нельзя, сервис принимает только данные из примеров в своей документации.

Браузер обычно хранит токен в куках. Каждый следующий запрос, которому нужна авторизация, уходит на сервер с этим токеном в специальном заголовке. При входе всё повторяется: те же логин и пароль на адрес входа возвращают токен. Если выйти из системы, куки с токеном удаляются, и в следующий раз придётся войти заново.

Токен избавляет от необходимости передавать пароль с каждым запросом. Обычно у него есть срок действия, после которого сервер перестаёт его принимать. Кто получил чужой токен, тот действует от имени его владельца, поэтому токен берегут так же, как пароль.

Срок действия тоже проверяют. Допустим, в мобильном банке токен живёт 15 минут. Тестировщик ждёт, пока он истечёт, или подставляет в Postman старый токен и проверяет, что сервер отвечает 401, а приложение переводит на экран входа без ошибки и зависания.

Типы авторизации в Postman

Тип выбирают в выпадающем списке на вкладке Authorization. Вариантов там больше десятка, но в работе встречаются немногие.

  • No Auth

    Авторизации нет. Так отправляют открытые запросы, например регистрацию или получение публичного списка.

  • Basic Auth

    Логин и пароль уходят с каждым запросом в заголовке Authorization, и сервер проверяет, что такая пара существует. Токенов здесь нет. Пара только закодирована в Base64, прочитать её может кто угодно, и на новых проектах, по моему опыту, такую авторизацию почти не используют.

  • Bearer Token

    Самый частый вариант. Токен из ответа на вход вставляют в поле Token, и Postman отправляет заголовок Authorization со словом Bearer и самим токеном. Токены в формате JWT обычно передают этим же способом.

  • API Key

    Ключ, который генерируют в одном сервисе и вставляют в другом. Так обычно настраивают интеграции, например Jira с системой управления тестированием вроде TestRail. В Postman задают имя ключа, значение и место, куда он уйдёт: в заголовки или в параметры адреса. В учебном API Petstore ключ передают в заголовке api_key.

  • OAuth 2.0

    Часть данных для входа берётся из другого сервиса. Это кнопки вроде Sign up with Google или Sign up with GitHub: сайт через API обращается к Google или GitHub и получает оттуда данные о пользователе. Механизм сложнее остальных, на старте с ним работают редко, но знать о нём нужно.

Как настроить токен на всю коллекцию

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

Токен – секретные данные. По моему опыту, коллекция с токеном в переменной может потерять публичность, потому что Postman распознаёт секреты. Для таких значений есть переменные типа secret и хранилище Vault, но на старте они не понадобятся.

  • 1. Получить токен

    Отправить запрос регистрации или входа и найти токен в теле ответа.

  • 2. Сохранить его в переменную

    Завести переменную коллекции, например token, и вставить в неё значение. Если токен поменяется, исправлять придётся одно место.

  • 3. Указать тип у коллекции

    Открыть коллекцию, на вкладке Authorization выбрать Bearer Token и вписать в поле {{token}}. Сохранить изменения сочетанием Ctrl+S или Cmd+S.

  • 4. Проверить наследование

    У запросов внутри на вкладке Authorization должно стоять Inherit auth from parent. Тогда запрос берёт авторизацию у своей папки, а если папки нет, у коллекции.

  • 5. Проверить, что заголовок ушёл

    Отправить запрос и открыть его заголовки. Среди них появится Authorization со словом Bearer и токеном из переменной.

  • 6. Забирать токен скриптом

    Чтобы не копировать токен после каждого входа, у запроса входа на вкладке Scripts в разделе Post-response пишут строку pm.collectionVariables.set("token", pm.response.json().token). Она достаёт токен из тела ответа и кладёт его в переменную коллекции. Такой код я прошу у ChatGPT, но ИИ ошибается, так что проверять результат всё равно нужно самому.

Что такое cURL и как импортировать его в Postman

cURL – программа командной строки для отправки запросов. В её команде записаны метод, адрес, заголовки и тело запроса. Команду можно выполнить в терминале, а можно вставить в Postman, и он сам разложит её по вкладкам. Я называю это лайфхаком, который избавляет от ручного копирования адреса, тела и параметров.

Готовую команду берут в двух местах. Swagger показывает cURL после кнопок Try it out и Execute. В DevTools на вкладке Network по запросу щёлкают правой кнопкой и выбирают Copy, затем Copy as cURL. В Postman команду вставляют в окно Import или прямо в строку адреса, и метод, адрес, заголовки и тело встают на свои места.

Тот же приём помогает в баг-репорте. Если при оформлении заказа сервер отвечает ошибкой, тестировщик копирует запрос через Copy as cURL и вставляет команду в репорт. Разработчик выполнит её у себя и получит тот же запрос с теми же заголовками и телом. Токен из такой команды перед отправкой в общий трекер убирают.

Ещё быстрее импортировать описание API целиком. Если у Swagger есть ссылка на JSON с описанием сервиса, файл сохраняют и перетаскивают в окно Import, и Postman создаёт коллекцию со всеми запросами, примерами тел и авторизацией. Новичкам при этом лучше сначала собрать запросы своими руками: готовый импорт экономит время, но не объясняет, как запросы устроены.

Пример команды входа: curl -X POST https://api.example.com/login -H "Content-Type: application/json" -d '{"email": "user@example.com", "password": "secret"}'. Ниже она разобрана по частям.

  • curl

    Имя программы. Она есть в терминале macOS и Linux и встроена в Windows 10 и 11. В Windows PowerShell слово curl бывает псевдонимом другой команды, поэтому там надёжнее писать curl.exe.

  • -X POST

    Метод запроса. Если нет ни -X, ни тела, curl отправляет GET.

  • -H

    Заголовок. Их может быть несколько, например Content-Type и Authorization со словом Bearer и токеном.

  • -d

    Тело запроса. Здесь в нём JSON с почтой и паролем.

Видеоурок, шпаргалки и задания

Авторизацию и cURL я разбираю в восьмом, заключительном уроке мини-курса "Postman для тестировщика 2.0" на YouTube: регистрацию и вход в reqres.in, токен на всю коллекцию, API Key и импорт запросов. В бесплатном базовом курсе по тестированию тема идёт уроком "Типы авторизации и другие фишки Postman", и после теории в нём есть задания. Интерфейс reqres.in с тех пор сильно изменился, поэтому для регистрации и входа урок курса предлагает мою новую песочницу.

Шпаргалка по аутентификации разбирает схемы от Basic Auth до OAuth 2.0 и устройство JWT. В тренажёре запросы уходят на сервер учебной песочницы с героями мифов.

Курсы по теме

Вопросы и ответы

Чем аутентификация отличается от авторизации?

Аутентификация проверяет, что пользователь тот, за кого себя выдаёт: система сверяет логин и пароль с базой. Авторизация решает, что ему можно делать, по его роли и правам. Перед ними идёт идентификация, то есть определение пользователя по уникальному идентификатору вроде логина.

Как добавить Bearer Token в Postman?

Открыть вкладку Authorization у запроса, папки или коллекции, выбрать тип Bearer Token и вставить токен, полученный при входе. Удобнее хранить токен в переменной и писать в поле {{token}}. Запросы с настройкой Inherit auth from parent возьмут его у родителя, и Postman отправит токен в заголовке Authorization.

Какие типы авторизации есть в Postman?

В списке больше десятка вариантов, а в работе чаще всего встречаются No Auth, Basic Auth, Bearer Token, API Key и OAuth 2.0. Bearer Token используют чаще остальных. Basic Auth остался в основном на старых проектах, API Key применяют для интеграций сервисов, OAuth 2.0 стоит за входом через Google или GitHub.

Что такое cURL?

Программа командной строки для отправки запросов. В команде cURL записаны метод, адрес, заголовки и тело, поэтому её можно выполнить в терминале или импортировать в Postman. Swagger показывает cURL для каждого выполненного запроса, а DevTools копирует так любой запрос с вкладки Network.

Как импортировать cURL в Postman?

Скопировать команду, например через Copy as cURL в DevTools или из Swagger, и вставить её в окно Import или прямо в строку адреса. Postman сам заполнит метод, адрес, заголовки и тело запроса.

Где хранить токен в Postman?

В переменной коллекции или окружения: если токен сменится, исправить его нужно будет в одном месте. Забрать токен из ответа на вход можно скриптом в разделе Post-response. Публиковать коллекцию с токеном не стоит, это секретные данные.

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее