Αποκωδικοποιητής JWT

Ο αποκωδικοποιητής JWT αναλύει τα JSON Web Tokens και εμφανίζει την κεφαλίδα, το payload και την υπογραφή σε μια καθαρή, μορφοποιημένη προβολή. Δείτε όλα τα τυπικά claims (iss, sub, aud, exp, iat, nbf, jti) με χρονικές σημειώσεις αναγνώσιμες από ανθρώπους. Ελέγξτε αν τα tokens έχουν λήξει, δείτε πληροφορίες αλγορίθμου και αντιγράφηκε μεμονωμένες ενότητες. Υποστηρίζει τους αλγορίθμους HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512 και PS256. 100% στην πλευρά του πελάτη — τα tokens σας δεν αποστέλλονται ποτέ σε κανέναν διακομιστή.

star 4.9
auto_awesome AI
New

Αποκωδικοποιητής JWT calculator

lightbulb Tips

  • JWT = Header.Payload.Signature (3 parts)
  • Payloads are encoded, NOT encrypted
  • Always check 'exp' claim for expiration
  • RS256 is more secure than HS256 for APIs

How to Use the Αποκωδικοποιητής JWT

content_paste

Επικόλληση Token

Επικολλήστε το token JWT σας (τη μεγάλη συμβολοσειρά με δύο τελείες) στο πεδίο εισαγωγής.

code

Προβολή Κεφαλίδας

Δείτε τον αλγόριθμο και τον τύπο token από την κεφαλίδα JWT.

visibility

Έλεγχος Payload

Προβολή όλων των αξιώσεων, συμπεριλαμβανομένων χρονοσημάνσεων, θέματος, εκδότη και προσαρμοσμένων δεδομένων.

schedule

Έλεγχος λήξης

Δείτε αν το διακριτικό (token) έχει λήξει και πότε εκδόθηκε.

The Formula

Ένα JWT αποτελείται από τρία μέρη κωδικοποιημένα σε Base64URL χωρισμένα με τελείς. Η κεφαλίδα καθορίζει τον αλγόριθμο υπογραφής (π.χ. HS256, RS256). Το φορτίο δεδομένων περιέχει αξιώσεις — καταχωρισμένες αξιώσεις όπως 'exp' (λήξη), 'iat' (χρόνος έκδοσης), 'sub' (θέμα) και προσαρμοσμένες αξιώσεις. Η υπογραφή δημιουργείται υπογράφοντας την κωδικοποιημένη κεφαλίδα και το φορτίο δεδομένων με ένα μυστικό ή ιδιωτικό κλειδί.

JWT = Base64URL(Header) + '.' + Base64URL(Payload) + '.' + Signature

lightbulb Variables Explained

  • Header Αντικείμενο JSON με αλγόριθμο (alg) και τύπο διακριτικού (typ)
  • Payload Αντικείμενο JSON που περιέχει αξιώσεις (δεδομένα) όπως sub, exp, iat
  • Signature Υπογραφή HMAC ή RSA της κεφαλίδας + του φορτίου δεδομένων για επαλήθευση
  • Base64URL Κωδικοποίηση Base64 ασφαλής για URL (- αντί για +, _ αντί για /)

tips_and_updates Pro Tips

1

Τα tokens JWT ΔΕΝ είναι κρυπτογραφημένα — ο καθένας μπορεί να διαβάσει το payload αποκωδικοποιώντας το με Base64

2

Ελέγχετε πάντα το claim 'exp' — τα ληγμένα tokens πρέπει να απορρίπτονται από το API σας

3

Τα claims 'iat' (εκδόθηκε στις) και 'nbf' (όχι πριν από) βοηθούν στην αποτροπή επιθέσεων επανάληψης token (replay attacks)

4

Το HS256 χρησιμοποιεί ένα κοινόχρηστο μυστικό· το RS256 χρησιμοποιεί ζεύγη δημόσιου/ιδιωτικού κλειδιού — το RS256 είναι πιο ασφαλές για κατανεμημένα συστήματα

5

Μην αποθηκεύετε ποτέ ευαίσθητα δεδομένα (κωδικούς πρόσβασης, πιστωτικές κάρτες) σε payloads JWT

