ข้ามไปยังเนื้อหา

ถอดรหัสและตรวจสอบ JWT

ถอดรหัสส่วนหัวและ claims ของ JSON Web Token ตรวจสอบวันหมดอายุ และยืนยันลายเซ็น โดยโทเค็นไม่ออกจากเบราว์เซอร์ของคุณ

ถอดรหัสและตรวจสอบในแท็บนี้ โทเคนและคีย์จะไม่ถูกส่งไปที่ใด

เฮดเดอร์ 클레ม และเวลาหมดอายุจะแสดงที่นี่เมื่อวางโทเคน
ทำงานในเบราว์เซอร์ของคุณ · ไม่ต้องอัปโหลดวิธีการทำงาน

วิธีใช้งาน ตัวถอดรหัส JWT

  1. 1

    วางโทเค็น

    วาง JWT จากเฮดเดอร์ Authorization, คุกกี้ หรือที่เก็บข้อมูลของแอป โดย “Bearer ” ที่อยู่ข้างหน้าจะถูกข้ามไป

  2. 2

    อ่าน claims

    ดูตารางเฮดเดอร์และเพย์โหลด เวลา exp, iat และ nbf ที่อ่านง่าย รวมถึงแบนเนอร์สถานะการหมดอายุ

  3. 3

    เพิ่มคีย์

    ใส่ซีเคร็ต HMAC หรือวางคีย์สาธารณะในรูปแบบ PEM, ใบรับรอง, JWK หรือ JWKS

  4. 4

    ตรวจสอบลายเซ็น

    กด ตรวจสอบลายเซ็น เพื่อยืนยันว่าโทเค็นถูกลงนามด้วยคีย์นั้นและไม่ถูกแก้ไข

ข้อจำกัดและ Pro

ใช้ฟรี ไม่ต้องสมัครสมาชิก และไม่จำกัดจำนวนโทเค็น การตรวจสอบรองรับ 13 อัลกอริทึม (HS, RS, PS และ ES ที่ 256, 384 และ 512 บิต รวมถึง EdDSA)

Pro ช่วยลบโฆษณา ส่วนการถอดรหัสและการตรวจสอบทำงานเหมือนกันในทุกแผน ดู Pro

เกี่ยวกับ ตัวถอดรหัส JWT

JSON Web Token (JWT) คือสตริง Base64URL สามส่วนที่คั่นด้วยจุด ได้แก่ เฮดเดอร์ที่ระบุอัลกอริทึมลงนาม เพย์โหลดที่เก็บ claims และลายเซ็น วางโทเค็นได้ทั้งแบบมีหรือไม่มีคำนำหน้า “Bearer ” แล้วตัวถอดรหัสจะแสดงเฮดเดอร์และเพย์โหลดเป็นตารางที่อ่านง่ายหรือ JSON ที่จัดรูปแบบแล้ว พร้อมแยกสีทั้งสามส่วนของโทเค็น และอธิบายฟิลด์มาตรฐานอย่าง iss, sub, aud, kid และ scope

ค่าเวลาจะถูกแปลงให้โดยอัตโนมัติ ทั้ง exp, iat, nbf และ auth_time จะแสดงเป็นวันที่ตามเขตเวลาของคุณ เป็นเวลา UTC และเป็นเวลาแบบสัมพัทธ์ (เช่น “จะหมดอายุในอีก 2 ชั่วโมง” หรือ “หมดอายุเมื่อ 3 วันก่อน”) แบนเนอร์จะบอกให้เห็นทันทีว่าโทเค็นหมดอายุแล้ว ยังไม่มีผล หรือไม่มีวันหมดอายุ และเตือนเมื่อ exp ดูเหมือนเป็นหน่วยมิลลิวินาทีแทนที่จะเป็นวินาที

การถอดรหัสไม่ได้พิสูจน์ว่าใครเป็นผู้ออกโทเค็น ตัวตรวจสอบจึงเช็กลายเซ็นด้วย WebCrypto ที่มีในเบราว์เซอร์ของคุณ อัลกอริทึม HS256, HS384 และ HS512 ต้องใช้ซีเคร็ตที่ใช้ร่วมกัน (ข้อความธรรมดาหรือ Base64) ส่วนอัลกอริทึม RS, PS และ ES ที่ 256, 384 และ 512 บิต รวมถึง EdDSA แบบ Ed25519 ต้องใช้คีย์สาธารณะ ซึ่งวางได้เป็น PEM public key, บล็อก RSA PUBLIC KEY, ใบรับรอง X.509, JWK เดี่ยว หรือ JWKS ทั้งชุด โดยระบบจะเลือกคีย์จาก kid ของโทเค็น

เครื่องมือนี้ถอดรหัสโทเค็น JWE (แบบห้าส่วน) ไม่ได้ และไม่ดึง URL ของ JWKS ให้ ให้เปิด jwks_uri ของผู้ออกโทเค็นด้วยตัวเองแล้ววาง JSON ที่ได้

ความเป็นส่วนตัว

