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.
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.
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.
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
Schöner Blog-Post: Master Api Test Automation
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.
Irgendwie funktionierte der Postbote nicht für mich ... Ich musste eine Chrome-Erweiterung namens RESTED verwenden, die funktionierte.
Wenn Sie Postbote verwenden möchten, verwenden Sie die Kopfzeilen als solche
schlüssel: Autorisierung
wert: jwt {token}
so einfach ist das.
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}}
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.
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 !!
Erledigt!