6

Το μέγεθος του token έχει σημασία — τα JWT αποστέλλονται με κάθε αίτηמa HTTP στην κεφαλίδα Authorization

7

Χρησιμοποιήστε σύντομους χρόνους λήξης (15-60 λεπτά) με refresh tokens για καλύτερη ασφάλεια

Ο δωρεάν αποκωδικοποιητής JWT αναλύει τα JSON Web Tokens και εμφανίζει την κεφαλίδα, το φορτίο δεδομένων και την υπογραφή σε μια καθαρή, μορφοποιημένη προβολή. Ελέγξτε τους χρόνους λήξης, δείτε όλες τις αξιώσεις και επιθεωρήστε τις λεπτομέρειες του διακριτικού. 100% από την πλευρά του πελάτη — τα διακριτικά σας δεν φεύγουν ποτέ από το πρόγραμμα περιήγησής σας.

Αποκωδικοποιητής διακριτικών JWT - Προβολή κεφαλίδας & φορτίου δεδομένων

Επικολλήστε οποιοδήποτε διακριτικό JWT και δείτε αμέσως την αποκωδικοποιημένη κεφαλίδα και το φορτίο δεδομένων ως μορφοποιημένο JSON.

Ο αποκωδικοποιητής μας:

  • προσδιορίζει τον αλγόριθμο υπογραφής
  • εμφανίζει όλες τις τυπικές και προσαρμοσμένες αξιώσεις
  • μετατρέπει τις χρονοσημάνσεις Unix σε ημερομηνίες αναγνώσιμες από ανθρώπους

Η προβολή με χρωματική κωδίωση καθιστά εύκολη τη διάκριση των τριών τμημάτων JWT.

Εντοπισμός σφαλμάτων JWT - Έλεγχος λήξης & αξιώσεων

Εντοπίστε σφάλματα JWT ελέγχοντας τους χρόνους λήξης, τις χρονοσημάνσεις έκδοσης και τις τιμές των αξιώσεων.

Το εργαλείο μας δείχνει εάν τα διακριτικά έχουν λήξει, πόσος χρόνος απομένει μέχρι τη λήξη και επισημαίνει πιθανά προβλήματα.

Απαραίτητο για:

  • ανάπτυξη API
  • εντοπισμό σφαλμάτων πιστοποίησης
  • έλεγχο ασφάλειας

Τι είναι ένα JWT και πώς λειτουργεί η δομή;

Ένα JSON Web Token (JWT) είναι ένας συμπαγής, ασφαλής για URL τρόπος αναπαράστασης αξιώσεων που μεταφέρονται μεταξύ δύο μερών, ορισμένος από το RFC 7519 από το IETF.

Ένα JWT έχει τρία μέρη που χωρίζονται με τελείς, καθένα από τα οποία είναι κωδικοποιημένο σε Base64URL σύμφωνα με το RFC 4648:

  • μια κεφαλίδα που δηλώνει τον αλγόριθμο υπογραφής και τον τύπο διακριτικού χρησιμοποιώντας JSON (RFC 8259)
  • ένα φορτίο δεδομένων που μεταφέρει αξιώσεις — δηλώσεις σχετικά με μια οντότητα όπως ένας χρήστης, συν μεταδεδομένα όπως η λήξη
  • μια υπογραφή που συνδέει την κεφαλίδα και το φορτίο δεδομένων μεταξύ τους, ώστε η παραποίηση να είναι ανιχνεύσιμη

Αυτή η δομή επιτρέπει στις υπηρεσίες να επαληθεύουν την ταυτότητα χωρίς αναζήτηση στη βάση δεδομένων, γι' αυτό και τα JWT είναι κοινά σε ροές πιστοποίησης χωρίς κατάσταση (stateless authentication) και OpenID Connect.

Πώς να αποκωδικοποιήσετε ένα διακριτικό JWT βήμα προς βήμα

Για να αποκωδικοποιήσετε ένα JWT, χωρίστε το διακριτικό στις δύο τελείς του σε τρία τμήματα και, στη συνέχεια, αποκωδικοποιήστε τα δύο πρώτα από Base64URL.

