Jak mogę zdekodować ładunek JWT przy użyciu JavaScript? Bez biblioteki. Token po prostu zwraca obiekt ładunku, który może zostać wykorzystany przez moją aplikację front-end.
Przykładowy token: xxxxxxxxx.XXXXXXXX.xxxxxxxx
Rezultatem jest ładowność:
{exp: 10012016 name: john doe, scope:['admin']}
javascript
jwt
Chrisk8er
źródło
źródło
Odpowiedzi:
Pracująca funkcja parsera JWT tekstu Unicode:
źródło
JSON.parse(window.atob(base64))
aby działało. Właśniereturn JSON.parse(atob(base64));
wtedypostman.setEnvironmentVariable("userId", parseJwt(jsonData.access_token));
„access_token” jest w moim przypadku kluczem wartości tokena w odpowiedzi (może różnić się w twoim przypadku).var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
jwt-decode
modułu, ponieważ jest mały, ale ma nieco lepszą obsługę.Prosta funkcja z try-catch
Dzięki!
źródło
atob
zna problemy z UnicodeMożesz użyć jwt-decode , aby następnie napisać:
źródło
możesz użyć
atob()
funkcji czystego javascript do zdekodowania tokena na ciąg:lub parsuj bezpośrednio do obiektu json:
przeczytać
atob()
ibtoa()
wbudowanej funkcji JavaScript Base64 kodowania i dekodowania - Web API | MDN .źródło
@Peheje będzie działać, ale będziesz mieć problem z Unicode. Aby to naprawić, używam kodu na https://stackoverflow.com/a/30106551/5277071 ;
źródło
Ponieważ obiekt „window” nie jest obecny w środowisku nodejs, możemy użyć następujących wierszy kodu:
Działa dla mnie idealnie. Mam nadzieję, że to pomoże.
źródło
Jeśli używasz węzła, może być konieczne użycie pakietu bufora:
źródło
Korzystam z tej funkcji, aby uzyskać ładunek, nagłówek, exp (Expiration Time), iat (Issued At) na podstawie tej odpowiedzi
źródło
wszystkie funkcje jwt.io nie obsługują wszystkich języków. W NodeJs możesz użyć
źródło
Znalazłem ten kod na jwt.io i działa dobrze.
W niektórych przypadkach (niektóre platformy programistyczne)
najlepsza odpowiedź (na razie) napotyka problem nieprawidłowej długości base64.
Potrzebowałem więc bardziej stabilnego sposobu.
Mam nadzieję, że ci to pomoże.
źródło
Zarówno Guy, jak i Peheje już odpowiedzieli na pytanie. Dla totalnego początkującego, takiego jak ja, pomocne było również zdefiniowanie linii importu w przykładzie.
Zajęło mi również kilka minut, aby dowiedzieć się, że token to pełny zestaw poświadczeń, który jest wysyłany z powrotem (cały token JWT, a nie tylko jego część idToken). Prosto, gdy się zorientujesz ...
źródło
Proste rozwiązanie NodeJS do dekodowania tokenu WWW JSON (JWT)
źródło
Odpowiedź oparta na GitHub - auth0 / jwt-decode . Zmieniono wejście / wyjście, aby uwzględnić podział ciągów i zwracać obiekt {nagłówek, ładunek, podpis}, dzięki czemu można po prostu przekazać cały token.
źródło
Oto bardziej bogate w funkcje rozwiązanie, które właśnie stworzyłem po przestudiowaniu tego pytania:
Oto kilka przykładów użycia:
Nie udało mi się uruchomić tego narzędzia w narzędziu Fragment kodu StackOverflow, ale oto mniej więcej to, co zobaczysz, jeśli uruchomisz ten kod:
Sprawiłem, że
parseJwt
funkcja zawsze zwraca obiekt (do pewnego stopnia z powodów pisania statycznego).Pozwala to na użycie składni, takiej jak:
Następnie możesz przetestować w czasie wykonywania pod kątem określonych rodzajów błędów i uniknąć kolizji nazw.
Jeśli ktoś może pomyśleć o jakimkolwiek niewielkim wysiłku, zmianach tego kodu o wysokiej wartości, z przyjemnością zedytuję moją odpowiedź
next(person)
.źródło
Na podstawie odpowiedzi tutaj i tutaj :
źródło
Uruchamiając Javascript node.js express Musiałem najpierw zainstalować pakiet w następujący sposób:
następnie w moim kodzie app.js pobierz pakiet:
Następnie uruchom kod:
Następnie magia:
źródło