Перейти к содержимому

Фотография

Jmeter. Авторизация. Как и куда записать полученный токен?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 23

#1 VitaliySloupok

VitaliySloupok

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Шипицын Виталий

Отправлено 01 октября 2015 - 10:11

Добрый день.

 

Начал заниматься нагрузочным тестированием и сразу столкнулся с такой ситуацией:

для прогона сценария нагрузки необходима авторизация пользователя. Все действия, которые должны быть после авторизации у меня отваливаются. (из-за того, что у меня не сохраняется и нигде не используется токен) Скриншот:

http://myscreenshot....51619079761.png

 

Вопрос: Как мне получить и куда записать токен, чтобы остальные запросы проходили и не отваливались?

 

Логика: 

Пользователь авторизируется с помощью эл.почты и пароля, затем ему присылается через request headers токен, и с помощью этого токена проходят остальные запросы.

 

Сценарий: 

- в запросе "/token" идет отправка пароля и эл.адреса методом POST. Скриншот:

http://myscreenshot....98714822127.png

 

результат сценария: 

http://myscreenshot....12322859564.png

 

Дальше, все действия, которые должны пройти для авторизованного пользователя выходят с ошибкой:

 http://myscreenshot....63349475488.png

 

 

Подскажите, пожалуйста, куда нужно записать этот токен и каким образом.

В консоли токен обозначается следующим образом: http://myscreenshot....14132815066.png

 

Буду благодарен за помощь.

 

После слов:

- читал, что нужно добавить HTTP Cookie manager, а также добавлять HTTP Authorization Manager. Но с этим не выходит (скорее всего сам что-то криво делаю)


  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 03 октября 2015 - 18:08

Да, как минимум надо добавить в сценарий HTTP Cookie Manager, это должно обеспечить передачу cookies в заголовке.

 

Если этого недостаточно -- нужно ещё добавить заполнение заголовка Authorization в HTTP Header Manager. Но сам он заполняться, конечно, не будет. Необходимо в узел, выполняющий запрос /token, добавить какой-нибудь экстрактор, который будет извлекать этот токен в переменную, а потом подставлять значение этой переменной в нужных местах.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 VitaliySloupok

VitaliySloupok

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Шипицын Виталий

Отправлено 22 октября 2015 - 13:54

Благодарю за помощь!

Сделал, как вы сказали. Добавил в узел /token Regular expression extractor http://myscreenshot....54724981723.png. Затем в узлы, где необходима проверка токена, добавил в HTTP Header Manager обращение к этому токену, и все запросы выходят без ошибок, все работает.

http://myscreenshot....03474782304.png

 

Но в данном случае мне пришлось в каждый узел в HTTP Header Manager добавить обращение к переменной ${token}.

Вопрос: Можно ли добавить общий HTTP Header Manager для всех запросов, чтобы не приходилось во всех запросах вбивать обращение к токену?


  • 0

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 23 октября 2015 - 11:32

Благодарю за помощь!

Сделал, как вы сказали. Добавил в узел /token Regular expression extractor http://myscreenshot....54724981723.png. Затем в узлы, где необходима проверка токена, добавил в HTTP Header Manager обращение к этому токену, и все запросы выходят без ошибок, все работает.

http://myscreenshot....03474782304.png

 

Но в данном случае мне пришлось в каждый узел в HTTP Header Manager добавить обращение к переменной ${token}.

Вопрос: Можно ли добавить общий HTTP Header Manager для всех запросов, чтобы не приходилось во всех запросах вбивать обращение к токену?

 

Да, можно сгруппировать несколько сэмплеров, и сделать им общий HTTP Header Manager, который будет добавлять заголовки всем вложенным в него сэмплерам. Вот пример:

 

Прикрепленный файл  23-10-2015 14-28-35.png   64,72К   94 Количество загрузок:Прикрепленный файл  23-10-2015 14-29-50.png   84,91К   74 Количество загрузок:


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#5 VitaliySloupok

VitaliySloupok

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Шипицын Виталий

Отправлено 24 октября 2015 - 14:22

Да, все получилось. Спасибо огромное!


  • 0

#6 luarvik

