Токен JWT в заголовке почтальона

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

postman screenshot

мои вопросы таковы:

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

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

8 ответов


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

авторизация: носитель TOKEN_STRING

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


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

Postman

обновление:

команда почтальона добавила "токен на предъявителя" на вкладку " авторизация": Updated postman


я добавляю к этому вопросу небольшой интересный совет, который может помочь вам, ребята, тестирование JWT API.

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

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

Authorization: Bearer TOKEN_STRING

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

Authorization: Bearer {{jwt_token}}

На Почтальона: Затем сделайте глобальную переменную в postman как 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"}, может быть какая-то вариация.

в первой строке вы добавляете ответ на данные varibale. Очистите свой глобальный И присвоить значение.

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

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


редактировать
Что-нибудь почитать!--4-->

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

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

CI:интеграция с Jenkins

Ницца блог: автоматизация тестирования master api


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

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

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

Authorization: jwt <token>

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


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

на Ваш логин / auth запрос

enter image description here

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

enter image description here


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


Я сделал так, как упоминал моплин .Но в моем случае сервис отправляет JWT в заголовках ответов, как значение под ключом "авторизация".

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

то, что я сделал, это сделать глобальную переменную в postman как

ключ - >jwt
значение->бла-бла

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

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

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

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

значение - > {{jwt}}


для людей, которые используют плагин WordPress Расширенный Менеджер Доступа чтобы открыть аутентификацию JWT.

поле заголовка должно поставить проверка подлинности вместо авторизация

enter image description here

ААМ упомянул об этом внутри своих документация,

внимание! ААМ не использует стандартный заголовок авторизации а это обезательно большинством сервер Apache. ...


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