JWT Decoder

Επικολλήστε ένα JSON Web Token για να διαβάσετε το header και το payload του, να δείτε πότε λήγει και να καταλάβετε κάθε claim. Το token σας δεν φεύγει ποτέ από τον browser.

Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει

Η αποκωδικοποίηση δεν είναι επαλήθευση. Οποιοσδήποτε μπορεί να διαβάσει το header και το payload ενός JWT, επειδή είναι απλώς κωδικοποιημένα σε base64url. Το εργαλείο δείχνει τι ισχυρίζεται το token· δεν αποδεικνύει ότι είναι γνήσιο. Επαληθεύετε πάντα την υπογραφή στον server σας.

Header

Payload


      

Επαλήθευση υπογραφής (προαιρετικά, HS256/HS384/HS512)

Ελέγχει μια υπογραφή HMAC με το μυστικό που εισάγετε, μέσω του Web Crypto API του browser. Το μυστικό δεν φεύγει ποτέ από αυτή τη σελίδα. Τα tokens RSA/ECDSA χρειάζονται το δημόσιο κλειδί του εκδότη και δεν επαληθεύονται εδώ.

Πώς να χρησιμοποιήσετε: JWT Decoder

  1. Επικολλήστε το token στο πεδίο Κωδικοποιημένο token. Το αρχικό Bearer από ένα Authorization header αγνοείται.
  2. Το header και το payload αποκωδικοποιούνται αμέσως και εμφανίζονται ως μορφοποιημένο JSON.
  3. Διαβάστε τον πίνακα Επεξήγηση claims: τα exp, iat και nbf μετατρέπονται σε ημερομηνίες με χρόνους «λήγει σε» / «έληξε πριν από».
  4. Ελέγξτε τη γραμμή κατάστασης για προβλήματα λήξης και τις προειδοποιήσεις για επικίνδυνες ρυθμίσεις όπως το alg: none.
  5. Προαιρετικά, εισαγάγετε το κοινό μυστικό για να επαληθεύσετε τοπικά μια υπογραφή 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 παραγωγής;
Η αποκωδικοποίηση γίνεται εξ ολοκλήρου στον browser σας με JavaScript. Το token δεν ανεβαίνει, δεν καταγράφεται και δεν αποθηκεύεται. Όπως με κάθε διαπιστευτήριο, χειριστείτε πάντως τα ενεργά tokens με προσοχή και προτιμήστε ληγμένα ή δοκιμαστικά tokens όταν μοιράζεστε screenshots.
Επαληθεύει αυτό το εργαλείο την υπογραφή του JWT;
Η αποκωδικοποίηση από μόνη της όχι. Μπορείτε προαιρετικά να επαληθεύσετε tokens HS256, HS384 και HS512 εισάγοντας το κοινό μυστικό· το HMAC υπολογίζεται τοπικά με το Web Crypto API. Τα tokens RS256 και ES256 πρέπει να επαληθεύονται με το δημόσιο κλειδί του εκδότη στον server σας.
Γιατί το token μου εμφανίζεται ως ληγμένο;
Το claim exp βρίσκεται στο παρελθόν σε σχέση με το ρολόι του υπολογιστή σας. Ζητήστε νέο token ή ανανεώστε το με το refresh token σας. Αν οι χρόνοι φαίνονται λάθος, ελέγξτε για απόκλιση ρολογιού ή για τιμή exp γραμμένη σε χιλιοστά του δευτερολέπτου.
Ποια η διαφορά μεταξύ JWT, JWS και JWE;
Το JWT είναι η μορφή των claims. Ένα JWS είναι ένα υπογεγραμμένο JWT με τρία μέρη, και αυτό αποκωδικοποιεί το εργαλείο. Ένα JWE είναι ένα κρυπτογραφημένο JWT με πέντε μέρη· το payload του δεν διαβάζεται χωρίς το κλειδί αποκρυπτογράφησης.
Γιατί το alg «none» είναι επικίνδυνο;
Ένα μη υπογεγραμμένο token μπορεί να το πλαστογραφήσει οποιοσδήποτε. Οι servers πρέπει να απορρίπτουν το alg: none και να δέχονται μόνο τον συγκεκριμένο αλγόριθμο που περιμένουν.

Σχετικά εργαλεία