luarvik

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Luarvik Luarvik

Отправлено 18 апреля 2017 - 10:05

сделал всё в точности, как описано в треде, но Response data всё равно возвращает {"detail":"Authentication credentials were not provided."}

 

 

ниже скриншоты, постарался сделать как можно более подробно

 

View Results Tree

http://joxi.ru/ZrJ4n75CEGYl2j

 

HTTP Request по которому отправляется логин/пароль 

http://joxi.ru/v29Dw51Tev0dmG

 

Regular Expression Extractor

http://joxi.ru/EA41wDOteBJvrb

 

HTTP Header Manager

http://joxi.ru/n2YBE61cg8X0A6

 

 

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


  • 0

#7 MrFuka

MrFuka

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Aaa

Отправлено 29 ноября 2017 - 12:53

Добрый день.

 

Как и автор, начал заниматься нагрузочным тестированием и столкнулся с ситуацией как и у автора топика.. но как не пробывал, решить не могу

 

Метод POST проходит

Метод GET не проходит

 

Причина: 401, no access token found

 

Скриншоты:

http://i.piccy.info/...1/1200750/1.jpg

http://i.piccy.info/...0/1200750/2.jpg

http://i.piccy.info/...9/1200750/3.jpg

http://i.piccy.info/...5/1200750/4.jpg

http://i.piccy.info/...3/1200750/5.jpg

http://i.piccy.info/...4/1200750/6.jpg

http://piccy.info/vi...0e7d97220e89f8/

http://i.piccy.info/...0/1200750/8.jpg

http://piccy.info/vi...a6bc40cbabc5d7/

 

 

Буду признателен за помощь.


  • 0

#8 Skaild

Skaild

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 14 декабря 2017 - 02:49

Я, конечно, не мегаспец - мне тут самому пару недель назад помогали, недоуменно глядя на мои попытки в jmeter. 

 

Но у меня была похожая схема. Победил следующим образом:

 

1. Делаю первый http запрос на получения токена. Ему в параметры пишем grant_type, username, password и scope. 

2. К нему цепляю HTTP Header Manager. В нем пишем только Content-Type.

3. К запросу на токен привязываем экстрактор. Сколько я не бился - регулярку победить не смог, поэтому вытягиваю токен JSON экстрактором:

Variable names: access_token

JSON Path expression: $.access_token

Все. В переменной access_token у нас лежит токен.

4. К последнему get-запросу прикручиваем Header Manager. Но в нем уже не пишем username/password/grant_type и вот это вот все. Пишем проще: 

Authorization: bearer ${access_token}

Content-Type: application/json

 

 

Попробуйте - у меня работает. 


  • 0

#9 alessenika

alessenika

    Новый участник

  • Members
  • Pip
  • 1 сообщений


Отправлено 11 января 2018 - 09:00

Добрый день!

 

У меня очень схожая ситуация с автором топика, но другая ошибка.

 

Начала заниматься нагрузочным тестированием (использую JMeter 3.3) и столкнулась с проблемой: при выполнении сценария необходима регистрация пользователя. При нажатии на кнопку login получаю ошибку Response code: 403 Response message: FORBIDDEN

 

скрин: https://drive.google...iew?usp=sharing

 

решение: Погуглив, поняла, что проблема с куками. Добавив HTTP Cookie Manager решить проблему не получилось. Скорее всего не верно делаю.

 

 

Возможно кто-то сталкивался с такой ошибкой. Буду благодарна за помощь!


  • 0

#10 Vitalii_Sotnichenko

Vitalii_Sotnichenko

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 31 июля 2018 - 10:11

У меня следующая ситуацияЖ

1.Создаю запрос c grant type, login, password and account id

https://www.screenca...om/t/ViuaOdkb0N

2. В Authorization Header Manager для этого запроса добавляю базовую авторизацию

https://www.screenca...om/t/x9rr8rR0Ja

3. Затем в следующем запросе с токеном добавляю или регулярку или джейсон екстрактор

https://www.screencast.com/t/ih2BxO3u

https://www.screenca...m/t/Rg4vuvZjBcX

