JWT Debugger ช่วยถอดรหัสและตรวจสอบ JSON Web Token — โดยการพาร์ส Header, Payload และ Signature แสดงรายการ Claim ต่างๆ และระบุสถานะการหมดอายุ เหมาะสำหรับการดีบั๊กปัญหาการยืนยันตัวตน, ตรวจสอบ OAuth/OIDC Token และยืนยันเนื้อหาใน JWT โดยไม่ต้องใช้ตัวถอดรหัสแยกต่างหากหรือต้องเข้าเว็บ jwt.io
JWT (JSON Web Token) เป็นรูปแบบหลักที่ใช้กับโทเค็นยืนยันตัวตนใน API สมัยใหม่ — OAuth, OIDC, session token และระบบยืนยันตัวตนแบบกำหนดเอง แต่ JWT ดูเหมือนอักขระไร้ความหมาย: สตริงที่เข้ารหัสแบบ Base64URL สามส่วนคั่นด้วยจุด JWT Debugger จะแยกสตริงนั้นออกเป็นสามส่วน — header, payload และ signature — ถอดรหัสแต่ละส่วน แล้วแสดงเนื้อหา JSON พร้อม syntax highlighting
payload จะถูกแยกวิเคราะห์เพื่อหา claim ที่รู้จัก ได้แก่ iss (issuer), sub (subject), exp (expiry), iat (issued at), nbf (not before), aud (audience), jti (token ID) ค่า expiry จะถูกแปลงจาก Unix timestamp เป็นรูปแบบที่มนุษย์อ่านได้ และติดป้ายกำกับว่าใช้ได้ หมดอายุแล้ว หรือยังไม่ถึงเวลาใช้งาน เครื่องมือนี้ไม่ตรวจสอบ signature — เพราะต้องใช้ secret key ซึ่งอยู่นอกขอบเขตของเครื่องมือฝั่งไคลเอนต์ — แต่มันแสดงให้คุณเห็นเนื้อหาในโทเค็นอย่างชัดเจน ทำให้คุณดีบักปัญหาการยืนยันตัวตนได้อย่างรวดเร็ว
ฟิลด์อัลกอริทึมใน header (alg) จะถูกระบุไว้อย่างชัดเจน รวมถึงคำเตือนหากโทเค็นใช้อัลกอริทึม "none" — ช่องโหว่ JWT ที่รู้จักกันดี ซึ่งการตรวจสอบ signature อาจถูกข้ามไปได้ทั้งหมดหากเซิร์ฟเวอร์ไม่ปฏิเสธโทเค็นที่ไม่มีลายเซ็น ทั้งอัลกอริทึมแบบ HMAC (HS256, HS384, HS512) และแบบ RSA/ECDSA (RS256, ES256) จะถูกระบุและติดป้ายกำกับไว้ ทำให้คุณรู้ได้ทันทีว่า API นั้นใช้ระบบเซ็นแบบ shared-secret หรือ public-key claim แบบกำหนดเองที่ไม่ใช่มาตรฐานก็จะถูกแสดงเต็มรูปแบบเช่นกัน เนื่องจากโทเค็นที่ใช้งานจริงส่วนใหญ่มักมีข้อมูลเฉพาะแอปพลิเคชัน เช่น roles หรือ tenant ID
แยก JWT ตามจุดและถอดรหัสแต่ละส่วนแบบ Base64URL: Header, Payload และ Signature โดยแสดงผลแยกกันพร้อมไฮไลต์สีตามไวยากรณ์
แสดงอัลกอริทึม (HS256, RS256, ES256) และประเภทของ Token เพื่อตรวจสอบว่าบริการนั้นใช้รูปแบบการลงนามแบบใด
พาร์ส JSON Payload และแสดงผลด้วยสีที่แยกแยะระหว่าง Key, String, Number และ Boolean ช่วยให้เห็น Claim ทั้งหมดได้ในพริบตา
ตรวจสอบ Timestamp ของ exp (หมดอายุ), iat (ออกให้เมื่อ) และ nbf (ไม่ก่อนเวลา) พร้อมระบุสถานะว่า Token ยังใช้ได้, หมดอายุแล้ว หรือยังไม่เปิดใช้งาน ในรูปแบบเวลาที่อ่านง่าย
รู้จัก Claim ที่ลงทะเบียนไว้ (iss, sub, aud, exp, iat, nbf, jti) และมีคำอธิบายสั้นๆ เกี่ยวกับความหมายของแต่ละตัว
แสดง Token ดิบโดยแยกสีในแต่ละส่วน เพื่อให้คุณแยกแยะ Header, Payload และ Signature ได้ด้วยตาเปล่า
เมื่อ API คืนค่า 401 Unauthorized ให้วาง Token เพื่อเช็คว่าหมดอายุ, รูปแบบผิดเพี้ยน หรือออกโดยผู้รับรองที่ผิดรายหรือไม่
ถอดรหัส Access Token และ ID Token ที่ได้จาก OAuth/OIDC flow เพื่อดู Scope ที่ได้รับ, ข้อมูลผู้ใช้ และเวลาหมดอายุ
ยืนยันว่า Claim ที่จำเป็น (Role, Permission, Tenant ID) มีอยู่ใน Token ก่อนจะส่งไปยัง Backend
เมื่อ Token ถูกสร้างโดย Backend ให้ถอดรหัสเพื่อยืนยันว่าข้อมูลใน Payload ตรงกับสิ่งที่บริการนั้นตั้งใจจะออกให้จริง
ในระหว่างการตรวจสอบความปลอดภัย ให้ถอดรหัส Token ที่เก็บใน localStorage หรือ Cookie เพื่อประเมินว่ามีข้อมูลสำคัญใดถูกเปิดเผยในฝั่ง Client บ้าง
คลิกไอคอน JWT ใน DevSuite Pro dock แผงควบคุมจะเปิดขึ้นพร้อมช่องสำหรับใส่ Token และช่องแสดงผลที่ถอดรหัสแล้วสามส่วน
วาง JWT จาก API Response, Authorization Header, Cookie หรือ localStorage โดยจะใส่หรือไม่ใส่คำนำหน้า "Bearer " ก็ได้ เครื่องมือรองรับทั้งสองแบบ
ช่อง Header จะแสดงอัลกอริทึมและประเภท ยืนยันว่าตรงกับรูปแบบที่ Backend ของคุณคาดหวัง (มักจะเป็น HS256 หรือ RS256)
ช่อง Payload จะแสดง Claim ทั้งหมดพร้อมไฮไลต์สี Claim มาตรฐาน (iss, sub, exp) จะถูกระบุความหมายไว้
ป้ายสถานะจะแสดง Valid, Expired หรือ Not Yet Valid หากหมดอายุแล้ว นั่นอาจเป็นสาเหตุที่การยืนยันตัวตนของคุณล้มเหลว
ติดตั้ง DevSuite Pro ฟรีและปลดล็อกเครื่องมือสำหรับนักพัฒนามากกว่า 64 รายการสำหรับเบราว์เซอร์ของคุณ