โทเค็นเป็นข้อมูลรับรองที่ใช้แทนตัวตนได้ หน้านี้จึงจัดการอย่างระมัดระวัง การถอดรหัสและตรวจสอบลายเซ็นทำงานในเบราว์เซอร์ของคุณด้วย WebCrypto โทเค็น ซีเคร็ต และคีย์จะไม่ถูกส่งไปยังเซิร์ฟเวอร์ ไม่ถูกบันทึกล็อก และไม่ถูกจัดเก็บ เมื่อปิดหรือรีโหลดแท็บ ข้อมูลทั้งหมดจะถูกล้าง

คุณสมบัติ

เวลาที่อ่านง่าย

exp, iat และ nbf ตามเขตเวลาของคุณ เป็นเวลา UTC และแบบสัมพัทธ์ เช่น “ในอีก 2 ชั่วโมง” หรือ “3 วันก่อน”

ตรวจลายเซ็นจริง

ตรวจสอบ HMAC, RSA, RSA-PSS, ECDSA และ Ed25519 ด้วย WebCrypto กับคีย์หรือ JWKS ของคุณ

โทเค็นอยู่บนเครื่อง

ไม่มีการอัปโหลดใด ๆ จึงตรวจสอบโทเค็นจริงของระบบ production ได้อย่างปลอดภัย

ตัวถอดรหัส JWT: คำถามที่พบบ่อย

วางโทเค็นจริงของระบบ production ที่นี่ปลอดภัยหรือไม่?
โทเค็นถูกถอดรหัสและตรวจสอบด้วย JavaScript ที่ทำงานในแท็บของคุณ และไม่มีการส่งคำขอที่มีโทเค็นออกไป ซึ่งตรวจสอบได้จากแผงเครือข่ายของเบราว์เซอร์ อย่างไรก็ตาม โทเค็นที่ยังใช้ได้ทำงานเหมือนรหัสผ่านจนกว่าจะหมดอายุ จึงไม่ควรวางโทเค็นจริงในเว็บไซต์ที่ไม่น่าเชื่อถือ และควรใช้โทเค็นที่หมดอายุหรือโทเค็นทดสอบเมื่อต้องแชร์ภาพหน้าจอ
ทำไมโทเค็นที่ถอดรหัสแล้วจึงไม่ได้พิสูจน์อะไร?
ใครก็สร้างเฮดเดอร์และเพย์โหลดแล้วเข้ารหัสแบบ Base64URL ได้ การถอดรหัสเป็นเพียงการย้อนกลับขั้นตอนนั้น มีเพียงลายเซ็นเท่านั้นที่เชื่อมโทเค็นกับผู้ออก ให้ตรวจสอบด้วยคีย์สาธารณะของผู้ออกหรือซีเคร็ตที่ใช้ร่วมกันก่อนเชื่อ claim ใด ๆ และตรวจว่า alg ตรงกับที่เซิร์ฟเวอร์คาดไว้ เพราะการยอมรับ “none” หรืออัลกอริทึมที่ถูกสลับเป็นช่องโหว่ที่รู้จักกันดี
หาคีย์สาธารณะสำหรับตรวจโทเค็น RS256 หรือ ES256 ได้จากที่ไหน?
ผู้ให้บริการระบุตัวตนมักเผยแพร่คีย์เป็น JWK Set ให้ดูที่ /.well-known/openid-configuration ของผู้ออกโทเค็น เปิด jwks_uri ที่ระบุไว้ แล้ววาง JSON นั้นที่นี่ ระบบจะใช้คีย์ที่ kid ตรงกับเฮดเดอร์ของโทเค็น หรือจะวาง PEM public key หรือใบรับรอง X.509 ของผู้ออกโทเค็นก็ได้
exp, iat และ nbf หมายถึงอะไร?
เป็น claims แบบ NumericDate ที่นับเป็นวินาทีนับจาก 1 มกราคม 1970 UTC โดย exp คือเวลาที่โทเค็นหมดความถูกต้อง iat คือเวลาที่ออกโทเค็น และ nbf คือเวลาแรกสุดที่ยอมรับโทเค็นได้ โดยทั่วไปเซิร์ฟเวอร์จะยอมให้นาฬิกาคลาดเคลื่อนได้หนึ่งถึงสองนาที ตัวถอดรหัสจะแสดงแต่ละค่าเป็นวันที่ตามเวลาท้องถิ่น เวลา UTC และเวลาแบบสัมพัทธ์
ทำไมตรวจสอบไม่ผ่านทั้งที่ใช้ซีเคร็ต HMAC ถูกต้อง?
สาเหตุที่พบบ่อยคือมีช่องว่างติดมากับซีเคร็ต ซีเคร็ตถูกเข้ารหัสแบบ Base64 ตอนลงนามโทเค็น หรือโทเค็นถูกเข้ารหัสใหม่โดยเครื่องมือที่เปลี่ยนไบต์ของเฮดเดอร์หรือเพย์โหลด ลองเปิดตัวเลือก “ซีเคร็ตเข้ารหัสแบบ Base64” การเปลี่ยนแปลงใด ๆ ในสองส่วนแรก แม้เพียงลำดับคีย์ JSON ก็ทำให้ลายเซ็นใช้ไม่ได้
เครื่องมือสำหรับนักพัฒนา ทั้งหมด