4. Во всех следующих Authorization Header Manager добавляю эту переменную с екстрактора

https://www.screencast.com/t/SGLstl9f

 

В View results Tree для первого запроса вижу что access_token вернулся успешно 

https://www.screencast.com/t/WXLZbEXz

 

Но затем в части остальных запросах invalid token

 

https://www.screenca.../t/mBoxlQ6XwDRj

https://www.screencast.com/t/ioB1wvDh

 

 

Кто может подсказать в чем проблема? Может неправильная регулярка или неправильно передаю токен?


  • 0

#11 MissLeman

MissLeman

    Постоянный участник

  • Members
  • PipPipPip
  • 152 сообщений


Отправлено 31 июля 2018 - 11:57

А вам для передачи токена точно не Bearer схема нужна (а не Basic)?

 

(я наверное что-то путаю, но вдруг)


  • 0

#12 Vitalii_Sotnichenko

Vitalii_Sotnichenko

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 31 июля 2018 - 12:39

А вам для передачи токена точно не Bearer схема нужна (а не Basic)?

 

(я наверное что-то путаю, но вдруг)

 

Token type указан bearer

https://www.screenca...m/t/A9cwK7XaPmh


  • 0

#13 Vitalii_Sotnichenko

Vitalii_Sotnichenko

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 02 августа 2018 - 20:06

И еще в Дебаг семпелере почему-то access_token пустой

 

MeterVariables:
JMeterThread.last_sample_ok=false
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@1572df3d
START.HMS=231151
START.MS=1533067911741
START.YMD=20180731
TESTSTART.MS=1533240274394
__jmeter.USER_TOKEN__=Thread Group 1-1
access_token=

  • 0

#14 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 34 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 03 сентября 2018 - 17:30

Здравствуйте. Такая же проблема - не получается передать Токен в header:

1. Получаем токен и отправляем его значение в переменную Token http://prntscr.com/kq5m2t

2. Дебагер видит Токен http://prntscr.com/kq5k04

3. Вставляем переменную Токен в Хеадер  http://prntscr.com/kq5kfn

4. При запросе вместо Токена пустота ((( http://prntscr.com/kq5l3p


  • 0

#15 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 03 сентября 2018 - 22:05

видимо у вас сначала инициализуется HTTP Header Manager, переменная токен ещё не установлена, поэтому хедер Authorization устанавливается в "Bearer "

 

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

 

разберитесь с порядком


  • 0

#16 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 34 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 04 сентября 2018 - 03:28

 

разберитесь с порядком

Токен получается и помещается в переменную на шаге "Отправлен Логин и пароль"

В хеадере идет обращение к токену в запросе "Запрос списка юзеров" через 25 шагов после инициализации переменной.

 

http://prntscr.com/kqata8


  • 0

#17 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 07:10

возможно Header Manager инициализируется перед всеми шагами

 

сгруппируйте тесты, сейчас они как-то все на одном уровне, и непонятно что к чему относится

 

может Header Manager всё-таки надо переместить наверх

https://s3.amazonaws...05.1.12.f_6.jpg

 

 

 

В хеадере идет обращение к токену в запросе "Запрос списка юзеров" через 25 шагов после инициализации переменной.

уже видно что нелогично тест организован. В одной стороне инициализация, в противоположной стороне обращение. Можно это всё сделать в одной явной группе


  • 0

#18 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 34 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 04 сентября 2018 - 16:56

уже видно что нелогично тест организован. В одной стороне инициализация, в противоположной стороне обращение. Можно это всё сделать в одной явной группе

Перетащил Header Manager вверх, но ничего не поменялось http://prntscr.com/kqk68n и http://prntscr.com/kqk8nd

Можете скинуть ссылку на пример логичной организации или на описание правильной организации кода? Этот сценарий записался через проксю, с виду все логично и понятно, но мне не с чем сравнивать ))


  • 0

#19 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 17:01

https://jmeter.apach...ization_Manager

 

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


  • 0

#20 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 34 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 04 сентября 2018 - 18:31

нет смысла "просто в начало ставить". Сначала надо записать переменную а потом уже в хедер её ставить. А у вас там переменная пустая

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


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных