Authentification De Base JMeter

j'essaie d'impliquer le processus d'authentification de base pour un service web utilisant JMeter. Mais à chaque fois il jette une erreur 401:non autorisé. J'ai essayé D'utiliser le gestionnaire D'en-tête HTTP pour y ajouter une autorisation d'en-tête et de la valeur. Néanmoins, il ne fonctionne pas. J'ai également essayé D'utiliser le gestionnaire D'autorisation HTTP. Toujours pas de chance. Quelqu'un peut-il aider.

30
demandé sur Mischa 2012-09-24 11:20:56

8 réponses

j'ai trouvé par les requêtes de débogage venant de JMeter que le module de gestionnaire D'autorisation HTTP ne Code pas correctement le nom d'utilisateur et le mot de passe. Il met un caractère newline après le nom d'utilisateur.

pour exécuter un test JMeter sur un terminal protégé par Auth de base, incluez le gestionnaire D'en-tête HTTP et ajoutez l'en-tête Auth de base vous-même:

Encodage Manuel Des Justificatifs D'Identité

  • à Partir de MacOS ou Linux:

    echo -n "username:password" | base64

  • À Partir De Windows:

    ici et encoder votre chaîne "nom d'utilisateur: mot de passe"

ajout de L'en-tête D'autorisation

dans le gestionnaire D'en-tête HTTP, ajouter une entrée avec le nom "Authorization" et la valeur " Basic [encoded credentials from above]"

44
répondu 2013-03-21 21:24:17

modifier le 19 août 2017 pour jmeter 3.2:

fondamentalement pour contourner une autorisation de base, vous devez ajouter le l'Autorisation en-tête avec la valeur base64 (username: password). Le problème est que JMeter n'a pas de fonction base64 intégrée.

la solution est :

Step 1 Ajouter BeanShell PreProcessor (Préprocesseur --> BeanShell Preprocessor)

enter image description here

Etape 2 ajouter le script suivant au préprocesseur

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

enter image description here

Step 3 ajouter le gestionnaire D'en-tête HTTP

enter image description here

Step 4 ajouter l'en-tête D'autorisation avec correct valeur

nom de l'en-tête l'Autorisation

valeur d'en-tête Base64headervalue} (la variable base64HeaderValue est initialisée par le préprocesseur BeanShell)

enter image description here

ainsi, à la fin lorsque vous créez un en-tête d'autorisation de requête http sera passé au serveur avec la chaîne encodée base64

enter image description here

27
répondu yurko 2017-08-19 20:25:40

procédez de la manière suivante:

  • 1 / Configurer gestionnaire D'autorisation HTTP correctement avec tous les champs obligatoires

  • 2/ Option 1:Utiliser HTTP 4: (par défaut)

  • il est possible depuis jmeter 3.2 sans aucune autre configuration en utilisant le Gestionnaire D'autorisation

Option 2:utilisant HTTP 3.1: (obsolète)

  • dans jmeter.propriétés , décommentez:

    httpclient.parameters.file=httpclient.parameters
    
  • dans httpclient.paramètres, décommentez:

    http.authentication.preemptive$Boolean=true
    
7
répondu UBIK LOAD PACK 2017-08-19 20:22:56

assurez-vous de fournir un protocole pour L'URL de base, i.e.: "http://localhost" au lieu de "localhost"

2
répondu esteewhy 2015-06-11 11:32:09

comme L'a dit Ryan T, dans le Gestionnaire D'en-tête HTTP, ajoutez une entrée avec le nom "Authorization" et la valeur "Basic [encoded credentials from above]" mais sans [].

1
répondu user2910552 2014-08-29 14:17:21

en référence à la première réponse ci-dessus, le problème d'encodage incorrect que vous mentionnez doit maintenant être corrigé, car Apache 3.1 semble encoder correctement le nom d'utilisateur:password dans le gestionnaire HTTP Auth

0
répondu Scott Stingel 2017-02-11 16:08:41

ajout d'une légère variation de @yurko qui utilise le nom d'utilisateur et le mot de passe des variables définies par L'utilisateur. (pour Jmeter avant 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));
0
répondu Marcel Wilson 2017-08-21 16:04:31

mise à Jour de bons résultats à partir de votre 2013 réponses:

L'option HTTP4 fonctionne aussi sous la version actuelle de Jmeter 2.13 après avoir ajouté la ligne de gestionnaire D'en-tête HTTP contenant:

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

vérifié sur le serveur courant amazon linux ayant le proxy inverse d'apache 2.4 à tomcat8; tomcat8 a reconnu les justificatifs d'identité de l'utilisateur au lieu de lancer le statut 401.

-1
répondu Tom Pyle 2016-01-08 21:45:36