Подтвердить что ты не робот

Базовая аутентификация JMeter

Я пытаюсь использовать базовый процесс аутентификации для веб-службы с помощью JMeter. Но каждый раз он выдает ошибку 401: Несанкционированный. Я попытался использовать диспетчер заголовков HTTP, чтобы добавить в него заголовок "Авторизация" и значение. Тем не менее это не работает. Я также попытался использовать диспетчер авторизации HTTP. Еще не повезло. Может кто-то помочь.

4b9b3361

Ответ 1

Я нашел через отладочные запросы, поступающие из JMeter, что модуль HTTP Authorization Manager не правильно кодирует имя пользователя и пароль. Он помещает символ новой строки после имени пользователя.

Чтобы запустить тест JMeter с защищенной конечной точкой Basic Auth, включите диспетчер заголовков HTTP и добавьте основной заголовок Auth:

Вручную кодировка учетных данных

  • В MacOS или Linux:

    echo -n "username:password" | base64

  • Из Windows:

    Перейти здесь и закодировать строку "имя пользователя: пароль"

Добавление заголовка авторизации

В диспетчере заголовков HTTP добавьте запись с именем "Авторизация" и значением "Основные [закодированные учетные данные сверху]"

Ответ 2

Редактировать 19 августа 2017 для JMeter 3.2:

В основном, чтобы обойти базовую авторизацию, вам нужно добавить заголовок Авторизация со значением Basic base64 (имя пользователя: пароль). Проблема в том, что JMeter не имеет встроенной функции base64.

Решение:

Шаг1 Добавьте предварительный процессор BeanShell (PreProcessor → Препроцессор BeanShell)

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

Шаг2 Добавьте следующий script в PreProcessor

import org.apache.commons.codec.binary.Base64;
byte[] encodedUsernamePassword = Base64.encodeBase64("neo4j:1234".getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));

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

Шаг 3 Добавить диспетчер заголовков HTTP

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

Шаг 4 Добавить заголовок авторизации с правильным значением

имя заголовка Авторизация
значение заголовка Базовый ${base64HeaderValue} (переменная base64HeaderValue инициализируется препроцессором BeanShell)

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

Итак, в конце, когда вы создаете HTTP-запрос, заголовок авторизации будет передан серверу с кодировкой base64

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

Ответ 3

Выполните следующие действия:

  • 1/Настроить HTTP Authorization Manager правильно со всеми обязательными полями

  • 2/ Вариант 1: Использование HTTP 4: (по умолчанию)

  • это возможно, поскольку JMeter 3.2 без дополнительной настройки с помощью диспетчера авторизации

Вариант 2: Использование HTTP 3.1: (устарело)

  • в jmeter.properties, uncomment:

    httpclient.parameters.file=httpclient.parameters
    
  • в параметрах httpclient.parameters, uncomment:

    http.authentication.preemptive$Boolean=true
    

Ответ 4

Обязательно укажите протокол для базового URL, т.е.: " http://localhost" вместо "localhost"

Ответ 5

Как сказал Райан Т, в диспетчере заголовков HTTP добавьте запись с именем "Authorization" и значением "Basic [encoded credentials from above]", но без [].

Ответ 6

Добавление небольшой вариации @yurko, которая использует имя пользователя и пароль из пользовательских переменных. (для Jmeter до 3.2)

import org.apache.commons.codec.binary.Base64;
String username = vars.get("USERNAME");
String password = vars.get("PASSWORD");
String combineduserpass = username + ":" + password;
byte[] encodedUsernamePassword = Base64.encodeBase64(combineduserpass.getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));

Ответ 7

В связи с первым ответом, приведенным выше, некорректная проблема кодирования должна быть исправлена, так как Apache 3.1 действительно правильно кодирует имя пользователя: пароль в HTTP Auth Manager

Ответ 8

Обновление хороших результатов из ваших ответов 2013 года:

Опция HTTP4 также работает в текущей версии Jmeter версии 2.13 после добавления строки заголовка HTTP Header, содержащей:

name="Authorization", value="Basic [base64-encoded user/password string]"

Проверено на текущем узле amazon linux с обратным прокси от apache 2.4 до tomcat8; tomcat8 распознал учетные данные пользователя вместо того, чтобы метать статус 401.