Senden eines JWT-Tokens in den Headern mit Postman


169

Ich teste eine Implementierung der JWT-Token-basierten Sicherheit basierend auf dem folgenden Artikel . Ich habe erfolgreich ein Token vom Testserver erhalten. Ich kann nicht herausfinden, wie das Chrome POSTMAN REST Client-Programm das Token im Header senden soll.

Postbote Screenshot

Meine Fragen lauten wie folgt:

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

2) Muss ich das Token auf Basis 64 codieren? Ich dachte, ich könnte den Token einfach zurückschicken.


Hallo, wo kann ich in POSTMAN den JWT-Token sehen, den ich erhalten habe?
Usr

1
@MLondei, es hängt davon ab, wie der empfangende Server konfiguriert ist. Es kann als URL zurückkommen (finden Sie es in der URL-Zeichenfolge) oder im Antworttext (finden Sie es im Textfeld der Antwort). Das sind die beiden wichtigsten, die mir bekannt sind.
Diode Dan

Antworten:


277

Verwenden Sie für den Anforderungsheadernamen einfach die Autorisierung. Platziere den Träger vor dem Token. Ich habe es gerade ausprobiert und es funktioniert für mich.

Autorisierung: Inhaber TOKEN_STRING

Jeder Teil des JWT ist ein base64url-codierter Wert.


61
Nur zur Verdeutlichung wird das Feld "Header" zu Authorization und das Feld "Value" zu Bearer [WHITESPACE] <Ihr-Code-Hier>
Diode Dan

Wissen Sie, welcher Teil des Feldes verschlüsselt ist? Es scheint, dass die Daten direkt nach dem letzten '.' Trennzeichen gibt mir, was wie Müllzeichen aussieht. Ich gehe davon aus, dass dies tatsächlich Informationen sind, die vom Token-Generator verschlüsselt wurden.
Diode Dan

5
Schauen Sie sich jwt.io an. Es gibt einen Abschnitt, in dem Sie ein JWT einfügen und seinen dekodierten Inhalt anzeigen können. Dies ist die beste Möglichkeit, um zu sehen, was passiert. Die geheime Serverzeichenfolge wird verwendet, um den letzten Abschnitt des Tokens zu erstellen. JWT signiert nur, dass die Nutzdaten nicht verschlüsselt werden, dh Sie können Teil 1 und 2 der Zeichenfolge dekodieren, aber nicht ohne das Geheimnis validieren. self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Mick Cullen

4
Kann jemand bitte näher erläutern, warum wir Bearer vor die JWT stellen müssen? Ist dies eine Art Signal an den Server, dass dies ein JWT ist?
user137717

3
Das ist nur die Konvention - Sie können alle Details hier finden: jwt.io/introduction
Michael Noyb

134

Hier ist ein Bild, wenn es hilft :)

Briefträger

Aktualisieren:

Das Postboten-Team hat "Träger-Token" zur "Registerkarte" Autorisierung "hinzugefügt: Postbote aktualisiert


40

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

Es ist eigentlich sehr einfach.

Wenn Sie sich in Ihrer API (Anmeldeendpunkt) anmelden, erhalten Sie sofort Ihr Token. Wie @ mick-cullen sagte, müssen Sie das JWT in Ihrem Header wie folgt verwenden:

Authorization: Bearer TOKEN_STRING

Wenn Sie nun Ihre Tests automatisieren oder nur vereinfachen möchten, können Sie bei Ihren Tests das Token als globales Element speichern, das Sie auf allen anderen Endpunkten aufrufen können:

Authorization: Bearer {{jwt_token}}

Am Postboten: Erstellen Sie dann im Postboten eine globale Variable als jwt_token = TOKEN_STRING.

Auf Ihrem Anmeldeendpunkt: Um dies nützlich zu machen, 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 Variation geben.

In der ersten Zeile fügen Sie die Antwort zur Datenvariable hinzu. Bereinigen Sie Ihr Global und weisen Sie den Wert zu.

Jetzt haben Sie Ihr Token für die globale Variable, was die Verwendung von Authorization: Bearer {{jwt_token}} auf allen Endpunkten vereinfacht.

Hoffe dieser Tipp hilft.


EDIT
Etwas zu lesen

Über Tests auf Postman: Testbeispiele

Befehlszeile: Newman

CI: Integration mit Jenkins

Schöner Blogbeitrag: Master API Test Automation