Το πρώτο τμήμα αποδίδει το JSON της κεφαλίδας και το δεύτερο αποδίδει το JSON του φορτίου δεδομένων, και τα δύο αναγνώσιμα ως απλό κείμενο σύμφωνα με το RFC 8259.

Το Base64URL (RFC 4648, ενότητα 5) αντικαθιστά το '+' με '-' και το '/' με '_' και παραλείπει τη συμπλήρωση, επομένως ένας τυπικός αποκωδικοποιητής Base64 μπορεί να αποτύχει χωρίς προσαρμογή. Το εργαλείο μας το χειρίζεται αυτόματα και μορφοποιεί όμορφα το αποτέλεσμα.

Το τρίτο τμήμα, η υπογραφή, δεν αποκωδικοποιείται σε κείμενο επειδή είναι μια ακατέργαστη κρυπτογραφική τιμή.

Όπως σημειώνουν τα MDN Web Docs, η αποκωδικοποίηση δεν είναι επαλήθευση — η ανάγνωση ενός φορτίου δεδομένων δεν επιβεβαιώνει ποτέ ότι το διακριτικό είναι αυθεντικό.

Είναι κρυπτογραφημένο ένα JWT; Κωδικοποίηση έναντι κρυπτογράφησης

Όχι — ένα τυπικό υπογεγραμμένο JWT (ένα JWS) είναι κωδικοποιημένο, όχι κρυπτογραφημένο, οπότε οποιοσδήποτε κατέχει το διακριτικό μπορεί να διαβάσει το φορτίο δεδομένων του.

Η κωδικοποίηση Base64URL (RFC 4648) είναι αναστρέψιμη και δεν παρέχει καμία εμπιστευτικότητα. Απλώς καθιστά δυνατή τη μεταφορά ασφαλή για δυαδικά δεδομένα. Η υπογραφή που περιγράφεται στο RFC 7515 (JSON Web Signature) προστατεύει την ακεραιότητα και την αυθεντικότητα, όχι το απόρρητο.

Εάν χρειάζεται να είναι κρυμμένα τα περιεχόμενα, χρησιμοποιήστε αντί αυτού JWE (JSON Web Encryption, RFC 7516).

Το OWASP και το IETF τονίζουν αυτή τη διάκριση: ποτέ μην τοποθετείτε κωδικούς πρόσβασης, μυστικά API ή προσωπικά αναγνωρίσιμα δεδομένα σε ένα υπογεγραμμένο φορτίο δεδομένων JWT, επειδή ένας αποκωδικοποιητής σαν αυτόν αποκαλύπτει κάθε αξίωση σε απλό κείμενο χωρίς κανένα κλειδί.

Κατανόηση τυπικών αξιώσεων JWT: exp, iat, sub, aud

Οι καταχωρισμένες αξιώσεις JWT τυποποιούνται από το RFC 7519, ώστε τα διαφορετικά συστήματα να τις ερμηνεύουν με συνέπεια.

Το βασικό σύνολο περιλαμβάνει:

  • 'iss' (εκδότης)
  • 'sub' (θέμα, ο κύριος του διακριτικού)
  • 'aud' (κοινό, ο προβλεπόμενος παραλήπτης)
  • 'exp' (χρόνος λήξης)
  • 'nbf' (όχι πριν από)
  • 'iat' (χρόνος έκδοσης)
  • 'jti' (ένα μοναδικό αναγνωριστικό διακριτικού)

Οι τιμές exp, nbf και iat είναι τιμές NumericDate — δευτερόλεπτα από την εποχή Unix — τις οποίες ο αποκωδικοποιητής μας μετατρέπει σε ημερομηνίες αναγνώσιμες από ανθρώπους. Οι εφαρμογές προσθέτουν προσαρμοσμένες (ιδιωτικές) αξιώσεις για ρόλους, εύρη (scopes) ή αναγνωριστικά μισθωτών (tenant IDs).

Σύμφωνα με την προδιαγραφή, οι επαληθευτές πρέπει να απορρίπτουν ένα διακριτικό του οποίου το 'exp' έχει περάσει ή του οποίου το 'aud' δεν ταιριάζει με το αναμενόμενο κοινό, αποτρέποντας την κακή χρήση σε όλες τις υπηρεσίες.

