Отправка токена JWT в заголовках с почтальоном


169

Я тестирую реализацию безопасности на основе токенов JWT, основанную на следующей статье . Я успешно получил токен с тестового сервера. Я не могу понять, как заставить клиентскую программу Chrome POSTMAN REST отправлять токен в заголовке.

скриншот почтальона

Мои вопросы следующие:

1) Я использую правильное имя заголовка и / или интерфейс POSTMAN?

2) Нужно ли на базе 64 кодировать токен? Я думал, что смогу просто отправить токен обратно.


Привет, где я могу увидеть в POSTMAN токен jwt, который я получил?
Usr

1
@MLondei, это зависит от того, как настроен принимающий сервер. Он может возвращаться как URL (найти его в строке URL) или возвращаться в теле ответа (найти его в поле тела ответа). Это те два основных, о которых я знаю.
Диод Дан

Ответы:


277

Для имени заголовка запроса просто используйте Авторизацию. Поместите Носителя перед Жетоном. Я только что попробовал, и это работает для меня.

Авторизация: предъявитель TOKEN_STRING

Каждая часть JWT является закодированным значением base64url.


61
Как пояснение, поле «Заголовок» становится авторизацией, а поле «Значение» становится носителем [WHITESPACE] <your-code-here>
Diode Dan

Вы знаете, какая часть поля зашифрована? Похоже, что данные сразу после последнего '.' разделитель дает мне то, что выглядит как мусорные символы. Я предполагаю, что это фактически информация, зашифрованная генератором токенов?
Диод Дан

5
Проверьте jwt.io. Есть раздел, где вы можете вставить JWT и просмотреть его декодированное содержимое, это лучший способ увидеть, что происходит. Секретная строка сервера используется для создания последней секции токена. JWT только подписывает, что полезная нагрузка не шифрует, то есть вы можете декодировать части 1 и 2 строки, но не можете проверить ее без секрета. self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Мик Каллен

4
Может кто-нибудь объяснить, почему мы должны поставить Bearer перед JWT? Это какой-то сигнал серверу, что это JWT?
user137717

3
Это просто соглашение - вы можете найти все подробности здесь: jwt.io/introduction
Майкл Нойб

134

Вот изображение, если это помогает :)

Почтальон

Обновить:

Команда почтальона добавила «токен на предъявителя» на «вкладку авторизации»: Обновленный почтальон


40

Я добавляю к этому вопросу несколько интересных советов, которые могут помочь вам, ребята, тестирующие JWT Apis.

Это очень просто на самом деле.

Когда вы входите в свой Api (конечная точка входа в систему), вы немедленно получаете свой токен, и, как сказал @ mick-cullen, вам придется использовать JWT в заголовке как:

Authorization: Bearer TOKEN_STRING

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

Authorization: Bearer {{jwt_token}}

На почтальоне: Затем создайте глобальную переменную в почтальоне как jwt_token = TOKEN_STRING.

На вашей конечной точке входа в систему: Чтобы сделать это полезным, добавьте в начале вкладки Тесты добавьте:

var data = JSON.parse(responseBody);
postman.clearGlobalVariable("jwt_token");
postman.setGlobalVariable("jwt_token", data.jwt_token);

Я предполагаю, что ваш API возвращает токен как json в ответе: {"jwt_token": "TOKEN_STRING"}, возможно, есть какое-то изменение.

В первой строке вы добавляете ответ в переменную данных. Очистите свой глобальный и назначьте значение.

Итак, теперь у вас есть свой токен для глобальной переменной, что упрощает использование Authorization: Bearer {{jwt_token}} на всех ваших конечных точках.

Надеюсь, этот совет поможет.


РЕДАКТИРОВАТЬ
Что-то для чтения

О тестах на Почтальоне: примеры тестирования

Командная строка: Ньюман

CI: интеграция с Дженкинсом

Хороший пост в блоге: мастер автоматизации тестирования API


Интересно, что я не знаком с концепцией Testвкладки и почтальонским кодированием. Есть ли ресурс, который вы рекомендуете начать с этого?
Диод Дан


На самом деле Postman действительно интересный и довольно сильный, когда дело доходит до автоматизированного тестирования. Вы можете настроить почтальон таким образом, чтобы он мог создавать произвольные данные Глобальные переменные или переменные окружения, которые можно запускать в тестах. И делать итеративные прогоны и тестировать любой ответ как модульные тесты конечной точки. Сохраните их и найдите ошибки при изменении кода. Я не использовал утилиту командной строки, но я понимаю, что вы можете настроить ее для работы в вашем ci-pipe.
Пабло Паласиос

Вы можете прочитать о командной строке здесь: getpostman.com/docs/newman_intro
Пабло Паласиос

9

У меня была та же проблема в Flaskи после попытки первых 2 решений, которые одинаковы ( Authorization: Bearer <token>), и получить это:

{
    "description": "Unsupported authorization type",
    "error": "Invalid JWT header",
    "status_code": 401
}

Мне удалось наконец решить это с помощью:

Authorization: jwt <token>

Думаю, это может сэкономить время людям, которые сталкиваются с тем же.


1
Я был Authentication credentials were not providedв djangoиспользовании Bearer <token>. решено с jwt <token>. Спасибо за решение
S_M

7

Вот как установить токен это автоматически

На ваш логин / запрос авторизации

введите описание изображения здесь

Тогда для аутентифицированной страницы

введите описание изображения здесь


4

Если вы хотите использовать почтальон, правильный способ - использовать заголовки как таковые

ключ: авторизация

значение: jwt {токен}

так просто, как, что.


2

Для людей, которые используют плагин Wordpress Advanced Access Manager, чтобы открыть аутентификацию JWT.

Поле заголовка должно поставить аутентификацию вместо авторизации

введите описание изображения здесь

AAM упомянул об этом в своей документации ,

Заметка! AAM не использует стандартный заголовок авторизации, поскольку он пропускается большинством серверов Apache. ...


Надеюсь, это поможет кому-то! Спасибо за другие ответы мне тоже очень помогли !!


2
  1. Открытый почтальон.
  2. перейдите в поле «заголовок».
  3. там можно увидеть пробелы «значение ключа».
  4. в ключе типа "Авторизация".
  5. в типе значения "Bearer (пробел) your_access_token_value".

Готово!


2

введите описание изображения здесь

Все остальное т.е. Параметры, Авторизация, Тело, Сценарий предварительного запроса, Тесты пустые, просто откройте вкладку Заголовки и добавьте, как показано на рисунке. То же самое и для запроса GET.


0

Почему-то почтальон у меня не работал. Мне пришлось использовать расширение Chrome под названием RESTED, которое работало.


0

Я сделал так, как упомянул moplin. Но в моем случае служба отправляет JWT в заголовках ответа, как значение под ключом «Авторизация».

Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ

Я сделал глобальную переменную в почтальоне как

кнопочная> JWT
ценностно> blahblah

в запрос входа в систему -> вкладка Тесты, добавить

postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));

в других запросах выберите вкладку Заголовки и введите

кнопочная> Авторизация

Значение -> {{JWT}}


0

В Почтальоне последней версии (7 ++) может быть нет поля «Носитель» в Авторизации. Перейдите на вкладку «Заголовок».

выберите ключ в качестве Авторизации и в значение напишите JWT


Для v7.19.0 +, и это также было там некоторое время, Bearer Tokenво Authorizationвкладке есть помощник , добавление значения токена здесь (в жестком коде или в качестве динамической переменной) создаст тот же Authorizationзаголовок для запроса.
Дэнни Дейнтон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.