JWT Decoder
Επικολλήστε ένα JSON Web Token για να διαβάσετε το header και το payload του, να δείτε πότε λήγει και να καταλάβετε κάθε claim. Το token σας δεν φεύγει ποτέ από τον browser.
Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει
Η αποκωδικοποίηση δεν είναι επαλήθευση. Οποιοσδήποτε μπορεί να διαβάσει το header και το payload ενός JWT, επειδή είναι απλώς κωδικοποιημένα σε base64url. Το εργαλείο δείχνει τι ισχυρίζεται το token· δεν αποδεικνύει ότι είναι γνήσιο. Επαληθεύετε πάντα την υπογραφή στον server σας.
Header
Payload
Επεξήγηση claims
Επαλήθευση υπογραφής (προαιρετικά, HS256/HS384/HS512)
Ελέγχει μια υπογραφή HMAC με το μυστικό που εισάγετε, μέσω του Web Crypto API του browser. Το μυστικό δεν φεύγει ποτέ από αυτή τη σελίδα. Τα tokens RSA/ECDSA χρειάζονται το δημόσιο κλειδί του εκδότη και δεν επαληθεύονται εδώ.
Πώς να χρησιμοποιήσετε: JWT Decoder
- Επικολλήστε το token στο πεδίο Κωδικοποιημένο token. Το αρχικό
Bearerαπό ένα Authorization header αγνοείται. - Το header και το payload αποκωδικοποιούνται αμέσως και εμφανίζονται ως μορφοποιημένο JSON.
- Διαβάστε τον πίνακα Επεξήγηση claims: τα
exp,iatκαιnbfμετατρέπονται σε ημερομηνίες με χρόνους «λήγει σε» / «έληξε πριν από». - Ελέγξτε τη γραμμή κατάστασης για προβλήματα λήξης και τις προειδοποιήσεις για επικίνδυνες ρυθμίσεις όπως το
alg: none. - Προαιρετικά, εισαγάγετε το κοινό μυστικό για να επαληθεύσετε τοπικά μια υπογραφή HS256, HS384 ή HS512.
Τι περιέχει ένα JWT;
Ένα JSON Web Token (RFC 7519) είναι τρία strings base64url ενωμένα με τελείες: header.payload.signature. Το header ορίζει τον αλγόριθμο υπογραφής (alg) και τον τύπο του token. Το payload περιέχει τα claims, όπως ποιος είναι ο χρήστης και πότε λήγει το token. Η υπογραφή υπολογίζεται πάνω στα δύο πρώτα μέρη με ένα μυστικό ή ιδιωτικό κλειδί.
Αποκωδικοποίηση δεν σημαίνει επαλήθευση
Το header και το payload είναι μόνο κωδικοποιημένα, όχι κρυπτογραφημένα, οπότε όποιος έχει το token μπορεί να τα διαβάσει. Γι' αυτό δεν πρέπει ποτέ να βάζετε κωδικούς ή μυστικά στο payload ενός JWT. Η αποκωδικοποίηση σας λέει τι ισχυρίζεται ένα token. Η επαλήθευση της υπογραφής, συνήθως στον API server σας με μια βιβλιοθήκη όπως η jose ή η PyJWT, αποδεικνύει ποιος το εξέδωσε και ότι δεν έχει τροποποιηθεί. Ο server πρέπει επίσης να ελέγχει τα exp, nbf, iss και aud και να απορρίπτει μη αναμενόμενους αλγορίθμους.
Σκονάκι registered claims
| Claim | Σημασία |
|---|---|
iss | Εκδότης (issuer): ποιος δημιούργησε και υπέγραψε το token |
sub | Υποκείμενο (subject): συνήθως το ID του χρήστη |
aud | Αποδέκτης (audience): για ποιο API προορίζεται το token |
exp | Χρόνος λήξης, σε δευτερόλεπτα από το Unix epoch |
nbf | Μη έγκυρο πριν από αυτή τη στιγμή |
iat | Χρόνος έκδοσης |
jti | Μοναδικό ID token, χρήσιμο για λίστες ανάκλησης |
Debugging σφαλμάτων «token expired»
Αν ένα API απορρίπτει ένα token που φαίνεται καινούργιο, συγκρίνετε τα exp και nbf με το ρολόι του server. Μικρές αποκλίσεις ρολογιού μεταξύ μηχανημάτων είναι συνηθισμένες, γι' αυτό οι περισσότερες βιβλιοθήκες επιτρέπουν ανοχή 30-60 δευτερολέπτων. Ελέγξτε επίσης ότι το exp είναι σε δευτερόλεπτα: μια τιμή σε χιλιοστά του δευτερολέπτου είναι συχνό bug και μεταθέτει τη λήξη χιλιάδες χρόνια στο μέλλον.
Συχνές ερωτήσεις
Είναι ασφαλές να επικολλήσω εδώ ένα JWT παραγωγής;
Επαληθεύει αυτό το εργαλείο την υπογραφή του JWT;
Γιατί το token μου εμφανίζεται ως ληγμένο;
exp βρίσκεται στο παρελθόν σε σχέση με το ρολόι του υπολογιστή σας. Ζητήστε νέο token ή ανανεώστε το με το refresh token σας. Αν οι χρόνοι φαίνονται λάθος, ελέγξτε για απόκλιση ρολογιού ή για τιμή exp γραμμένη σε χιλιοστά του δευτερολέπτου.Ποια η διαφορά μεταξύ JWT, JWS και JWE;
Γιατί το alg «none» είναι επικίνδυνο;
alg: none και να δέχονται μόνο τον συγκεκριμένο αλγόριθμο που περιμένουν.