Utilia

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

Αποκωδικοποιήστε κεφαλίδα και φορτίο JWT, δείτε τα exp, iat και nbf ως ημερομηνίες και επαληθεύστε υπογραφές HS256, RS256, ES256 τοπικά στον browser.

Τα διακριτικά (tokens) είναι διαπιστευτήρια. Το εργαλείο τα αποκωδικοποιεί και τα επαληθεύει στο πρόγραμμα περιήγησής σας και δεν τα στέλνει πουθενά.

Επαλήθευση της υπογραφής

HS256/384/512: εισαγάγετε το κοινό μυστικό. RS, PS, ES (256/384/512) και EdDSA: επικολλήστε το δημόσιο κλειδί ως PEM (public key, RSA public key ή πιστοποιητικό) ή ως JWK (ένα JWK Set αντιστοιχίζεται με το kid).

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

  1. Επικολλήστε το token στο πεδίο JSON Web Token. Λειτουργεί και μια ολόκληρη τιμή Authorization: Bearer …: το πρόθεμα Bearer και οι αλλαγές γραμμής αφαιρούνται αυτόματα.
  2. Το token αποκωδικοποιείται καθώς πληκτρολογείτε (ή πατήστε Αποκωδικοποίηση). Η Κεφαλίδα και το Φορτίο εμφανίζονται ως μορφοποιημένο JSON, το καθένα με δικό του κουμπί Αντιγραφή.
  3. Διαβάστε τον πίνακα Χρονικοί ισχυρισμοί: τα exp, nbf και iat εμφανίζονται με την ακατέργαστη τιμή τους, την ημερομηνία στη ζώνη ώρας σας, μια σχετική ένδειξη («σε 3 ώρες», «πριν από 2 ημέρες») και μια κατάσταση όπως Έχει λήξει ή Δεν ισχύει ακόμη.
  4. Προσέξτε τις προειδοποιήσεις πάνω από τα αποτελέσματα, για παράδειγμα όταν το alg είναι none ή όταν μια ημερομηνία μοιάζει να είναι σε χιλιοστά του δευτερολέπτου.
  5. Για να ελέγξετε την υπογραφή, συμπληρώστε το κλειδί στην ενότητα Επαλήθευση της υπογραφής και πατήστε Επαλήθευση υπογραφής.

Αποκωδικοποίηση δεν σημαίνει επαλήθευση

Ένα JWT αποτελείται από τρία μέρη Base64url χωρισμένα με τελείες: κεφαλίδα.φορτίο.υπογραφή. Η κεφαλίδα και το φορτίο είναι απλώς κωδικοποιημένα, όχι κρυπτογραφημένα· όποιος έχει το token μπορεί να τα διαβάσει, και το εργαλείο αποκωδικοποιεί οποιοδήποτε token χωρίς κλειδί. Αυτό σημαίνει επίσης ότι ένα αποκωδικοποιημένο φορτίο δεν αποδεικνύει τίποτα: κάποιος μπορεί να το έχει αλλάξει. Μόνο μια έγκυρη υπογραφή δείχνει ότι το token εκδόθηκε από τον κάτοχο του κλειδιού και δεν έχει τροποποιηθεί έκτοτε. Γι’ αυτό η γραμμή κατάστασης γράφει «Αποκωδικοποιήθηκε (η υπογραφή δεν έχει επαληθευτεί)» μέχρι να κάνετε την επαλήθευση.

Ένα token με πέντε μέρη είναι JWE (κρυπτογραφημένο JWT)· το περιεχόμενό του δεν διαβάζεται χωρίς το κλειδί αποκρυπτογράφησης, και το εργαλείο σας το λέει.

Επαλήθευση της υπογραφής

  • HS256, HS384, HS512 (HMAC): εισαγάγετε το κοινό Μυστικό. Στη Μορφή μυστικού επιλέξτε αν είναι απλό κείμενο (UTF-8) ή Base64/Base64url, καθώς ορισμένοι πάροχοι αποθηκεύουν τα μυστικά σε Base64. Μπορείτε επίσης να επικολλήσετε ένα JWK τύπου oct. Αν το μυστικό είναι μικρότερο από την έξοδο της συνάρτησης κατακερματισμού (32 byte για το HS256), το εργαλείο σημειώνει ότι είναι κάτω από το ελάχιστο του RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 και EdDSA: επικολλήστε το Δημόσιο κλειδί (PEM ή JWK). Δεκτά μπλοκ PEM είναι τα PUBLIC KEY, RSA PUBLIC KEY και CERTIFICATE (το κλειδί διαβάζεται από το πιστοποιητικό X.509). Λειτουργεί και ένα JWK ή ολόκληρο JWK Set: χρησιμοποιείται το κλειδί του οποίου το kid ταιριάζει με την κεφαλίδα. Τα ιδιωτικά κλειδιά απορρίπτονται· ένας επαληθευτής δεν χρειάζεται ποτέ ιδιωτικό κλειδί. Το EdDSA υποστηρίζει Ed25519 σε προγράμματα περιήγησης όπου το Web Crypto το υλοποιεί.

