ESC

ตัวถอดรหัสโทเค็น JWT

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

ผลลัพธ์การถอดรหัส

Header
-
Payload
-
Claims ที่ลงทะเบียน
Claim ค่า คำอธิบาย
ลายเซ็น
-

ตัวอย่างการใช้งาน

โทเค็น JWT พื้นฐาน

JWT ง่ายๆ พร้อม claims ผู้ใช้พื้นฐานเช่น subject และชื่อ เหมาะสำหรับทำความเข้าใจโครงสร้าง JWT

โทเค็นหมดอายุ

โทเค็น JWT ที่หมดอายุเพื่อดูว่าตัวถอดรหัสแสดงสถานะการหมดอายุและ timestamp อย่างไร

โทเค็น Claims ทั้งหมด

JWT ครบถ้วนพร้อม claims ที่ลงทะเบียนมาตรฐานทั้งหมด: iss, sub, aud, exp, nbf, iat และ jti

คุณสมบัติ

ส่วนที่แบ่งสี

Header (น้ำเงิน), payload (เขียว) และลายเซ็น (แดง) แยกออกจากกันด้วยสีเพื่อให้อ่านง่าย

ตรวจจับการหมดอายุ

ตรวจสอบอัตโนมัติว่าโทเค็นหมดอายุหรือไม่โดยเปรียบเทียบ claim exp กับเวลาปัจจุบัน

ตัวตรวจสอบ Claims

แสดง claims JWT ที่ลงทะเบียนทั้งหมด (iss, sub, aud, exp, nbf, iat, jti) พร้อมวันที่ที่อ่านได้

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

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

วิธีใช้งาน?

1

วางโทเค็น

วางโทเค็น JWT ของคุณในช่องป้อนข้อมูล โทเค็นจะถูกถอดรหัสอัตโนมัติเมื่อวาง

2

ตรวจสอบผลลัพธ์

ดู header, payload และลายเซ็นที่ถอดรหัสแล้วในส่วนที่แบ่งสี ตรวจสอบ claims ที่ลงทะเบียนและสถานะการหมดอายุ

3

คัดลอกส่วน

คัดลอกส่วนแต่ละส่วน (header, payload, ลายเซ็น) ไปยังคลิปบอร์ดของคุณโดยใช้ปุ่มคัดลอก

คำถามที่พบบ่อย

JSON Web Token (JWT) คือ token ขนาดกะทัดรัดที่ปลอดภัยสำหรับ URL โดยประกอบด้วยสามส่วนที่เข้ารหัสด้วย Base64url และแยกด้วยจุด: Header.Payload.Signature ส่วน header จะประกอบด้วยประเภทของ token และอัลกอริทึมการลงนาม (เช่น {"alg":"HS256","typ":"JWT"}) ส่วน payload จะประกอบด้วย claims — คำกล่าวเกี่ยวกับผู้ใช้หรือเซสชัน (เช่น user ID, role, ระยะเวลาหมดอายุ) ส่วน signature จะเชื่อมโยง header และ payload เข้าด้วยกันด้วย secret หรือ private key เพื่อป้องกันการดัดแปลง JWT ถูกใช้สำหรับการยืนยันตัวตน API, single sign-on (SSO) และการจัดการเซสชันแบบ stateless

คำเหล่านี้อ้างถึงอัลกอริทึมการลงนามใน JWT header โดย HS256 (HMAC-SHA256) ใช้ shared secret — คีย์เดียวกันถูกใช้ทั้งในการลงนามและตรวจสอบ ซึ่งหมายความว่าใครก็ตามที่มีคีย์ก็สามารถสร้าง token ที่ถูกต้องได้ ส่วน RS256 (RSA-SHA256) ใช้คู่ public/private key — เซิร์ฟเวอร์จะลงนามด้วย private key และเผยแพร่ public key สำหรับการตรวจสอบ RS256 ปลอดภัยกว่าในระบบแบบกระจายเพราะผู้ตรวจสอบต้องการเพียงแค่ public key และไม่สามารถปลอมแปลง token ได้ เครื่องมือถอดรหัสนี้จะแสดงฟิลด์ alg ให้คุณเห็น แต่ไม่สามารถตรวจสอบอัลกอริทึมใดๆ ได้ — มันอ่านเฉพาะสิ่งที่อยู่ภายในเท่านั้น

ไม่ได้ การตรวจสอบลายเซ็นต้องใช้ secret (สำหรับอัลกอริทึม HMAC) หรือ public key (สำหรับอัลกอริทึม RSA/EC) ที่ใช้ในการลงนาม token เครื่องมือนี้เพียงแค่ถอดรหัส — มันจะทำการ Base64url-decode ส่วน header และ payload เพื่อแสดงเนื้อหาให้คุณเห็นโดยไม่มีการตรวจสอบทางวิทยาการรหัสลับใดๆ ส่วนของ signature จะถูกแสดงผลตามที่ปรากฏแต่ไม่ได้รับการตรวจสอบ สำหรับการยืนยันลายเซ็น ให้ใช้ไลบรารี JWT ฝั่งเซิร์ฟเวอร์ของคุณ (เช่น jsonwebtoken สำหรับ Node.js, PyJWT สำหรับ Python, java-jwt สำหรับ Java เป็นต้น)

