2014-07-12 15 views
87

Testuję implementację zabezpieczeń opartych na tokenach JWT na podstawie następującego article. Pomyślnie odebrałem token z serwera testowego. Nie mogę się dowiedzieć, w jaki sposób program klienta POSTMAN REST wysyła token w nagłówku.Znacznik JWT w nagłówku POSTMAN

postman screenshot

moje pytania są następujące:

1) używam odpowiednią nazwę nagłówka i/lub interfejs listonosz?

2) Czy muszę podstawiać kodowanie tokena 64? Myślałem, że mogę po prostu odesłać token.

Odpowiedz

177

Dla zapytania Nazwa nagłówka wystarczy użyć Autoryzacja. Umieść nośnik przed tokenem. Właśnie wypróbowałem to i to działa dla mnie.

autoryzacji: Nośnik TOKEN_STRING

Każda część JWT jest wartością base64url zakodowane.

+41

Podobnie jak wyjaśnienia, w „Header” pole staje się odpowiedzialny i „wartość” pole staje okaziciela [biała spacja]

+0

Czy wiesz, jaka część pola jest zaszyfrowane? Wydaje się, że dane zaraz po ostatnim "." separator daje mi coś, co wygląda jak znaki śmieci. Zakładam, że to jest rzeczywiście informacja zaszyfrowana przez generator Token? –

+4

Sprawdź http://jwt.io/. Istnieje sekcja, w której można wkleić JWT i zobaczyć jego zdekodowaną zawartość, najlepiej sprawdzając, co się dzieje. Tajny ciąg serwera służy do utworzenia ostatniej sekcji tokenu. JWT sygnalizuje tylko, że ładunek nie szyfruje, tzn. Można dekodować część 1 i 2 ciągu, ale nie może potwierdzić tego bez sekretu. http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html –

89

Oto obraz, czy to pomaga :)

Postman

+11

i tutaj ten obraz jest wart tysiąca słów. – tinybyte

27

dodaję na to pytanie trochę interesujący końcówki, które mogą pomóc wam testowania JWT API.

Jest to bardzo proste.

Po zalogowaniu się, w Api (login końcowego), zostanie natychmiast otrzymać token i jako @ mick-Cullen powiedział, że będzie trzeba użyć JWT na nagłówku jako:

Authorization: Bearer TOKEN_STRING 

teraz, jeśli chcesz zautomatyzować lub po prostu ułatwić Ci życie, swoje badania można zapisać token jako globalne, które można wezwać wszystkich pozostałych punktów końcowych jak:

Authorization: Bearer {{jwt_token}} 

na Listonosz: Następnie zrób zmienna globalna w listonosz jako jwt_token = TOKEN_STRING.

Na końcowym logowanie: Żeby było użyteczne, należy dodać na początku dodatku Tab Testy:

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

Domyślam się, że API jest odsyłania znaku jako json na odpowiedź, jak: {"jwt_token": "TOKEN_STRING"}, może istnieć jakaś odmiana.

W pierwszym wierszu dodajesz odpowiedź do varibale danych. Oczyść swój globalny I przypisz wartość.

Teraz masz swój token na zmiennej globalnej, co ułatwia używanie Authorization: Bearer {{jwt_token}} na wszystkich twoich końcach.

Mam nadzieję, że ta wskazówka pomaga.


EDIT
Coś czytać

O testach Listonosz: testing examples

Linia komend: Newman

CI: integrating with Jenkins

Nicea blogu: master api test automation

+0

Ciekawe, nie mam pojęcia o koncepcji zakładki "Test" i kodowaniu Postmana. Czy istnieje zasób, który polecasz, aby zacząć z tym? –

+0

Tak, znalazłem kilka przydatnych informacji: * https://www.getpostman.com/docs/testing_examples * http://blog.testproject.io/2016/06/22/master-api- test-automation/ * http://www.sm-cloud.com/testing-api-with-postman/ – moplin

+0

W rzeczywistości Postman jest naprawdę interesujący i dość silny, jeśli chodzi o testy automatyczne. Listonosza można skonfigurować w taki sposób, aby mógł on tworzyć losowe zmienne danych globalnych lub zmienne środowiskowe, które można uruchamiać podczas testów. Wykonaj iteracyjne serie i przetestuj każdą odpowiedź jako testy jednostki punktu końcowego. Zapisz je i znajduj błędy podczas zmiany kodu. Nie korzystałem z narzędzia wiersza poleceń, ale rozumiem, że można go skonfigurować tak, aby działał w twoim potoku potoku. – moplin

4

Miałem ten sam problem w Flask i po wypróbowaniu 2 pierwsze rozwiązania, które są takie same (Authorization: Bearer <token>), a uzyskanie w ten sposób:

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

udało mi się w końcu rozwiązać go za pomocą:

Authorization: jwt <token> 

Pomyślałem, że może to zaoszczędzić trochę czasu ludziom, którzy spotykają się z tym samym.

+0

Otrzymałem komunikat "Dane uwierzytelniające nie zostały dostarczone" w 'django' przy użyciu' Nośnika '. rozwiązany przez 'jwt '. Dzięki za rozwiązanie –

0

W jakiś sposób listonosz nie zadziałał dla mnie. Musiałem użyć rozszerzenia chrome o nazwie RESTED, które działało.

0

Zrobiłem jak wspomniany moplin. Ale w moim przypadku usługa wysłać JWT w nagłówkach odpowiedzi, jako wartość pod kluczem "Autoryzacja".

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

co zrobiłem było dokonać zmienna globalna w listonosza jako

keystone> JWT
value-> blahblah

w logowania request-> Testy Tab, dodać

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

w innych żądaniach wybierz nagłówek s Tab i dać

keystone> Autoryzacja

wartość -> {{}} JWT

3

Oto jak ustawić znacznik ten automatycznie

Na loginu/żądanie autoryzacji

enter image description here

Następnie uwierzytelnionego stronie

enter image description here