Η επαλήθευση χρησιμοποιεί το Web Crypto API του προγράμματος περιήγησης. Το αποτέλεσμα «Μη έγκυρη υπογραφή» σημαίνει ότι το κλειδί είναι λάθος ή ότι το token τροποποιήθηκε. Σημειώστε ότι ο αλγόριθμος λαμβάνεται από την κεφαλίδα του token: ένας πραγματικός διακομιστής πρέπει αντίθετα να ορίζει τον αναμενόμενο αλγόριθμο στις ρυθμίσεις του, διαφορετικά ένας επιτιθέμενος μπορεί να τον επιλέξει.

Σημειώσεις ασφαλείας

  • Τα tokens είναι διαπιστευτήρια. Όποιος κατέχει ένα έγκυρο access token μπορεί συνήθως να ενεργήσει ως ο κάτοχός του μέχρι να λήξει. Το εργαλείο αποκωδικοποιεί και επαληθεύει τα πάντα στο πρόγραμμα περιήγησής σας και δεν στέλνει ποτέ το token ή το κλειδί πουθενά. Παρ’ όλα αυτά, αποφύγετε να επικολλάτε tokens παραγωγής σε εργαλεία που δεν μπορείτε να ελέγξετε.
  • Το alg: none σημαίνει ότι το token δεν είναι υπογεγραμμένο. Οποιοσδήποτε μπορεί να πλαστογραφήσει ένα τέτοιο token, και ένας διακομιστής πρέπει να το απορρίπτει. Το εργαλείο εμφανίζει προειδοποίηση και αρνείται να «επαληθεύσει» τέτοιο token.
  • Οι έλεγχοι ώρας εδώ χρησιμοποιούν το ρολόι του υπολογιστή σας χωρίς καμία ανοχή· οι διακομιστές συχνά επιτρέπουν απόκλιση ενός ή δύο λεπτών.
  • Οι ημερομηνίες JWT (NumericDate) μετρούν δευτερόλεπτα από την 1η Ιανουαρίου 1970 UTC. Μια τιμή 13 ψηφίων είναι πιθανότατα σε χιλιοστά του δευτερολέπτου, ένα συχνό σφάλμα.

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

Μπορεί το εργαλείο να μου πει αν ένα token είναι έγκυρο;

Μπορεί να σας πει αν η υπογραφή ταιριάζει με ένα κλειδί που δίνετε εσείς και αν ικανοποιούνται αυτή τη στιγμή τα exp και nbf. Το αν το token γίνεται δεκτό εξαρτάται και από ελέγχους που γνωρίζει μόνο ο διακομιστής: αναμενόμενος εκδότης (iss), κοινό (aud), αλγόριθμος και ανάκληση.

Γιατί αποτυγχάνει η επαλήθευση ενώ το μυστικό είναι σωστό;

Ελέγξτε τη Μορφή μυστικού: ένα μυστικό Base64 που πληκτρολογήθηκε ως κείμενο δίνει διαφορετικό κλειδί. Βεβαιωθείτε επίσης ότι δεν προστέθηκε κενό ή αλλαγή γραμμής στο μυστικό, αφού τα κλειδιά HMAC συγκρίνονται byte προς byte.

Ποια είναι η διαφορά μεταξύ RS256, PS256 και ES256;

Και τα τρία είναι υπογραφές δημόσιου κλειδιού με SHA-256. Το RS256 χρησιμοποιεί RSA με συμπλήρωση PKCS#1 v1.5, το PS256 χρησιμοποιεί RSA με συμπλήρωση PSS και το ES256 χρησιμοποιεί ECDSA στην καμπύλη P-256, που δίνει πολύ μικρότερες υπογραφές.

Πού θα βρω το δημόσιο κλειδί ενός παρόχου;

Οι πάροχοι ταυτότητας δημοσιεύουν ένα JWKS (JSON Web Key Set), συνήθως συνδεδεμένο από το /.well-known/openid-configuration στο jwks_uri. Ανοίξτε το μόνοι σας και επικολλήστε εδώ το JSON· το εργαλείο διαλέγει το κλειδί με βάση το kid και δεν ανακτά ποτέ τίποτα από το δίκτυο.

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

Το token μένει στη συσκευή σας: η αποκωδικοποίηση και η επαλήθευση γίνονται τοπικά και δεν μεταφορτώνεται τίποτα. Για επιπλέον προσοχή, χρησιμοποιήστε ένα token που έχει λήξει ή δοκιμαστικό, όταν χρειάζεστε μόνο τη δομή.