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.
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]"
modifier le 19 août 2017 pour jmeter 3.2:
- Utiliser la réponse https://stackoverflow.com/a/12563623/460802
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)
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));
Step 3 ajouter le gestionnaire D'en-tête HTTP
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)
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
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
assurez-vous de fournir un protocole pour L'URL de base, i.e.: "http://localhost" au lieu de "localhost"
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 []
.
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
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));
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.