Αλγόριθμοι υπογραφής JWT: HS256 έναντι RS256 έναντι ES256

Οι αλγόριθμοι υπογραφής JWT ορίζονται στο RFC 7518 (JSON Web Algorithms) και αναγνωρίζονται από την τιμή 'alg' της κεφαλίδας.

  • Οι αλγόριθμοι HMAC (HS256, HS384, HS512) χρησιμοποιούν ένα ενιαίο κοινό μυστικό τόσο για την υπογραφή όσο και για την επαλήθευση, το οποίο είναι απλό αλλά απαιτεί από κάθε επαληθευτή να κατέχει αυτό το μυστικό.
  • Οι αλγόριθμοι RSA (RS256, RS384, RS512) και ο RSASSA-PSS (PS256) χρησιμοποιούν ένα ιδιωτικό κλειδί για υπογραφή και ένα δημόσιο κλειδί για επαλήθευση, ιδανικό για κατανεμημένα συστήματα και OpenID Connect.
  • Οι αλγόριθμοι ECDSA (ES256, ES384, ES512) προσφέρουν ισοδύναμη ασφάλεια με μικρότερα κλειδιά και υπογραφές.

Το NIST δημοσιεύει τα υποκείμενα πρότυπα SHA-2 και ECDSA. Ο αποκωδικοποιητής μας διαβάζει το πεδίο 'alg' ώστε να μπορείτε να επιβεβαιώσετε ποιο σχήμα χρησιμοποιεί ένα διακριτικό.

Πρακτικές χρήσεις: JWT στην αυθεντικοποίηση και την ανάπτυξη API

Τα JWT χρησιμοποιούνται ευρέως για αυθεντικοποίηση χωρίς κατάσταση (stateless authentication), εξουσιοδότηση και ασφαλή ανταλλαγή πληροφοριών στα σύγχρονα API.

Αφού ένας χρήστης συνδεθεί, ένας διακομιστής εκδίδει ένα υπογεγραμμένο JWT το οποίο ο πελάτης επιστρέφει στην κεφαλίδα HTTP Authorization ως token τύπου Bearer, σύμφωνα με το RFC 6750. Επειδή η υπογραφή είναι αυτοτελής, οι υπηρεσίες backend μπορούν να επαληθεύσουν το token χωρίς να κάνουν ερώτημα σε αποθήκη συνεδριών, βελτιώνοντας την επεκτασιμότητα.

Τα JWT τροφοδοτούν επίσης τα tokens ταυτότητας OpenID Connect και τα πρότυπα access-token του OAuth 2.0.

Οι προγραμματιστές χρησιμοποιούν αποκωδικοποιητές κατά τον εντοπισμό σφαλμάτων (debugging) για να επιθεωρήσουν ισχυρισμούς (claims), να επιβεβαιώσουν τις τιμές κοινού και εκδότη, και να ελέγξουν τη λήξη όταν ένα API επιστρέφει σφάλματα 401. Όπως περιγράφουν τα MDN Web Docs, αυτή η ροή βάσει token αποτελεί τη βάση πολλών αρχιτεκτονικών single-sign-on και microservices.

Βέλτιστες πρακτικές ασφάλειας JWT και συνήθεις παγίδες

Η ασφαλής χρήση JWT επικεντρώνεται στην επικύρωση του αλγορίθμου, την επαλήθευση της υπογραφής και την επιβολή της λήξης.

Το OWASP προειδοποιεί ενάντια στην κλασική επίθεση 'alg: none' και στις επιθέσεις σύγχυσης αλγορίθμου, όπου ένας διακομιστής που εξαπατάται ώστε να αντιμετωπίσει ένα δημόσιο κλειδί RS256 ως μυστικό HMAC μπορεί να οδηγήσει σε πλαστογράφηση· να ορίζετε πάντα σταθερά τον αναμενόμενο αλγόριθμο αντί να εμπιστεύεστε την κεφαλίδα.

