web-dev-qa-db-de.com

Senden von JWT-Token in den Kopfzeilen mit Postman

Ich teste eine Implementierung von JWT Token-basierter Sicherheit basierend auf dem folgenden article . Ich habe erfolgreich ein Token vom Testserver erhalten. Ich kann nicht herausfinden, wie das Chrome POSTMAN REST -Clientprogramm das Token im Header sendet.

postman screenshot

Meine Fragen lauten wie folgt:

1) Benutze ich den richtigen Headernamen und/oder die POSTMAN-Schnittstelle?

2) Muss ich das Token 64-kodieren? Ich dachte, ich könnte das Zeichen einfach zurückschicken.

124
Diode Dan

Für den Namen des Anforderungsheaders verwenden Sie einfach die Berechtigung. Träger vor dem Token platzieren. Ich habe es gerade ausprobiert und es funktioniert für mich.

Berechtigung: Inhaber TOKEN_STRING

Jeder Teil der JWT ist ein Base64url-codierter Wert. 

228
Mick Cullen

Hier ist ein Bild, wenn es hilft :) 

Postman

Update:

Das Postboten-Team fügte der "Autorisierungsregisterkarte" "Trägertoken" hinzu:  Updated postman

118
prasanthv

Ich füge dieser Frage einen kleinen interessanten Tipp hinzu, der Ihnen beim Testen von JWT Apis helfen kann.

Es ist eigentlich sehr einfach.

Wenn Sie sich in Ihrer Api (Login-Endpunkt) anmelden, erhalten Sie sofort Ihr Token. Wie @mick-cullen sagte, müssen Sie die JWT in Ihrem Header folgendermaßen verwenden: 

Authorization: Bearer TOKEN_STRING

Wenn Sie nun automatisieren oder Ihr Leben einfacher machen möchten, können Sie bei Ihren Tests das Token als ein globales Feld speichern, das Sie für alle anderen Endpunkte aufrufen können:

Authorization: Bearer {{jwt_token}}

Zu Postman: Dann legen Sie im Postman eine globale Variable als jwt_token = TOKEN_STRING an.

Fügen Sie an Ihrem Anmeldungsendpunkt: .__ hinzu. Fügen Sie am Anfang der Registerkarte "Tests" Folgendes hinzu:

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

Ich vermute, dass Ihre API das Token als Json für die Antwort zurückgibt: {"Jwt_token": "TOKEN_STRING"}, es kann eine Art Variation geben.

In der ersten Zeile fügen Sie die Antwort zur Datenvariable hinzu . Bereinigen Sie Ihren globalen Und weisen Sie den Wert zu.

Jetzt haben Sie Ihr Token für die globale Variable, was die Verwendung von Authorization: Bearer {{jwt_token}} für alle Ihre Endpunkte vereinfacht.

Hoffe, dieser Tipp hilft.


BEARBEITEN
. Etwas zu lesen 

Über Tests bei Postman: Testbeispiele

Befehlszeile: Newman

CI: Integration mit Jenkins

Schöner Blog-Post: Master Api Test Automation

35
moplin

Ich hatte das gleiche Problem in Flask und nachdem ich die ersten beiden Lösungen ausprobiert hatte, die gleich sind (Authorization: Bearer <token>), und folgendes erhalten:

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

Ich konnte es endlich lösen, indem ich Folgendes verwendete:

Authorization: jwt <token>

Ich denke, es könnte den Leuten, die auf dasselbe stoßen, Zeit sparen.

8
Vucko

So wird das Token automatisch gesetzt

Auf Ihre Login/Auth-Anfrage

 enter image description here

Dann für authentifizierte Seite

 enter image description here

5
Digitlimit

Irgendwie funktionierte der Postbote nicht für mich ... Ich musste eine Chrome-Erweiterung namens RESTED verwenden, die funktionierte.

0
RamanSM

Wenn Sie Postbote verwenden möchten, verwenden Sie die Kopfzeilen als solche

schlüssel: Autorisierung

wert: jwt {token}

so einfach ist das.

0
Adi

Ich habe es so gemacht, wie Moplin es erwähnt hat. Aber in meinem Fall-Service senden Sie die JWT als Antwort-Header als Wert unter dem Schlüssel "Authorization".

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

Was ich getan habe, war, eine globale Variable in Briefträger als 

key-> jwt
wert-> blahblah

fügen Sie in Login-Anfrage-> Registerkarte Tests hinzu

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

in anderen Anfragen wählen Sie die Registerkarte Header und geben Sie 

schlüssel-> Autorisierung 

wert -> {{Jwt}}

0
Yasitha Bandara

 enter image description here 

Alles andere also. Params, Authorization, Body, Pre-Request Script, Tests ist leer, öffne einfach die Registerkarte Headers und füge hinzu, wie im Bild gezeigt. Dies gilt auch für GET-Anfragen.

0
coda

Für Benutzer, die das WordPress-Plugin Advanced Access Manager verwenden, um die JWT-Authentifizierung zu öffnen.

Das Header-Feld sollte Authentication anstelle von Authorization enthalten.

 enter image description here

AAM erwähnte es in ihrer Dokumentation

Hinweis! AAM verwendet keinen Standard-Berechtigungsheader, da er übersprungen wird von den meisten Apache-Servern. ...


Hoffe, es hilft jemandem! Danke für andere Antworten, hat mir auch sehr geholfen !!

0
jeffsama
  1. Offener Postbote.
  2. gehen Sie zum Feld "Header".
  3. dort kann man "Schlüsselwert" Leerzeichen sehen.
  4. im Schlüsseltyp "Autorisierung".
  5. im Werttyp "Träger (Leerzeichen) your_access_token_value".

Erledigt!

0
Dheeraj