web-dev-qa-db-fra.com

Comment envoyer un jeton Spring csrf depuis un client Postman Rest?

J'ai protection CSRF dans le cadre de printemps. Ainsi, dans chaque demande, j'envoie un jeton csrf dans l'en-tête d'un appel ajax, qui fonctionne parfaitement. 

<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");

En ajax  

beforeSend: function(xhr) {
                xhr.setRequestHeader(header, token),
                xhr.setRequestHeader("username", "xxxx1"),
                xhr.setRequestHeader("password", "password")
            }

Je n'ai aucune idée de générer un jeton csrf et l'inclure dans la section d'en-tête de Postman Rest Client ? Pourriez-vous m'aider à envoyer un jeton CSRF de Postman Rest Client? enter image description here

38
Surendra Jnawali

La façon la plus simple de le faire de manière cohérente afin de ne pas avoir à obtenir le jeton à chaque fois:

REMARQUE: vous devez installer PostMan Interceptor et l'activer pour accéder aux cookies du navigateur.

  1. Créer un nouvel environnement afin que les variables d'environnement puissent être stockées

 enter image description here

  1. Créer une méthode de connexion avec un test pour stocker le cookie XSRF dans une variable d’environnement, dans l’onglet test poster ce code

    //Replace XSFR-TOKEN with your cookie name
    var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN");
    postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value);
    

MODIFIER Pour ceux qui utilisent le postier 5.5.2 ou une version ultérieure, vous devrez également décoder le cookie. Ils ont également fourni d'autres moyens d'obtenir des cookies, comme le souligne @Sacapuces.

pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN")))

Vous allez maintenant avoir une variable d’environnement avec xsrf-token.

  1. Enregistrez votre méthode de connexion

  2. Créez le nouveau message que vous souhaitez créer et ajoutez dans les en-têtes votre clé d'en-tête XSRF-Token et la variable d'environnement dans les barres de contrôle pour y accéder {{}}

 enter image description here

  1. Maintenant, avant d'exécuter votre nouvelle demande, assurez-vous d'exécuter votre identifiant, il stockera la variable d'environnement, puis l'ajoutera automatiquement lorsque vous exécuterez la demande.
33
johnny 5

Je peux envoyer REST avec le jeton csrf en procédant comme suit:

  1. Le jeton CSRF généré automatiquement par la sécurité de printemps lorsque vous vous êtes connecté. Il sera affiché dans l'en-tête de la réponse.

  2. Le jeton CSRF peut être utilisé lors d'une demande ultérieure en définissant X-CSRF-TOKEN avec un jeton CSRF dans l'en-tête.

9
tranceholic

Tout d'abord, vous devez installer PostMan Interceptor et l'activer pour pouvoir accéder aux cookies du navigateur.

  1. Vous devez récupérer le jeton CSRF en effectuant une requête GET: En-tête: "XSRF-TOKEN" et valeur: "Fetch".

  2. Vous devriez voir le jeton dans l'onglet cookie et le copier (Remarque: vous pouvez configurer le nom du cookie. Le cookie a peut-être un autre nom que "XSRF-TOKEN". Attention: vous devez supprimer ce caractère vide. le jeton de la nouvelle ligne)

  3. Faites maintenant votre demande POST et définissez l'en-tête sur: En-tête: "X-XSRF-TOKEN" et Valeur: "Votre jeton copié sans espaces".

6
Joel Neukom

Pour moi, variante avec l’ajout de X-CSRF-TOKEN aux en-têtes .  enter image description here

3
DmRomantsov

Veuillez mettre X-CSRF-Token as key etFETCHcomme valeur dans l'en-tête de la demande GET et vous recevrez le jeton dans l'en-tête de la réponse.

0
KPS250

Si vous ne voulez pas configurer les variables d'environnement, etc., voici la solution la plus rapide.

https://stackoverflow.com/a/49249850/3705478

0
sofs1