Τι εμφανίζει ένας αποκωδικοποιητής JWT
Ένα JSON Web Token, ή JWT, είναι μια συμπαγής μορφή token που χρησιμοποιείται συνήθως για αυθεντικοποίηση, εξουσιοδότηση, συνεδρίες API και ροές ταυτότητας. Ένα JWT συνήθως έχει τρία μέρη διαχωρισμένα με τελεία: μια κεφαλίδα, ένα payload και μια υπογραφή. Η κεφαλίδα και το payload είναι base64url-κωδικοποιημένο JSON, που σημαίνει ότι μπορούν να αποκωδικοποιηθούν και να διαβαστούν χωρίς μυστικό κλειδί.
Αυτός ο αποκωδικοποιητής JWT επικεντρώνεται στην επιθεώρηση. Μορφοποιεί την κεφαλίδα και το payload, εξάγει κοινές αξιώσεις (claims), εμφανίζει τα ακατέργαστα τμήματα και εξηγεί τις χρονικές αξιώσεις όπως iat, nbf, και exp. Αυτό είναι χρήσιμο όταν εντοπίζετε προβλήματα ροών σύνδεσης, κλήσεων API, δοκιμαστικών περιβαλλόντων, ενσωματώσεων OAuth ή ζητημάτων διάρκειας ζωής του token.
- Διαβάστε τον αλγόριθμο και τον τύπο του token από την κεφαλίδα.
- Επιθεωρήστε τον issuer, το subject, το audience και προσαρμοσμένες αξιώσεις στο payload.
- Μετατρέψτε τις αξιώσεις NumericDate σε αναγνώσιμες ημερομηνίες.
- Αντιγράψτε την αποκωδικοποιημένη κεφαλίδα, το αποκωδικοποιημένο payload ή τα ακατέργαστα τμήματα του token.
Η αποκωδικοποίηση δεν είναι επαλήθευση
Η αποκωδικοποίηση ενός JWT σας λέει τι αναφέρει το token. Δεν αποδεικνύει ποιος το δημιούργησε, αν το payload τροποποιήθηκε, αν η υπογραφή ταιριάζει ή αν η εφαρμογή σας πρέπει να το αποδεχτεί. Η επαλήθευση της υπογραφής απαιτεί το σωστό μυστικό, το δημόσιο κλειδί ή τη διαμόρφωση JWKS και πρέπει να ταιριάζει με τον αλγόριθμο που αναμένει η εφαρμογή.
Το μέρος της υπογραφής διαφέρει από την κεφαλίδα και το payload. Είναι μια κρυπτογραφική τιμή πάνω στην κωδικοποιημένη κεφαλίδα και το payload, όχι ένα άλλο αντικείμενο JSON για αποκωδικοποίηση. Αυτή η σελίδα εμφανίζει την υπογραφή στα ακατέργαστα τμήματα όταν υπάρχει, αλλά δεν ζητά κλειδιά υπογραφής ούτε επαληθεύει την τιμή.
Θεωρήστε αυτή τη σελίδα ως επιθεωρητή, όχι ως αρχή. Ένα αποκωδικοποιημένο token μπορεί να είναι ψεύτικο, ληγμένο, χωρίς υπογραφή, υπογεγραμμένο με απροσδόκητο κλειδί ή να απορριφθεί από την υπηρεσία που το εξέδωσε.
Κοινές αξιώσεις JWT
| Claim | Meaning | Τυπική χρήση |
|---|---|---|
iss | Issuer | Η υπηρεσία ή ο πάροχος ταυτότητας που εξέδωσε το token. |
sub | Subject | Ο χρήστης, ο λογαριασμός, ο client ή ο φορέας για τον οποίο αφορά το token. |
aud | Audience | Το API, η εφαρμογή ή η υπηρεσία που θα πρέπει να λάβει το token. |
iat | Έκδοση σε | Όταν δημιουργήθηκε το token. |
nbf | Μη πριν | Το token δεν πρέπει να γίνεται αποδεκτό πριν από αυτή την ώρα. |
exp | Λήγει στις | Το token δεν πρέπει να γίνεται αποδεκτό μετά από αυτή την ώρα. |
Ασφαλείς πρακτικές εντοπισμού σφαλμάτων
- Χρησιμοποιήστε δοκιμαστικά tokens όποτε είναι δυνατόν αντί για παραγωγικά tokens χρηστών.
- Μην επικολλάτε μυστικά υπογραφής, ιδιωτικά κλειδιά ή διαπιστευτήρια API σε έναν αποκωδικοποιητή.
- Ελέγξτε ότι ο αλγόριθμος είναι ο αναμενόμενος από την εφαρμογή σας.
- Compare
issandaudσυγκρίνετε το iss και το aud με την υπηρεσία που εντοπίζετε. - Θυμηθείτε ότι ο χρόνος του προγράμματος περιήγησης και ο χρόνος του διακομιστή μπορεί να διαφέρουν όταν αντιμετωπίζετε προβλήματα λήξης.
Σχετικά τοπικά εργαλεία
- Χρησιμοποιήστε το Base64 Encoder Decoder όταν χρειάζεται να ελέγξετε απλές base64 συμβολοσειρές. Τα JWT χρησιμοποιούν base64url, οπότε αυτός ο αποκωδικοποιητής JWT είναι πιο ασφαλής για πλήρη tokens.
- Χρησιμοποιήστε το JSON Beautifier όταν θέλετε να μορφοποιήσετε αντίγραφα αντικειμένων payload εκτός του πλαισίου token.
- Χρησιμοποιήστε το Unix Timestamp Converter όταν χρειάζεστε έναν ξεχωριστό έλεγχο χρονοσφραγίδων για τιμές NumericDate όπως
iat,nbf, ήexp.
Συχνές Ερωτήσεις
Επαληθεύει αυτός ο αποκωδικοποιητής JWT τις υπογραφές;
Όχι. Αποκωδικοποιεί την κεφαλίδα και το payload ώστε να μπορείτε να τα εξετάσετε, αλλά δεν επαληθεύει την υπογραφή ούτε αποδεικνύει ότι το token είναι αξιόπιστο. Η επαλήθευση απαιτεί το μυστικό του εκδότη, το δημόσιο κλειδί ή τη διαμόρφωση JWKS. Η υπογραφή δεν εμφανίζεται ως αποκωδικοποιημένο πάνελ JSON επειδή είναι κρυπτογραφική τιμή, όχι αναγνώσιμα δεδομένα claims· αυτό το εργαλείο την εμφανίζει μόνο στα ακατέργαστα τμήματα.
Μπορεί ο καθένας να αποκωδικοποιήσει ένα JWT;
Ναι, η κεφαλίδα και το payload είναι κωδικοποιημένα, όχι κρυπτογραφημένα, εκτός αν το σύστημά σας χρησιμοποιεί ξεχωριστή κρυπτογραφημένη μορφή token. Μην βάζετε μυστικά στο payload των JWT.
Τι σημαίνει ένα ληγμένο JWT;
Εάν η exp αξίωση βρίσκεται στο παρελθόν, ένας διακομιστής κανονικά θα πρέπει να απορρίψει το token. Αυτή η σελίδα μπορεί να δείξει τη χρονοσφραγίδα, αλλά ο διακομιστής είναι η τελική αρχή.
Γιατί το εργαλείο δέχεται πρόθεμα Bearer;
Οι προγραμματιστές συχνά αντιγράφουν tokens από μια κεφαλίδα Authorization: Bearer ... Authorization: Bearer ... Το εργαλείο αφαιρεί το πρόθεμα πριν από την αποκωδικοποίηση του σώματος του token.