Βασικές πρακτικές:

  • Χρησιμοποιήστε μικρές διάρκειες ζωής 'exp' με tokens ανανέωσης, και επικυρώστε τα 'iss' και 'aud' σε κάθε αίτημα.
  • Μην αποθηκεύετε ποτέ μυστικά στο payload, καθώς είναι απλώς κωδικοποιημένο σε Base64.
  • Μεταδίδετε τα tokens αποκλειστικά μέσω HTTPS, και εξετάστε στρατηγικές ανάκλησης επειδή τα τυπικά JWT δεν μπορούν να ακυρωθούν μεμονωμένα πριν από τη λήξη τους.

Η τήρηση αυτών των συστάσεων του IETF και του OWASP κλείνει τις πιο εκμεταλλεύσιμες ευπάθειες των JWT.

Συνήθη λάθη κατά την αποκωδικοποίηση και τη χρήση JWT

Τα πιο συνήθη λάθη κατά την εργασία με JWT περιλαμβάνουν:

  • Σύγχυση της αποκωδικοποίησης με την επαλήθευση: η ανάγνωση ενός payload με έναν αποκωδικοποιητή δεν αποδεικνύει τίποτα σχετικά με την αυθεντικότητα, καθώς ο καθένας μπορεί να δημιουργήσει ένα αναυπόγραφο ή πλαστογραφημένο token.
  • Τυφλή εμπιστοσύνη στην τιμή 'alg' της κεφαλίδας, η οποία ενεργοποιεί επιθέσεις σύγχυσης αλγορίθμου που επισημαίνονται από το OWASP.
  • Εσφαλμένη ανάγνωση της λήξης συγκρίνοντας τα δευτερόλεπτα epoch του 'exp' με χιλιοστά του δευτερολέπτου, κάνοντας τα έγκυρα tokens να φαίνονται ληγμένα.
  • Χρήση τυπικού αποκωδικοποιητή Base64 αντί για Base64URL (RFC 4648), η οποία μπορεί να αλλοιώσει το αποτέλεσμα λόγω του διαφορετικού αλφαβήτου και της έλλειψης padding.
  • Τοποθέτηση ευαίσθητων δεδομένων στο payload, τα οποία έτσι διαρρέουν, επειδή το token είναι κωδικοποιημένο και όχι κρυπτογραφημένο.

Η επαλήθευση των υπογραφών στην πλευρά του διακομιστή με το αναμενόμενο κλειδί και αλγόριθμο αποτρέπει αυτές τις παγίδες.

Γιατί αυτός ο αποκωδικοποιητής JWT εκτελείται εξ ολοκλήρου στον περιηγητή σας

Αυτός ο αποκωδικοποιητής JWT επεξεργάζεται τα tokens εξ ολοκλήρου στην πλευρά του πελάτη, επομένως το token σας δεν φεύγει ποτέ από τη συσκευή σας ούτε φτάνει σε κάποιον διακομιστής.

Επειδή ένα υπογεγραμμένο JWT είναι απλώς κωδικοποιημένο σε Base64URL (RFC 4648), η αποκωδικοποίηση δεν απαιτεί καμία κλήση δικτύου — η κεφαλίδα και το payload απλώς αντιστρέφονται από την κωδικοποιημένη μορφή τους χρησιμοποιώντας JavaScript στον περιηγητή σας.

Η διατήρηση της λειτουργίας σε τοπικό επίπεδο έχει σημασία για την ασφάλεια: τα tokens συχνά περιέχουν διαπιστευτήρια ζωντανής συνεδρίας, και η επικόλλεσή τους σε ένα εργαλείο στην πλευρά του διακομιστή θα μπορούσε να τα εκθέσει σε αρχεία καταγραφής (logs) ή κατά τη μετάδοση. Το OWASP συνιστά την ελαχιστοποίηση των σημείων στα οποία ταξιδεύουν τα ευαίσθητα διαπιστευτήρια.

Ένας αποκωδικοποιητής που λειτουργεί μόνο στον περιηγητή επιτρέπει στους προγραμματιστές να επιθεωρούν με ασφάλεια τα tokens παραγωγής κατά τον εντοπισμό σφαλμάτων, τιμώντας παράλληλα τις αρχές ελάχιστης έκθεσης, χωρίς να μεταδίδουν δεδομένα αυθεντικοποίησης σε τρίτους.

Frequently Asked Questions

sell

Tags