Registered claims คือฟิลด์ใน payload ที่เป็นมาตรฐานซึ่งกำหนดไว้ใน RFC 7519 โดยมีเจ็ดมาตรฐานคือ: iss (issuer) — ผู้ที่ออก token; sub (subject) — ใครที่เป็นเจ้าของ token (มักจะเป็น user ID); aud (audience) — ผู้รับที่ตั้งใจไว้; exp (expiration time) — Unix timestamp หลังจากซึ่ง token จะไม่ถูกต้อง; nbf (not before) — Unix timestamp ก่อนหน้าซึ่ง token ไม่ควรถูกยอมรับ; iat (issued at) — Unix timestamp เมื่อ token ถูกสร้างขึ้น; jti (JWT ID) — ตัวระบุเฉพาะสำหรับ token เครื่องมือนี้จะแปลง exp, nbf และ iat จาก Unix timestamps ให้เป็นวันที่ที่มนุษย์อ่านได้

เครื่องมือถอดรหัสจะตรวจสอบ claims ของ exp เทียบกับเวลาปัจจุบันและทำเครื่องหมาย token ที่หมดอายุอย่างชัดเจน Token ที่หมดอายุหมายความว่า API จะปฏิเสธด้วยการตอบกลับ 401 Unauthorized — คุณต้องใช้ refresh token เพื่อรับ access token ใหม่ (หากระบบยืนยันตัวตนของคุณรองรับ refresh tokens) หรือล็อกอินใหม่อีกครั้ง หากคุณกำลังแก้ปัญหาความผิดพลาด "expired token" จาก API เครื่องมือถอดรหัสนี้จะแสดงให้เห็นอย่างชัดเจนว่า token หมดอายุเมื่อใดและถูกออกเมื่อใด

ฟิลด์ alg ใน header จะถูกแสดงผลในรูปแบบที่ถอดรหัสแล้ว — หาก token มี "alg":"none" คุณจะเห็นมัน นี่คือช่องโหว่ JWT ที่เป็นที่รู้จัก: การใช้งานในช่วงแรกบางอย่างยอมรับ token ที่ไม่มีลายเซ็น (alg:none) ซึ่งทำให้ผู้ไม่หวังดีสามารถปลอมแปลง payloads ใดๆ ก็ได้ ไลบรารี JWT ที่ติดตั้งอย่างถูกต้องจะปฏิเสธ token แบบ alg:none โดยเริ่มต้น หากคุณเห็น alg:none ใน token จากระบบของคุณเอง นั่นคือบั๊กความปลอดภัยที่ร้ายแรงซึ่งต้องได้รับการแก้ไขทันที

ไม่ การถอดรหัสทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณโดยใช้ JavaScript — การถอดรหัส Base64url ไม่ต้องการการคำนวณฝั่งเซิร์ฟเวอร์ JWT tokens ของคุณ รวมถึง user IDs, roles หรือข้อมูลเซสชันใดๆ ที่บรรจุอยู่ จะไม่มีวันออกจากอุปกรณ์ของคุณ อย่างไรก็ตาม ควรระมัดระวังในการวาง production JWT tokens ลงในเครื่องมือออนไลน์ใดๆ — แม้แต่เครื่องมือนี้ด้วย สำหรับการแก้ปัญหาการยืนยันตัวตนในระบบ Production ให้ใช้แท็บ network ใน developer tools ของเบราว์เซอร์หรือระบบ logging ของคุณแทน

JWT ที่ถูกต้องต้องมีจุดสองจุดแยกส่วนที่เข้ารหัสด้วย Base64url จำนวนสามส่วน หาก token ไม่มีจุด มันจะไม่ใช่ JWT — มันอาจจะเป็น opaque token (ตัวระบุแบบสุ่มที่ต้องการการตรวจสอบฝั่งเซิร์ฟเวอร์) แทนที่จะเป็น JWT แบบ self-contained บางระบบใช้ทั้งสองประเภท: opaque refresh token และ JWT access token หากคุณได้รับข้อผิดพลาด "Invalid JWT format" ให้ตรวจสอบว่าคุณกำลังวาง access token (ซึ่งควรจะขึ้นต้นด้วย "ey") และไม่ใช่ refresh token

ตัวถอดรหัส JWT คืออะไร?

ได้โทเค็น JWT จาก API แล้วอยากรู้ว่ามีอะไรข้างใน? วางที่นี่แล้วดู header, payload และ claims ถอดรหัสในรูปแบบที่อ่านได้ทันที บอกด้วยว่าโทเค็นหมดอายุหรือยัง

ทำไมต้องใช้ตัวถอดรหัส JWT นี้?

ส่วนที่แบ่งสี (header น้ำเงิน, payload เขียว, ลายเซ็น แดง) อ่านง่าย ตรวจจับหมดอายุอัตโนมัติ แสดง claims ทั้งหมดด้วยวันที่จริงแทน Unix timestamp ทุกอย่างอยู่ในเบราว์เซอร์ - โทเค็นไม่เคยออกจากอุปกรณ์

ความปลอดภัยและความเป็นส่วนตัว

ความปลอดภัยของข้อมูลของคุณคือความสำคัญอันดับแรกของเรา

การประมวลผลภายใน

การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ

ไม่มีการถ่ายโอนข้อมูล

ข้อมูลของคุณจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเรา

ไม่มีการจัดเก็บข้อมูล

ไม่มีข้อมูลถูกเก็บหรือแบ่งปัน

การเข้ารหัส SSL

การเข้ารหัส SSL สำหรับการเชื่อมต่อที่ปลอดภัย

ขั้นตอนถัดไป

อีกมากมายใน MoreOnlineTools