ข้ามไปที่เนื้อหา

header.payload.signature

ตัวถอดรหัส JWT

JSON Web Token (JWT) คือส่วน Base64url 3 ส่วนที่คั่นด้วยจุด: header, payload และ signature วางโทเค็นเพื่ออ่าน claim และเวลา โทเค็นถูกถอดรหัสที่นี่ ไม่ได้ตรวจสอบลายเซ็น

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

Scanned by NortonTM Safe Web

ภาพรวมโดยสรุป

ราคา
ไม่มีค่าใช้จ่าย
บัญชี
ไม่ต้องมี
มาตรฐาน
RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
ลายเซ็น
ไม่ได้ตรวจสอบ — ถอดรหัสโทเค็นเท่านั้น
เวลา
exp, nbf และ iat แสดงเป็น UTC และเทียบกับนาฬิกาของคุณ
การอัปโหลด
ไม่มี — โทเค็นอยู่ในแท็บเบราว์เซอร์ของคุณ

โทเค็นตัวอย่างและอัลกอริทึมที่พบบ่อย

โทเค็นตัวอย่างในหน้านี้ลงลายเซ็นด้วย HMAC-SHA-256 ด้วยกุญแจที่ใช้ทิ้ง หน้านี้ถอดรหัสโทเค็นนั้นเพื่อสร้างตารางแรก

Claim ของโทเค็นตัวอย่าง
Claimค่าเวลา (UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
อัลกอริทึมลงลายเซ็นที่พบบ่อย (alg)
algกลุ่มแฮชขนาดลายเซ็น
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

วิธีถอดรหัส JWT

1

วางโทเค็น

วางโทเค็นทั้งหมด จะมี Bearer นำหน้าหรือไม่ก็ได้ มี 3 ส่วนคั่นด้วยจุด หรือ 5 ส่วนถ้าเป็น JWE ที่เข้ารหัสลับ

2

อ่านแต่ละส่วน

header และ payload แสดงเป็น JSON ที่จัดรูปแบบแล้ว และแต่ละ claim แสดงในตาราง เวลา exp, nbf และ iat แสดงเป็น UTC

3

ตรวจสอบเวลา

หน้านี้เทียบ exp และ nbf กับนาฬิกาของอุปกรณ์คุณ และบอกว่าโทเค็นหมดอายุแล้วหรือยัง แต่ไม่ได้บอกว่าโทเค็นเป็นของแท้หรือไม่

JWT ประกอบขึ้นอย่างไร

JWT (RFC 7519) เขียนเป็น header.payload.signature header และ payload เป็นออบเจ็กต์ JSON ที่เข้ารหัสเป็น Base64url แบบไม่มี padding (RFC 4648 ส่วนที่ 5) และ signature เป็นไบต์ดิบในการเข้ารหัสแบบเดียวกัน การถอดรหัสเปลี่ยนเพียงรูปแบบการเข้ารหัส ดังนั้นใครที่ถือโทเค็นก็อ่าน payload ได้: อย่าใส่ความลับไว้ใน payload header ระบุอัลกอริทึมการลงลายเซ็นใน alg เช่น HS256 (HMAC กับ SHA-256 ลายเซ็น 32 ไบต์) หรือ RS256 (RSA กับ SHA-256 256 ไบต์สำหรับกุญแจ 2048 บิต)

หน้านี้ถอดรหัสโทเค็นและไม่ทำอะไรเพิ่ม ไม่ตรวจสอบลายเซ็นเพราะต้องใช้กุญแจ และบอกไม่ได้ว่าโทเค็นเป็นของแท้ ถูกเพิกถอน หรือเซิร์ฟเวอร์ยอมรับหรือไม่ หน้านี้เทียบ claim exp, nbf และ iat ซึ่งนับเป็นวินาทีตั้งแต่ 1970-01-01 UTC กับนาฬิกาของอุปกรณ์คุณ และพิมพ์เป็นวันที่เวลา UTC โทเค็นที่มี 5 ส่วนคือ JWE: เนื้อหาถูกเข้ารหัสลับ จึงแสดงได้เฉพาะ header

คำถามเกี่ยวกับ JWT

ถอดรหัส JWT ได้อย่างไร

วางโทเค็นลงในช่อง หน้านี้แยกที่เครื่องหมายจุด แปลงสองส่วนแรกจาก Base64url และแสดงเป็น JSON Bearer ที่นำหน้าจะถูกข้าม สำหรับโทเค็นตัวอย่าง header คือ {"alg":"HS256","typ":"JWT"}

หน้านี้ตรวจสอบลายเซ็นไหม

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

exp, iat และ nbf หมายถึงอะไร

เป็นเวลาในหน่วยวินาทีตั้งแต่ 1970-01-01 UTC (RFC 7519) exp คือเวลาที่โทเค็นหมดอายุ nbf คือเวลาก่อนหน้านั้นที่ห้ามยอมรับโทเค็น และ iat คือเวลาที่ออกโทเค็น ในโทเค็นตัวอย่าง iat 1700000000 คือ 2023-11-14 22:13:20 UTC และ exp 1700003600 คือหนึ่งชั่วโมงต่อมา

วางโทเค็นจริงที่นี่ปลอดภัยหรือไม่

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

ทำไมโทเค็นของฉันมี 5 ส่วน

โทเค็นที่มี 5 ส่วนคือ JWE ซึ่งเป็น JSON Web Token ที่เข้ารหัสลับ (RFC 7516) payload ถูกเข้ารหัสลับสำหรับผู้รับ หน้านี้จึงแสดงเฉพาะ header และขนาดของแต่ละส่วน อ่านเนื้อหาที่นี่ไม่ได้

"not Base64url" หรือ "not JSON" หมายความว่าอะไร

สองส่วนแรกแต่ละส่วนต้องเป็นข้อความ Base64url ที่ถอดได้เป็นออบเจ็กต์ JSON หน้านี้ระบุส่วนที่ผิดและเหตุผล: อักขระนอกชุดอักขระ ไบต์ที่ไม่ใช่ UTF-8 หรือ JSON ที่มีข้อผิดพลาดที่บรรทัดและคอลัมน์ที่ระบุ สาเหตุที่พบบ่อยคือโทเค็นที่ถูกตัดสั้นหรือมีอักขระเกิน