jmeter authorization http-authentication

Autenticación básica de JMeter



authorization http-authentication (8)

Estoy tratando de implicar el proceso de autenticación básica para un servicio web utilizando JMeter. Pero cada vez que arroja un error 401: No autorizado. Intenté usar el administrador de encabezados HTTP para agregarle una Autorización de encabezado y un valor. Todavía no funciona. También he intentado usar el administrador de autorización HTTP. Todavía no hay suerte. ¿Alguien puede ayudar?


A través de solicitudes de depuración provenientes de JMeter, descubrí que el módulo HTTP Authorization Manager no codifica correctamente el nombre de usuario y la contraseña. Pone un carácter de nueva línea después del nombre de usuario.

Para ejecutar una prueba de JMeter contra un punto final protegido de Autenticación Básica, incluya el Administrador de encabezado HTTP y agregue usted mismo el encabezado de Autenticación básica:

Codificación manual de credenciales

  • Desde MacOS o Linux:

    echo -n "username:password" | base64

  • Desde Windows:

    Vaya aquí y codifique su cadena "username: password"

Añadiendo el encabezado de autorización

En el Administrador de encabezados HTTP, agregue una entrada con el nombre "Autorización" y el valor "Básico [credenciales codificadas de arriba]"


Añadiendo una ligera variación de @yurko que usa el nombre de usuario y la contraseña de las variables definidas por el usuario. (para Jmeter antes de 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));


Actualización de buenos resultados de sus respuestas de 2013:

La opción HTTP4 también funciona con la versión actual de Jmeter 2.13 después de agregar la fila de HTTP Header Manager que contiene:

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

Verificado en el host actual Amazon Linux con proxy inverso de apache 2.4 a tomcat8; tomcat8 reconoció las credenciales del usuario en lugar de lanzar el estado 401.


Asegúrese de proporcionar un protocolo para la URL base, es decir, " http: // localhost " en lugar de "localhost"


Como dijo Ryan T, en el Administrador de encabezados HTTP, agregue una entrada con el nombre "Authorization" y el valor "Basic [encoded credentials from above]" pero sin [] .


En referencia a la primera respuesta anterior, el problema de codificación incorrecto que usted menciona debe solucionarse ahora, ya que parece que Apache 3.1 codifica el nombre de usuario: contraseña correctamente en HTTP Auth Manager


Haz lo siguiente:

  • 1 / Configure HTTP Authorization Manager correctamente con todos los campos requeridos

  • 2 / Opción 1: Usando HTTP 4: (predeterminado)

  • es posible desde JMeter 3.2 sin ninguna configuración adicional utilizando el Administrador de autorización

Opción 2: Usando HTTP 3.1: (obsoleto)

  • en jmeter.properties, descomentar:

    httpclient.parameters.file=httpclient.parameters

  • en httpclient.parameters, descomentar:

    http.authentication.preemptive$Boolean=true


Edición 19 agosto 2017 para JMeter 3.2 :

  • Utilice la respuesta https://.com/a/12563623/460802

Básicamente, para omitir una Autorización básica, debe agregar el encabezado de Autorización con el valor Básico base64 (nombre de usuario: contraseña) . El problema es que JMeter no tiene incrustada la función base64.

La solucion es :

Paso 1 Agregar el preprocesador BeanShell (preprocesador -> preprocesador BeanShell)

Paso 2 Agregue el siguiente script al preprocesador

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

Paso 3 Añadir HTTP Header Manager

Paso 4 Agregar encabezado de autorización con el valor correcto

Nombre del encabezado Autorización
valor del encabezado Básico $ {base64HeaderValue} (la variable base64HeaderValue se inicializa mediante el preprocesador de BeanShell)

Al final, cuando cree una solicitud http, el encabezado de autorización se pasará al servidor con una cadena codificada en base64.