Interessanterweise bin ich mit dem Konzept der TestRegisterkarte und der Postman-Codierung nicht vertraut . Gibt es eine Ressource, die Sie empfehlen, um damit zu beginnen?
Diode Dan


Eigentlich ist Postman wirklich interessant und ziemlich stark, wenn es um automatisierte Tests geht. Sie können Postman so konfigurieren, dass zufällige Daten erstellt werden. Globale Variablen oder Umgebungsvariablen, die Sie für die Tests ausführen können. Führen Sie iterative Läufe durch und testen Sie jede Antwort als Endpunkt-Unit-Test. Speichern Sie sie und finden Sie Fehler, wenn Sie den Code ändern. Ich habe das Befehlszeilenprogramm nicht verwendet, aber ich verstehe, dass Sie es so konfigurieren können, dass es in Ihrer ci-Pipeline ausgeführt wird.
Pablo Palacios


9

Ich hatte das gleiche Problem in Flaskund nachdem ich die ersten beiden Lösungen ausprobiert hatte, die gleich waren ( Authorization: Bearer <token>), und bekam dies:

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

Ich habe es endlich geschafft, es zu lösen mit:

Authorization: jwt <token>

Ich dachte, es könnte Menschen, die auf dasselbe stoßen, Zeit sparen.


1
Ich fing Authentication credentials were not providedan zu djangobenutzen Bearer <token>. gelöst mit jwt <token>. Danke für die Lösung
S_M

7

Hier erfahren Sie, wie Sie das Token automatisch festlegen

Auf Ihrer Login / Auth-Anfrage

Geben Sie hier die Bildbeschreibung ein

Dann für authentifizierte Seite

Geben Sie hier die Bildbeschreibung ein


4

Wenn Sie den Postboten verwenden möchten, verwenden Sie die Überschriften als solche

Schlüssel: Autorisierung

Wert: jwt {Token}

so einfach ist das.


2

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

Das Feld Header sollte Authentifizierung anstelle von Autorisierung enthalten

Geben Sie hier die Bildbeschreibung ein

AAM erwähnte es in ihrer Dokumentation ,

Hinweis! AAM verwendet keinen Standardautorisierungsheader, da dieser von den meisten Apache-Servern übersprungen wird. ...


Hoffe es hilft jemandem! Vielen Dank für andere Antworten hat mir auch sehr geholfen !!


2
  1. Postbote öffnen.
  2. Gehen Sie zum Feld "Header".
  3. dort sieht man "Schlüsselwert" Leerzeichen.
  4. im Schlüsseltyp "Autorisierung".
  5. Geben Sie im Wert "Bearer (Leerzeichen) your_access_token_value" ein.

Getan!


2

Geben Sie hier die Bildbeschreibung ein

Alles andere dh. Params, Authorization, Body, Pre-Request Script, Tests ist leer. Öffnen Sie einfach die Registerkarte Headers und fügen Sie sie wie in der Abbildung gezeigt hinzu. Dies gilt auch für GET-Anfragen.


0

Irgendwie hat der Postbote bei mir nicht funktioniert. Ich musste eine Chrome-Erweiterung namens RESTED verwenden, die funktionierte.


0

Ich habe getan, wie Moplin es erwähnt hat. Aber in meinem Falldienst habe ich die JWT in Antwort-Headern als Wert unter dem Schlüssel "Authorization" gesendet.

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

Was ich getan habe war, eine globale Variable in Postbote als zu machen

key-> jwt
> blahblah

Fügen Sie in der Anmeldeanforderung-> Registerkarte "Tests" hinzu

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

Wählen Sie bei anderen Anfragen die Registerkarte Überschriften und geben Sie

Schlüssel-> Autorisierung

Wert -> {{jwt}}


0

In der neuesten Version von Postman (7 ++) befindet sich möglicherweise kein Trägerfeld in der Autorisierung. Gehen Sie also zur Registerkarte Kopfzeile

Wählen Sie den Schlüssel als Autorisierung und schreiben Sie im Wert JWT


Für v7.19.0 + und es ist auch schon eine Weile da, gibt es einen Bearer TokenHelfer auf der AuthorizationRegisterkarte. Wenn Sie den Token-Wert hier hinzufügen (fest codiert oder als dynamische Variable), wird derselbe AuthorizationHeader für die Anforderung erstellt.
Danny Dainton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.