web-dev-qa-db-fra.com

Envoi de jeton JWT dans les en-têtes avec Postman

Je teste une implémentation de la sécurité basée sur les jetons JWT basée sur le article suivant. J'ai reçu avec succès un jeton du serveur de test. Je n'arrive pas à comprendre comment le programme client Chrome POSTMAN REST envoie le jeton dans l'en-tête.

postman screenshot

Mes questions sont les suivantes:

1) Est-ce que j'utilise le bon nom d'en-tête et/ou l'interface POSTMAN?

2) Dois-je coder le jeton en base 64? Je pensais que je pouvais simplement renvoyer le jeton.

124
Diode Dan

Pour la requête, nom de l'en-tête, utilisez simplement l'autorisation. Placez le porteur avant le jeton. Je viens de l'essayer et cela fonctionne pour moi.

Autorisation: porteur TOKEN_STRING

Chaque partie du JWT est une valeur codée en base64url. 

228
Mick Cullen

Voici une image si ça aide :) 

Postman

Mettre à jour:

L’équipe de facteurs a ajouté "Jeton porteur" à "l'onglet d'autorisation":  Updated postman

118
prasanthv

J'ajoute à cette question un petit conseil intéressant qui pourrait vous aider à tester JWT Apis.

C'est très simple en fait.

Lorsque vous vous connecterez, dans votre Api (point de connexion), vous recevrez immédiatement votre jeton et, comme @ mick-cullen l'a dit, vous devrez utiliser le JWT sur votre en-tête en tant que: 

Authorization: Bearer TOKEN_STRING

Désormais, si vous souhaitez automatiser ou simplement vous simplifier la vie, vous pouvez enregistrer le jeton sous forme de test global, que vous pouvez appeler sur tous les autres points de terminaison, en tant que:

Authorization: Bearer {{jwt_token}}

Sur Postman: Créez ensuite une variable Global dans postman telle que jwt_token = TOKEN_STRING.

Sur votre noeud final de connexion: Pour le rendre utile, ajoutez au début de l'onglet Tests, ajoutez:

var data = JSON.parse(responseBody);
postman.clearGlobalVariable("jwt_token");
postman.setGlobalVariable("jwt_token", data.jwt_token);

Je suppose que votre api renvoie le jeton sous forme de json sur la réponse sous la forme: {"Jwt_token": "TOKEN_STRING"}, il peut y avoir une sorte de variation.

Sur la première ligne, vous ajoutez la réponse à la varibale de données . Nettoyez votre Global .__ et affectez la valeur.

Vous avez maintenant votre jeton sur la variable globale, ce qui facilite l’utilisation de Authorization: Bearer {{jwt_token}} sur tous vos points de terminaison.

J'espère que cette astuce aide.


MODIFIER
.__ quelque chose à lire 

À propos des tests sur Postman: exemples de tests

Ligne de commande: Newman

CI: intégration avec Jenkins

Nice blog post: master api test automation

35
moplin

J'ai eu le même problème dans Flask et après avoir essayé les 2 premières solutions qui sont les mêmes (Authorization: Bearer <token>) et obtenu ceci:

{
    "description": "Unsupported authorization type",
    "error": "Invalid JWT header",
    "status_code": 401
}

J'ai finalement réussi à le résoudre en utilisant:

Authorization: jwt <token>

Pensé que cela pourrait économiser du temps aux personnes qui rencontrent la même chose.

8
Vucko

Voici comment définir ce jeton automatiquement

Sur votre demande de login/auth

 enter image description here

Puis pour la page authentifiée

 enter image description here

5
Digitlimit

D'une manière ou d'une autre, le facteur n'a pas fonctionné pour moi ... J'ai dû utiliser une extension chromée appelée RESTED qui fonctionnait.

0
RamanSM

Si vous souhaitez utiliser postman correctement, utilisez les en-têtes tels quels.

clé: autorisation

valeur: jwt {token}

aussi simple que cela.

0
Adi

J'ai fait comme mentionné par moplin. Mais dans mon cas, envoyer le JWT dans les en-têtes de réponse, sous la forme d'une valeur sous la clé "Autorisation".

Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ

Ce que je faisais était, faire une variable globale dans le facteur 

clé-> jwt
valeur-> blahblah

dans la demande de connexion-> onglet Tests, ajoutez

postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));

dans les autres demandes, sélectionnez l'onglet En-têtes et donnez 

clé-> autorisation 

valeur -> {{jwt}}

0
Yasitha Bandara

 enter image description here 

Tout le reste, à savoir. Paramètres, autorisation, corps, script de pré-requête, tests est vide, ouvrez simplement le En-têtes onglet et ajoutez-le comme indiqué sur l'image. C'est la même chose pour la requête GET.

0
coda

Pour les personnes utilisant le plugin wordpress Advanced Access Manager pour ouvrir l’authentification JWT.

Le champ d'en-tête doit mettre Authentication au lieu de Authorization

 enter image description here

AAM l'a mentionné dans sa documentation

Remarque! AAM n'utilise pas l'en-tête d'autorisation standard car il est ignoré par la plupart des serveurs Apache. ...


_ {J'espère que ça aidera quelqu'un! Merci pour d'autres réponses m'a beaucoup aidé aussi !!} _

0
jeffsama
  1. Postier ouvert.
  2. allez dans le champ "en-tête".
  3. là on peut voir des "valeurs clés" vides.
  4. dans le type de clé "Autorisation".
  5. dans le type de valeur "Bearer (espace) your_access_token_value".

Terminé!

0
Dheeraj