מפענח JWT

הדביקו JSON Web Token כדי לקרוא את ה-header וה-payload שלו, לראות מתי הוא פג ולהבין כל claim. הטוקן שלכם לעולם לא יוצא מהדפדפן.

רץ בדפדפן שלכםבלי הרשמהשום דבר לא מועלה

פענוח הוא לא אימות. כל אחד יכול לקרוא את ה-header וה-payload של JWT, כי הם רק מקודדים ב-base64url. הכלי הזה מציג מה הטוקן טוען; הוא לא מוכיח שהטוקן אמיתי. תמיד אמתו את החתימה בשרת שלכם.

Header

Payload


      

אימות חתימה (אופציונלי, HS256/HS384/HS512)

בודק חתימת HMAC עם סוד שאתם מזינים, באמצעות Web Crypto API של הדפדפן. הסוד לעולם לא יוצא מהדף. טוקני RSA/ECDSA דורשים את המפתח הציבורי של המנפיק ואינם מאומתים כאן.

איך משתמשים בכלי מפענח JWT

  1. הדביקו את הטוקן בתיבה טוקן מקודד. קידומת Bearer מכותרת Authorization מתעלמים ממנה.
  2. ה-header וה-payload מפוענחים מיד ומוצגים כ-JSON מעוצב.
  3. קראו את טבלת הסבר ה-claims: ‏exp, iat ו-nbf מומרים לתאריכים עם זמנים כמו „יפוג בעוד” / „פג לפני”.
  4. בדקו בשורת הסטטוס בעיות תוקף, ובאזהרות הגדרות מסוכנות כמו alg: none.
  5. אם תרצו, הזינו את הסוד המשותף כדי לאמת מקומית חתימת HS256,‏ HS384 או HS512.

מה יש בתוך JWT?

JSON Web Token‏ (RFC 7519) הוא שלוש מחרוזות base64url המחוברות בנקודות: header.payload.signature. ה-header מציין את אלגוריתם החתימה (alg) ואת סוג הטוקן. ה-payload מכיל את ה-claims, כמו מי המשתמש ומתי הטוקן פג. ה-signature מחושבת על שני החלקים הראשונים עם סוד או מפתח פרטי.

פענוח הוא לא אימות

ה-header וה-payload רק מקודדים, לא מוצפנים, כך שכל מי שמחזיק בטוקן יכול לקרוא אותם. לכן לעולם אל תשימו סיסמאות או סודות ב-payload של JWT. פענוח מגלה מה הטוקן טוען. אימות החתימה, בדרך כלל בשרת ה-API שלכם עם ספרייה כמו jose או PyJWT, מוכיח מי הנפיק אותו ושהוא לא שונה. השרת חייב גם לבדוק את exp, nbf, iss ו-aud, ולדחות אלגוריתמים לא צפויים.

דף עזר ל-claims רשומים

Claimמשמעות
issמנפיק: מי יצר וחתם על הטוקן
subנושא: בדרך כלל מזהה המשתמש
audקהל יעד: לאיזה API הטוקן מיועד
expזמן תפוגה, בשניות מאז ה-Unix epoch
nbfלא תקף לפני הזמן הזה
iatזמן ההנפקה
jtiמזהה טוקן ייחודי, שימושי לרשימות ביטול

דיבאג של שגיאות „token expired”

אם API דוחה טוקן שנראה טרי, השוו את exp ו-nbf לשעון של השרת. הפרשי שעון קטנים בין מכונות נפוצים, ולכן רוב הספריות מאפשרות מרווח של 30-60 שניות. בדקו גם ש-exp בשניות: ערך במילישניות הוא באג נפוץ, והוא דוחה את התפוגה באלפי שנים.

שאלות נפוצות

האם בטוח להדביק כאן JWT מפרודקשן?
הפענוח מתבצע כולו בדפדפן שלכם עם JavaScript. הטוקן לא מועלה, לא נרשם ביומן ולא נשמר. כמו עם כל אישור גישה, עדיין התייחסו לטוקנים פעילים בזהירות, והעדיפו טוקנים שפג תוקפם או טוקני בדיקה כשאתם משתפים צילומי מסך.
האם הכלי מאמת את חתימת ה-JWT?
הפענוח לבדו לא. אפשר לאמת טוקני HS256,‏ HS384 ו-HS512 על ידי הזנת הסוד המשותף; ה-HMAC מחושב מקומית עם Web Crypto API. טוקני RS256 ו-ES256 יש לאמת בשרת שלכם עם המפתח הציבורי של המנפיק.
למה הטוקן שלי מוצג כפג תוקף?
ה-claim‏ exp נמצא בעבר ביחס לשעון של המחשב שלכם. בקשו טוקן חדש, או חדשו אותו עם ה-refresh token. אם הזמנים נראים שגויים, בדקו הפרשי שעון או ערך exp שנכתב במילישניות.
מה ההבדל בין JWT,‏ JWS ו-JWE?
JWT הוא פורמט ה-claims. ‏JWS הוא JWT חתום בן שלושה חלקים, וזה מה שהכלי הזה מפענח. ‏JWE הוא JWT מוצפן בן חמישה חלקים; את ה-payload שלו אי אפשר לקרוא בלי מפתח הפענוח.
למה alg „none” מסוכן?
כל אחד יכול לזייף טוקן לא חתום. שרתים חייבים לדחות alg: none ולקבל רק את האלגוריתם הספציפי שהם מצפים לו.

כלים קשורים