[JAVA] Paramètres lors de l'appel de l'API à l'aide des mesures CSRF de Spring Security dans JMeter

Chose que tu veux faire

Comme le dit le long titre. J'ai créé une API pour appeler depuis une application Vue.js avec Spring Boot, Il a été décidé de réaliser un test de charge de cette API. J'utilise JMeter pour créer un scénario, mais puisque j'utilise des mesures CSRF en utilisant le CookieCsrfTokenRepository de Spring Security.

C'est pourquoi nous devions faire cela dans le scénario.

Spécifications approximatives de l'API testée

Seule l'image ressemble à ceci.

url Méthode HTTP Aperçu
/login POST ID/Envoyer le mot de passe pour vous connecter
Une fois la connexion réussieXSRF-TOKENLe cookie est donné
Non soumis au contrôle CSRF
/orders POST Enregistrer une commande
Cible de contrôle CSRF

environnement

application

outil

Paramètres JMeter

Obtenez la valeur de XSRF-TOKEN

La réponse de / login contiendra le cookie de XSRF-TOKEN, donc il sera extrait. Pour le moment, en regardant la réponse de / login dans DevTools, cela ressemble à ceci.

XSRF-TOKEN.jpg

Réglage

Les appels à / login sont définis dans l'échantillonneur HTTP Request. (Détails omis) Après avoir exécuté cet échantillonneur, utilisez "Regular Expression Extraction" pour obtenir un jeton CSRF.

procédure
  1. Sélectionnez l'échantillonneur HTTP Request dans / login et faites un clic droit
  2. Sélectionnez ʻADDPost Processors Regular Expression Extractor`
  3. Définissez comme suit (le nom et les commentaires sont appropriés) csrfトークン取得.jpg

Est-ce là le point? Dans les scénarios suivants, vous pouvez spécifier $ {xsrf_token} pour résoudre la valeur extraite de la variable.

Définir l'en-tête X-XSRF-TOKEN

Puisque «/ orders» est soumis à une vérification CSRF, il est nécessaire de définir l'en-tête «X-XSRF-TOKEN» au moment de l'appel.

Réglage

Les appels à / orders sont définis dans l'échantillonneur HTTP Request. (Détails omis) Lors de l'exécution de cet échantillonneur, utilisez le HTTP Header Manager pour définir l'en-tête X-XSRF-TOKEN.

procédure
  1. Sélectionnez l'échantillonneur HTTP Request dans / orders et faites un clic droit
  2. Sélectionnez ʻADDConfig Element HTTP Header Manager`
  3. Définissez comme suit (le nom et les commentaires sont appropriés, le type de contenu est défini car il est nécessaire dans cette spécification spécifique à l'API)

X-XSRF-TOKEN付与.jpg

Le $ {xsrf_token} obtenu précédemment est défini comme en-tête X-XSRF-TOKEN.

Résumé

Avec les paramètres ci-dessus, vous pouvez passer les mesures CSRF. Si vous êtes nouveau sur JMeter, vous ne pouvez pas immédiatement penser à une si petite application. Je pensais que ce serait ennuyeux (c'est mon expérience inconnue), alors je l'ai écrit.

Page de référence

J'ai évoqué ce qui suit. Merci beaucoup.

https://www.blazemeter.com/blog/how-load-test-csrf-protected-web-sites

Recommended Posts

Paramètres lors de l'appel de l'API à l'aide des mesures CSRF de Spring Security dans JMeter
[Rails] Lorsque vous utilisez ajax, faites attention aux "mesures CSRF".
Erreur inconnue dans la ligne 1 de pom.xml lors de l'utilisation de Spring Boot dans Eclipse
Tester la réponse JSON de l'API REST créée par Spring MVC à l'aide d'AssertJ avec MockMvc
Créer une authentification par clé API pour l'API Web dans Spring Security
Paramètres lors de l'appel de l'API à l'aide des mesures CSRF de Spring Security dans JMeter
Implémenter l'API REST avec Spring Boot
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Comment appeler et utiliser l'API en Java (Spring Boot)
Créez une API pour envoyer et recevoir des données Json avec Spring
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Spring avec Kotorin - 4 Conception d'API REST
Comment passer un proxy lors du lancement de REST avec SSL en Java
Authentifiez 3 paramètres ou plus au format JSON à l'aide de Spring Security
Exemple de configuration d'API RESTful minimum avec Jersey + Spring Framework
Mémorandum JMeter [Paramètres lors de l'échantillonnage de données multipart / formulaire dans l'application Java]
Connectez-vous avec HttpServletRequest # login dans Spring Security dans l'environnement Servlet 3.x
Mémo d'utilisation de Spring Security CSRF
Essayez d'utiliser Spring Boot Security