Γεννήτρια και επαλήθευση JWT
Δημιουργήστε και επαληθεύστε JSON Web Tokens με HS256, RS256, PS256, ES256 ή EdDSA. Επεξεργαστείτε claims, ορίστε exp και iat, τοπικά στον browser.
Τα κλειδιά και τα tokens είναι μυστικά. Η υπογραφή και η επαλήθευση γίνονται τοπικά με το Web Crypto API του προγράμματος περιήγησής σας: δεν μεταφορτώνεται τίποτα.
Δημιουργία υπογεγραμμένου JWT
Αυτό το πρόγραμμα περιήγησης δεν υποστηρίζει Ed25519 στο Web Crypto, επομένως το EdDSA δεν είναι διαθέσιμο.
Τα δοκιμαστικά κλειδιά δημιουργούνται στο πρόγραμμα περιήγησής σας και συμπληρώνονται παρακάτω. Κρατήστε το ιδιωτικό κλειδί ή το μυστικό για τον εαυτό σας· μοιραστείτε μόνο το δημόσιο κλειδί.
Επαλήθευση JWT
Πώς να δημιουργήσετε ένα υπογεγραμμένο JWT
- Επιλέξτε τον Αλγόριθμο: HS256/384/512 (κοινό μυστικό), RS256/384/512 ή PS256/384/512 (RSA), ES256/384/512 (ECDSA σε P-256, P-384 ή P-521) ή EdDSA (Ed25519, όταν το υποστηρίζει το πρόγραμμα περιήγησής σας).
- Επεξεργαστείτε την Κεφαλίδα (JSON) και το Φορτίο (ισχυρισμοί JSON). Το πεδίο
algακολουθεί πάντα τον επιλεγμένο αλγόριθμο και τοtypέχει ως προεπιλογήJWT. - Χρησιμοποιήστε τα κουμπιά χρονικών ισχυρισμών για να προσθέσετε ημερομηνίες: iat = τώρα, nbf = τώρα, ή επιλέξτε μια καθυστέρηση όπως «σε 1 ώρα» και πατήστε Ορισμός exp. Οι τιμές είναι NumericDate: δευτερόλεπτα από την 1η Ιανουαρίου 1970 UTC.
- Εισαγάγετε το Μυστικό (αλγόριθμοι HS, ως κείμενο ή Base64/Base64url στη Μορφή μυστικού) ή το Ιδιωτικό κλειδί (PEM ή JWK). Δεν έχετε ακόμη κλειδί; Πατήστε Δημιουργία δοκιμαστικού κλειδιού.
- Πατήστε Υπογραφή token και μετά Αντιγραφή του αποτελέσματος ή Επαλήθευση αυτού του token για άμεσο έλεγχο.
Πώς να επαληθεύσετε ένα JWT
- Επικολλήστε το token στο πεδίο Token προς επαλήθευση.
- Επιλέξτε τον Αναμενόμενο αλγόριθμο. Αν τον αφήσετε στο «Από την κεφαλίδα του token», γίνεται δεκτό ό,τι λέει η κεφαλίδα, εκτός από το
none· αν επιλέξετε συγκεκριμένο αλγόριθμο, το εργαλείο απορρίπτει κάθε token που έχει υπογραφεί διαφορετικά, όπως πρέπει να κάνει ένας πραγματικός διακομιστής. - Εισαγάγετε το μυστικό ή το Δημόσιο κλειδί (PEM ή JWK): ένα μπλοκ PEM
PUBLIC KEY,RSA PUBLIC KEYήCERTIFICATE, ένα JWK ή ένα JWK Set (χρησιμοποιείται το κλειδί του οποίου τοkidταιριάζει με την κεφαλίδα). - Προαιρετικά ορίστε Ανοχή ρολογιού (δευτερόλεπτα) για μικρές διαφορές ώρας και πατήστε Επαλήθευση token.
Το αποτέλεσμα δείχνει αν η υπογραφή είναι έγκυρη και στη συνέχεια ελέγχει τα exp (λήξη) και nbf (ισχύει από) με την τρέχουσα ώρα του υπολογιστή σας. Ένα token με σωστή υπογραφή αλλά λήξη στο παρελθόν αναφέρεται ως ληγμένο, όχι ως έγκυρο.
Κλειδιά και μορφές
Για την υπογραφή, το εργαλείο δέχεται μπλοκ PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY και SEC1 EC PRIVATE KEY (που μετατρέπονται εσωτερικά σε PKCS#8) καθώς και ιδιωτικά JWK. Τα κλειδιά με κωδικό πρόσβασης πρέπει πρώτα να εξαχθούν χωρίς κωδικό. Η Δημιουργία δοκιμαστικού κλειδιού φτιάχνει ένα τυχαίο μυστικό με μέγεθος ίσο με της συνάρτησης κατακερματισμού για τους αλγορίθμους HS, ζεύγος κλειδιών RSA 2048 bit για RS και PS, την αντίστοιχη καμπύλη για ES ή ζεύγος Ed25519. Τα κλειδιά δίνονται ως PEM και JWK και συμπληρώνονται και στις δύο πλευρές, ώστε ο κύκλος υπογραφής και επαλήθευσης να λειτουργεί αμέσως.
Οι υπογραφές ακολουθούν τα RFC 7515 και RFC 7518: το RSA-PSS χρησιμοποιεί salt ίσου μήκους με τη συνάρτηση κατακερματισμού και οι υπογραφές ECDSA είναι η ωμή συνένωση r||s. Η υλοποίηση αναπαράγει το παράδειγμα HS256 του RFC 7515, Παράρτημα A.1.
Σημειώσεις ασφαλείας
- Όλα εκτελούνται στο πρόγραμμα περιήγησής σας με το Web Crypto API. Ούτε τα tokens ούτε τα κλειδιά στέλνονται πουθενά, αλλά και πάλι προτιμήστε δοκιμαστικά κλειδιά αντί για μυστικά παραγωγής.
- Το
alg: noneδεν υπογράφεται ποτέ και δεν γίνεται ποτέ δεκτό. - Τα μυστικά HMAC πρέπει να είναι τουλάχιστον τόσο μεγάλα όσο η έξοδος του κατακερματισμού (32 byte για το HS256). Ένα μικρότερο μυστικό προκαλεί προειδοποίηση.
- Η υπογραφή αποδεικνύει ακεραιότητα και προέλευση, όχι ότι οι ισχυρισμοί είναι κατάλληλοι: οι διακομιστές πρέπει να ελέγχουν και τα
iss,audκαι τα scopes.
Συχνές ερωτήσεις
Ποια είναι η διαφορά μεταξύ HS256 και RS256;
Το HS256 χρησιμοποιεί ένα κοινό μυστικό και για την υπογραφή και για την επαλήθευση, άρα κάθε επαληθευτής θα μπορούσε να πλαστογραφήσει tokens. Το RS256 (όπως και τα PS256, ES256, EdDSA) υπογράφει με ιδιωτικό κλειδί και επαληθεύει με δημόσιο κλειδί που μπορεί να δημοσιευτεί με ασφάλεια.
Γιατί εμφανίζεται σφάλμα ενώ η υπογραφή είναι έγκυρη;
Επειδή το token βρίσκεται εκτός της περιόδου ισχύος του: το exp είναι στο παρελθόν ή το nbf στο μέλλον. Ο έλεγχος υπογραφής και ο έλεγχος χρόνου αναφέρονται ξεχωριστά.
Γιατί απορρίπτεται το alg «none»;
Ένα μη υπογεγραμμένο token μπορεί να το δημιουργήσει οποιοσδήποτε. Η αποδοχή του ήταν κλασική ευπάθεια βιβλιοθηκών JWT, γι’ αυτό το εργαλείο το απορρίπτει και στην υπογραφή και στην επαλήθευση.
Μπορώ να χρησιμοποιήσω δικό μου κλειδί RSA ή EC;
Ναι. Επικολλήστε το ιδιωτικό κλειδί ως PEM ή JWK για υπογραφή και το δημόσιο κλειδί για επαλήθευση. Το εργαλείο ελέγχει ότι ο τύπος κλειδιού και η καμπύλη ταιριάζουν με τον επιλεγμένο αλγόριθμο.
Γιατί είναι απενεργοποιημένο το EdDSA;
Το πρόγραμμα περιήγησής σας δεν υποστηρίζει ακόμη Ed25519 στο Web Crypto. Οι πρόσφατες εκδόσεις των Chrome, Edge, Firefox και Safari το υποστηρίζουν.
Σχετικά εργαλεία
- Αποκωδικοποιητής JWT Αποκωδικοποιήστε κεφαλίδα και φορτίο JWT, δείτε τα exp, iat και nbf ως ημερομηνίες και επαληθεύστε υπογραφές HS256, RS256, ES256 τοπικά στον browser.
- Δημιουργός HMAC Υπολογίστε HMAC-SHA1, SHA-256, SHA-384 ή SHA-512 με κλειδί κειμένου, hex ή Base64 και ελέγξτε υπογραφή webhook στο πρόγραμμα περιήγησής σας.
- Μετατροπέας Unix timestamp Μετατρέψτε Unix timestamp σε δευτερόλεπτα ή χιλιοστά σε ευανάγνωστες ημερομηνίες (τοπική ώρα, UTC, ISO 8601) και μετατρέψτε κάθε ημερομηνία ξανά σε epoch.
- Μορφοποίηση και επικύρωση JSON Δωρεάν μορφοποίηση και επικύρωση JSON που κάνει beautify, minify και έλεγχο του JSON στο πρόγραμμα περιήγησής σας, με συντακτικά σφάλματα ανά γραμμή και στήλη.