วิธีถอดรหัส JWT Token และตรวจสอบ Claims อย่างปลอดภัย
ตอบด่วน
วิธีถอด JWT: วาง token ใน JWT Decoder header และ payload จะปรากฏเป็น JSON ทันที เครื่องมือถอดส่วน Base64URL ในเครื่อง —token ไม่ออกจากเบราว์เซอร์ จำไว้: การถอดแสดงเนื้อหาเท่านั้น ไม่พิสูจน์ signature
การแนะนำ
JWT (JSON Web Token) เป็นรูปแบบ token กระชับ URL-safe สำหรับ authentication และการแลกเปลี่ยนข้อมูล JWT มีสามส่วนคั่นด้วยจุด: header.payload.signature header ระบุ algorithm, payload มี claims (user ID, roles, expiration), signature พิสูจน์ว่า token ไม่ถูกดัดแปลง การถอดรหัสทำให้ตรวจสอบเนื้อหาเพื่อ debug —แต่ไม่พิสูจน์ความถูกต้อง
ทีละขั้นตอน
-
เปิดเครื่องมือถอดรหัส JWT
ไปที่หน้าเครื่องมือถอดรหัส JWT เครื่องมือยอมรับสตริง JWT ใดๆ (ส่วนที่เข้ารหัส Base64URL สามส่วนที่คั่นด้วยจุด)
-
วางโทเค็น JWT ของคุณ
วาง JWT ลงในช่องป้อนข้อมูล JWT โดยทั่วไปจะมีลักษณะดังนี้: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSJ9.signature เครื่องมือจะตรวจจับทั้งสามส่วนโดยอัตโนมัติ
-
ตรวจสอบส่วนหัวที่ถอดรหัสแล้ว
เครื่องมือ Base64URL ถอดรหัสส่วนแรกและแสดงเป็น JSON โดยทั่วไปส่วนหัวจะประกอบด้วย 'alg' (อัลกอริทึม เช่น HS256) และ 'typ' (ประเภท โดยทั่วไปคือ 'JWT')
-
ตรวจสอบเพย์โหลดที่ถอดรหัส (การอ้างสิทธิ์)
เครื่องมือจะถอดรหัสส่วนที่สองและแสดงการอ้างสิทธิ์ในรูปแบบ JSON คำกล่าวอ้างทั่วไป ได้แก่ 'sub' (หัวเรื่อง/ID ผู้ใช้), 'iat' (ออกเมื่อ), 'exp' (หมดอายุ) และ 'role' (บทบาทของผู้ใช้)
-
ตรวจสอบลายเซ็น (ส่วนที่สาม)
เครื่องมือจะแสดงส่วนลายเซ็น หมายเหตุ: การถอดรหัสไม่ได้ตรวจสอบลายเซ็น ในการตรวจสอบ คุณต้องมีคีย์การลงนามและไลบรารีการยืนยัน อย่าเชื่อถือการอ้างสิทธิ์ของ JWT โดยไม่ตรวจสอบลายเซ็นฝั่งเซิร์ฟเวอร์
ตัวอย่าง
ถอดรหัส JWT แบบง่ายๆ
ป้อนข้อมูล: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTY5MzUyNjQwMH0.signature
เอาท์พุต: Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"user1","name":"Alice","iat":1693526400}
JWT พร้อมเคลมวันหมดอายุ
ป้อนข้อมูล: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY5MzYxMjgwMH0.sig
เอาท์พุต: Header: {"alg":"HS256"}
Payload: {"sub":"admin","exp":1693612800}
ปัญหาทั่วไป
- การถอดรหัสที่สับสนด้วยการยืนยัน — การถอดรหัส JWT จะอ่านเฉพาะเนื้อหาเท่านั้น มันไม่ได้พิสูจน์ว่าโทเค็นนั้นเป็นของแท้ ตรวจสอบฝั่งเซิร์ฟเวอร์ลายเซ็นด้วยรหัสลงนามเสมอ
- การเชื่อถือโทเค็นที่หมดอายุ —ตรวจสอบการอ้างสิทธิ์ 'exp' และปฏิเสธโทเค็นที่หมดอายุ ค่า 'exp' คือการประทับเวลา Unix ในหน่วยวินาที
- Base64 กับ Base64URL —JWT ใช้การเข้ารหัส Base64URL (ไม่มีการเติม - และ _ แทน + และ /) ตัวถอดรหัส Base64 มาตรฐานจะล้มเหลวในส่วน JWT
- ข้อมูลที่ละเอียดอ่อนในเพย์โหลด —JWT เพย์โหลดสามารถอ่านได้โดยใครก็ตามที่มีโทเค็น อย่าเก็บรหัสผ่าน หมายเลขบัตรเครดิต หรือความลับอื่นๆ ไว้ในเพย์โหลด
เคล็ดลับ
- ตรวจสอบฝั่งเซิร์ฟเวอร์ลายเซ็น JWT เสมอก่อนที่จะเชื่อถือการอ้างสิทธิ์ใดๆ การถอดรหัสเพียงอย่างเดียวไม่ใช่การตรวจสอบสิทธิ์
- ตรวจสอบการอ้างสิทธิ์ 'exp' (หมดอายุ) และ 'nbf' (ไม่ใช่ก่อนหน้า) เพื่อให้แน่ใจว่าโทเค็นนั้นถูกต้องสำหรับเวลาปัจจุบัน
- ใช้โทเค็นที่มีอายุสั้น (15-60 นาที) พร้อมโทเค็นการรีเฟรชสำหรับเซสชันที่ยาวนาน — ลดความเสียหายให้เหลือน้อยที่สุดหากโทเค็นรั่วไหล
- ใช้ตัวถอดรหัส JWT ของเราเพื่อการดีบักในเครื่องที่ปลอดภัย โทเค็นของคุณจะไม่มีวันออกจากเบราว์เซอร์