tigtools

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

Επικολλήστε ένα JWT για να δείτε το header και τα claims του και πότε λήγει. Η αποκωδικοποίηση γίνεται στον περιηγητή σας και δεν επαληθεύει την υπογραφή.

Εκτελείται στον περιηγητή σας Χωρίς εγγραφή

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

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

  1. Αντιγράψτε ένα token από ένα Authorization header, ένα cookie ή τα developer tools του περιηγητή σας. Ένα πρόθεμα “Bearer ” αφαιρείται αυτόματα.
  2. Επικολλήστε το στο πλαίσιο. Το header και το payload εμφανίζονται ως μορφοποιημένο JSON.
  3. Ελέγξτε τη γραμμή κατάστασης και τον πίνακα claims για τον issuer, το audience και τις ημερομηνίες λήξης στην τοπική σας ώρα.
  4. Αντιγράψτε το JSON του header ή του payload αν το χρειάζεστε αλλού.

Πώς λειτουργεί

Ένα JSON Web Token (JWT, RFC 7519) στη συνηθισμένη υπογεγραμμένη μορφή του (JWS) αποτελείται από τρία μέρη κωδικοποιημένα με base64url και χωρισμένα με τελείες. Η κεφαλίδα δηλώνει ποιος αλγόριθμος υπέγραψε το token, για παράδειγμα HS256 (HMAC με SHA-256) ή RS256 (RSA). Το payload περιέχει τα claims: δηλώσεις για τον χρήστη και το ίδιο το token. Η υπογραφή επιτρέπει στον διακομιστή να ελέγξει ότι η κεφαλίδα και το payload δεν έχουν αλλάξει.

Η κεφαλίδα και το payload είναι μόνο κωδικοποιημένα, όχι κρυπτογραφημένα. Όποιος έχει ένα token μπορεί να διαβάσει τα περιεχόμενά του, κάτι που κάνει ακριβώς αυτό το εργαλείο. Μην βάζετε μυστικά σε payload JWT.

Η αποκωδικοποίηση δεν αποδεικνύει τίποτα για ένα token. Χωρίς το κλειδί του εκδότη, κανείς δεν μπορεί να διαπιστώσει αν η υπογραφή είναι γνήσια, επομένως το αποτέλεσμα εδώ δεν πρέπει ποτέ να χρησιμοποιείται για να αποφασίσετε αν θα εμπιστευτείτε ένα token. Η επαλήθευση ανήκει στον διακομιστή σας, με μια συντηρούμενη βιβλιοθήκη JWT που ελέγχει την υπογραφή, τον αλγόριθμο, τα exp, nbf, iss και aud.

Τα καταχωρισμένα claims εξηγούνται στον πίνακα. Τα exp, nbf και iat είναι τιμές NumericDate: δευτερόλεπτα από την 1η Ιανουαρίου 1970 UTC. Το εργαλείο τα μετατρέπει σε ημερομηνίες στη ζώνη ώρας σας και τα συγκρίνει με το ρολόι της συσκευής σας, χωρίς τη μικρή ανοχή που συχνά επιτρέπουν οι διακομιστές για διαφορές ρολογιών. Αν το ρολόι σας είναι λάθος, θα είναι λάθος και η κατάσταση.

Τα tokens με πέντε μέρη είναι κρυπτογραφημένα JWT (JWE). Το payload τους δεν μπορεί να αποκωδικοποιηθεί χωρίς το κλειδί, επομένως το εργαλείο αναφέρει μόνο τη μορφή.

Παραδείγματα

Γιατί το API μου επιστρέφει 401;

Αποκωδικοποιήστε το access token που στέλνει η εφαρμογή σας. Αν η γραμμή κατάστασης λέει «Έληξε στις …», ο πελάτης πρέπει να ανανεώσει το token. Αν το aud δείχνει https://api.example.com αλλά εσείς καλείτε το https://api2.example.com, το κοινό δεν ταιριάζει.

Έλεγχος ενός OpenID Connect ID token

Ένα ID token από έναν πάροχο σύνδεσης περιέχει iss (ο πάροχος), sub (το σταθερό αναγνωριστικό χρήστη), aud (το client ID σας), iat και exp, καθώς και claims προφίλ όπως email και name. Η αποκωδικοποίηση δείχνει ποια claims λαμβάνει πραγματικά η εφαρμογή σας.

Ανάγνωση ενός timestamp claim

Ένα payload περιέχει "exp": 1735689600. Ο πίνακας claims το εμφανίζει ως 1 Ιανουαρίου 2025, 00:00:00 UTC, μετατρεπόμενο στην τοπική σας ώρα, μαζί με το πόσο παλιό ή πόσο μακριά στο μέλλον είναι.

Συχνές ερωτήσεις

Επαληθεύει αυτό το εργαλείο την υπογραφή JWT;

Όχι. Αποκωδικοποιεί μόνο το header και το payload. Η επαλήθευση απαιτεί το μυστικό (για HS256) ή το δημόσιο κλειδί του εκδότη (για RS256 και ES256) και πρέπει να γίνεται στον διακομιστή σας με μια αξιόπιστη βιβλιοθήκη.

Είναι ασφαλές να επικολλήσω το token μου εδώ;

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

Γιατί μπορεί ο καθένας να διαβάσει το payload;

Τα υπογεγραμμένα JWT κωδικοποιούνται με base64url, το οποίο δεν είναι κρυπτογράφηση. Η υπογραφή προστατεύει το token από αλλαγές, όχι από ανάγνωση. Εάν τα περιεχόμενα πρέπει να είναι μυστικά, χρησιμοποιήστε ένα κρυπτογραφημένο JWT (JWE) ή κρατήστε τα δεδομένα στον διακομιστή.

Τι σημαίνει το “exp” και σε ποια μονάδα είναι;

Το exp είναι ο χρόνος λήξης ως NumericDate: ακέραια δευτερόλεπτα (όχι χιλιοστά) από 1970-01-01 00:00:00 UTC. Ένα token πρέπει να απορρίπτεται τη στιγμή αυτή ή μετά.

Γιατί λαμβάνω “not valid base64url”;

Το token πιθανότατα κόπηκε ή άλλαξε κατά την αντιγραφή, για παράδειγμα χάνοντας τους τελευταίους χαρακτήρες, εισαγωγικά γύρω του ή URL encoding (%2E αντί για τελεία). Επικολλήστε το raw token ακριβώς όπως εκδόθηκε.

Απόρρητο

Το token αποκωδικοποιείται με JavaScript στο πρόγραμμα περιήγησής σας. Δεν αποστέλλεται σε κανέναν διακομιστή, δεν αποθηκεύεται και δεν περιλαμβάνεται στα αναλυτικά στοιχεία. Δεν πραγματοποιείται επαλήθευση υπογραφής ή αναζήτηση κλειδιού, επομένως δεν γίνεται καμία αίτηση δικτύου.