Меня попросили протестировать приложение, URL которого мне дали как http://user:pass@host:port/path
Я знаю, что это HTTP Basic Authentication, и включение user:pass
не рекомендуется RFC 2396 (раздел 3.2.2).
Я также ожидаю, что приложение получит авторизацию в шапке без проблем.
Однако я решил попытаться довести JMeter до того URL-адреса в том формате, который мне дали в любом случае (просто чтобы попробовать).
Обнаружено два препятствия.
Во-первых, хотя имя пользователя и пароль могут быть заданы для диспетчера авторизации HTTP, не похоже, что есть настройка, позволяющая перенести это на URL-адрес как полномочие в любой точке диспетчера или сэмплера.
Во-вторых, HTTP Sampler (включая значения по умолчанию для запроса) не воспринимает информацию пользователя / права доступа отчетливо.
Таким образом, единственное место, где можно попробовать, - это поле домена образца HTTP (или значения по умолчанию).
Однако домен в конечном итоге передается конструктору URL(protocol, domain, getPort(), pathAndQuery.toString())
.
Добавление user:pass@host
в домен приведет к последующему исключению синтаксического анализа позже, поскольку конструктор интерпретирует :
как попытку предоставить адрес IPv6 и, следовательно, заключает хост в квадратные скобки (то есть он буквально преобразует домен в [user:pass@host]
).
Итак, суть, есть ли какие-нибудь методы, которые я не рассматривал, которые могут использовать JMeter для принятия URL user:pass@host
(кроме взлома кода или постановки проблемы с JMeter)?
Как упоминалось ранее, это не рекомендуется RFC, поэтому, вероятно, лучше всего позволить этой части архаичной интернет-вредоносности спокойно умереть. Но любопытство побуждает.