Αποκωδικοποιητής JWT
Επικολλήστε ένα JSON Web Token και διαβάστε το header και το payload ως μορφοποιημένο JSON. Οι χρόνοι λήξης και έκδοσης εμφανίζονται ως ημερομηνίες, μαζί με ένδειξη για το αν το token είναι αυτή τη στιγμή έγκυρο. Η αποκωδικοποίηση γίνεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας, κάτι που έχει σημασία όταν το token είναι ενεργό διαπιστευτήριο.
0 χαρακτήρες · 0 λέξεις · 0 γραμμές
0 χαρακτήρες · 0 λέξεις · 0 γραμμές
Εκτελείται εξ ολοκλήρου σε αυτήν την καρτέλα του προγράμματος περιήγησης. Το κείμενό σας δεν ανεβαίνει ούτε αποθηκεύεται πουθενά.
Καταχωρισμένα claims
Τα επτά ονόματα claim που ορίζονται στο RFC 7519 §4.1. Όλα είναι προαιρετικά· οι χρόνοι είναι δευτερόλεπτα από 1970-01-01 UTC.
| Claim | Σημασία |
|---|---|
iss | Εκδότης: ποιος δημιούργησε και υπέγραψε το token |
sub | Υποκείμενο: ο χρήστης ή η οντότητα στην οποία αναφέρεται το token |
aud | Κοινό: για ποιον προορίζεται το token |
exp | Χρόνος λήξης: απορρίψτε το token μετά από αυτή τη στιγμή |
nbf | Όχι πριν από: απορρίψτε το token πριν από αυτή τη στιγμή |
iat | Έκδοση: πότε δημιουργήθηκε το token |
jti | JWT ID: μοναδικό αναγνωριστικό, για αποτροπή επανάληψης (replay) |
Συνηθισμένες τιμές alg
| Τιμή alg | Σημασία |
|---|---|
HS256 | HMAC με SHA-256· ένα κοινό μυστικό υπογράφει και επαληθεύει |
RS256 | Υπογραφή RSA PKCS#1 v1.5 με SHA-256· το ιδιωτικό κλειδί υπογράφει, το δημόσιο επαληθεύει |
PS256 | RSA-PSS με SHA-256 |
ES256 | ECDSA στην καμπύλη P-256 με SHA-256· σύντομες υπογραφές |
EdDSA | Υπογραφές Ed25519 ή Ed448 |
none | Token χωρίς υπογραφή· οι διακομιστές πρέπει να το απορρίπτουν |
Από τι αποτελείται ένα JSON Web Token
Το JWT ορίζεται στο RFC 7519 (Μάιος 2015), το οποίο προτείνει να προφέρεται όπως η αγγλική λέξη «jot». Η συνηθισμένη υπογεγραμμένη μορφή αποτελείται από τρία αλφαριθμητικά Base64url ενωμένα με τελείες: header.payload.signature. Η κεφαλίδα (header) ορίζει στο alg τον αλγόριθμο υπογραφής, όπως HS256 ή RS256, και συχνά στο kid το αναγνωριστικό του κλειδιού. Το ωφέλιμο φορτίο (payload) περιέχει claims, δηλαδή πεδία JSON όπως sub (ο χρήστης), iss (ο εκδότης), aud (το προοριζόμενο κοινό) και exp, nbf και iat, που είναι χρόνοι σε δευτερόλεπτα από την 1η Ιανουαρίου 1970 UTC. Ο αποκωδικοποιητής μετατρέπει αυτούς τους τρεις χρόνους στην τοπική σας ώρα και σε ISO 8601 και σας λέει αν το token έχει λήξει, αν δεν ισχύει ακόμη ή αν βρίσκεται εντός του χρονικού του παραθύρου.
Το Base64url είναι κωδικοποίηση, όχι κρυπτογράφηση, επομένως όποιος έχει ένα token μπορεί να διαβάσει το ωφέλιμο φορτίο του ακριβώς όπως κάνει αυτή η σελίδα. Μην τοποθετείτε ποτέ κωδικούς πρόσβασης, αριθμούς καρτών ή άλλα μυστικά στα claims. Ένα token με πέντε μέρη χωρισμένα με τελείες είναι JWE, δηλαδή κρυπτογραφημένο token· το περιεχόμενό του δεν διαβάζεται χωρίς το κλειδί και ο αποκωδικοποιητής το αναφέρει. Το αρχικό «Bearer » που αντιγράφεται από μια κεφαλίδα Authorization αφαιρείται αυτόματα.
Γιατί η υπογραφή δεν επαληθεύεται εδώ
Η υπογραφή αποδεικνύει ότι η κεφαλίδα και το ωφέλιμο φορτίο δημιουργήθηκαν από κάποιον που κατέχει το κλειδί και δεν έχουν αλλοιωθεί από τότε. Ο έλεγχός της απαιτεί αυτό το κλειδί: το κοινό μυστικό για αλγορίθμους HMAC όπως το HS256 ή το δημόσιο κλειδί του εκδότη για RS256, ES256 ή EdDSA. Η επικόλληση ενός μυστικού υπογραφής παραγωγής σε οποιαδήποτε ιστοσελίδα είναι κακή ιδέα, και ένας αποκωδικοποιητής που θα εγγυόταν για ένα token χωρίς κλειδί θα έδινε ψευδή ασφάλεια. Γι' αυτό το εργαλείο εμφανίζει την υπογραφή αλλά δεν την επαληθεύει. Αντιμετωπίστε όσα βλέπετε ως ισχυρισμό του token και όχι ως γεγονός.
Η επαλήθευση ανήκει στον διακομιστή σας, με μια συντηρούμενη βιβλιοθήκη και καθορισμένο τον αναμενόμενο αλγόριθμο. Δύο ιστορικά λάθη εξηγούν το γιατί: η αποδοχή του alg «none», που επιτρέπει σε οποιονδήποτε να πλαστογραφήσει ένα ανυπόγραφο token, και η σύγχυση αλγορίθμου, όπου ένας διακομιστής που περιμένει RS256 εξαπατάται ώστε να ελέγξει μια υπογραφή HS256 χρησιμοποιώντας το δημόσιο κλειδί ως μυστικό HMAC. Ο αποκωδικοποιητής προορίζεται για αποσφαλμάτωση: για να δείτε ποια claims εκδίδει ένας πάροχος, να εντοπίσετε λάθος audience ή να διαπιστώσετε ότι μια συνεδρία απέτυχε επειδή το exp πέρασε πριν από ένα λεπτό. Για να διαβάσετε τα τμήματα Base64url ωμά, χρησιμοποιήστε τον αποκωδικοποιητή Base64.
Συχνές ερωτήσεις
- Είναι ασφαλές να επικολλήσω ένα πραγματικό access token σε αποκωδικοποιητή JWT;
- Σε αυτή τη σελίδα το token δεν φεύγει ποτέ από το πρόγραμμα περιήγησής σας. Παρ' όλα αυτά, ένα έγκυρο token λειτουργεί ως κωδικός πρόσβασης μέχρι να λήξει, οπότε προτιμήστε ληγμένα ή δοκιμαστικά token και κρατήστε τα ενεργά εκτός στιγμιοτύπων οθόνης και συνομιλιών.
- Γιατί το token μου εμφανίζεται ως ληγμένο, ενώ μόλις εκδόθηκε;
- Ελέγξτε πρώτα το ρολόι της συσκευής σας. Ορισμένοι εκδότες δίνουν στα access token διάρκεια ζωής μόλις λίγων λεπτών και ένα token που αντιγράφηκε από ένα αρχείο καταγραφής μπορεί να είναι παλαιότερο απ' ό,τι φαίνεται. Ένα exp γραμμένο σε χιλιοστά του δευτερολέπτου αντί για δευτερόλεπτα κάνει το αντίθετο και καταλήγει χιλιάδες χρόνια στο μέλλον.
- Μπορεί κάποιος να αλλάξει το payload του JWT μου;
- Μπορούν να το επεξεργαστούν και να το κωδικοποιήσουν ξανά, αλλά η υπογραφή δεν θα ταιριάζει πια. Ένας διακομιστής που επαληθεύει τις υπογραφές με το σωστό κλειδί και αλγόριθμο απορρίπτει το τροποποιημένο token.
- Ποια είναι η διαφορά μεταξύ JWS και JWE;
- Ένα JWS (RFC 7515) είναι υπογεγραμμένο, έχει τρία μέρη και μπορεί να το διαβάσει οποιοσδήποτε. Ένα JWE (RFC 7516) είναι κρυπτογραφημένο, έχει πέντε μέρη και μόνο όποιος κατέχει το κλειδί μπορεί να διαβάσει το ωφέλιμο φορτίο.
- Η αποσύνδεση ακυρώνει ένα JWT;
- Όχι από μόνο του. Ένα υπογεγραμμένο JWT παραμένει έγκυρο μέχρι το exp, εκτός αν ο διακομιστής τηρεί λίστα αποκλεισμού ή ελέγχει εγγραφή συνεδρίας· γι' αυτό τα access token έχουν συνήθως σύντομη διάρκεια ζωής.