RevealTheme logo

ตัวถอดรหัส JWT

ถอดรหัส JSON Web Tokens (JWT) ได้ทันที ทำงานในเบราว์เซอร์ของคุณ โทเค็นจะไม่ออกจากอุปกรณ์ของคุณ จึงปลอดภัยที่จะใช้กับซีเคร็ตในโปรดักชัน

วิธีใช้เครื่องมือนี้

  1. 1

    วาง JWT ของคุณลงในช่องป้อนข้อมูล

  2. 2

    คลิก Decode ระบบจะแยกวิเคราะห์และแสดง header และ payload

  3. 3

    ตรวจสอบอัลกอริทึม, claim, วันหมดอายุ และผู้ออก

JWT คืออะไรและทำงานอย่างไร?

JSON Web Token (JWT กำหนดไว้ใน RFC 7519) เป็นวิธีที่กะทัดรัดและปลอดภัยสำหรับ URL ในการแสดงชุดของเคลม (claims) เกี่ยวกับผู้ใช้ พร้อมหลักฐานเชิงเข้ารหัสว่าเคลมเหล่านั้นไม่ถูกแก้ไข JWT ขับเคลื่อนการยืนยันตัวตนในสแตกเว็บสมัยใหม่ส่วนใหญ่ เมื่อคุณเข้าสู่ระบบ เซิร์ฟเวอร์จะสร้าง JWT ที่มี ID ผู้ใช้และสิทธิ์ของคุณ ลงลายเซ็นด้วยคีย์ลับ แล้วส่งกลับมาให้คุณ เบราว์เซอร์ของคุณจัดเก็บโทเค็น (โดยปกติใน localStorage หรือคุกกี้) และแนบไปกับส่วนหัว Authorization ในทุกคำขอถัดไป เซิร์ฟเวอร์ตรวจสอบลายเซ็นในทุกคำขอ หากถูกต้องก็จะเชื่อถือเคลมในโทเค็น หากถูกแก้ไข ลายเซ็นจะเสียและคำขอจะถูกปฏิเสธ JWT มีสามส่วนที่เข้ารหัสแบบ Base64URL และคั่นด้วยจุด ส่วนหัวประกาศอัลกอริทึมการลงลายเซ็น (HS256 สำหรับ HMAC-SHA256, RS256 สำหรับ RSA, ES256 สำหรับ ECDSA, none สำหรับโทเค็นที่ไม่ได้ลงลายเซ็น ซึ่งอันตรายและคุณควรปฏิเสธ) เพย์โหลดมีเคลมจริง (เคลมมาตรฐานอย่าง 'sub' สำหรับ subject, 'exp' สำหรับเวลาหมดอายุ, 'iat' สำหรับวันที่ออกโทเค็น รวมถึงเคลมแบบกำหนดเองใดๆ ที่แอปของคุณกำหนด) ส่วนลายเซ็นเป็นหลักฐานว่าส่วนหัวและเพย์โหลดถูกลงลายเซ็นโดยผู้ที่ถือซีเคร็ต ตัวถอดรหัสนี้เปิดเผยสองส่วนแรก ซึ่งเป็นข้อมูลสาธารณะ ส่วนลายเซ็นสามารถตรวจสอบได้ด้วยคีย์เท่านั้น นี่จึงเป็นเหตุผลที่ตัวถอดรหัส JWT ทุกตัวแสดงเคลมโดยไม่ได้ตรวจสอบ

กรณีการใช้งานทั่วไป

  • ดีบักปัญหาการยืนยันตัวตนโดยถอดรหัส JWT ที่ไคลเอ็นต์ของคุณส่งมา — เห็นได้อย่างแม่นยำว่ามี claim ใดบ้าง ใครเป็นผู้ออก และจะหมดอายุเมื่อใด

  • ตรวจสอบ JWT ของ API gateway (AWS Cognito, Auth0, Okta) เพื่อทำความเข้าใจโครงสร้าง claim สำหรับบริการปลายทาง

  • ยืนยันว่า claim ที่กำหนดเอง (ID องค์กร, บทบาท, feature flag) ถูกตั้งค่าอย่างถูกต้องในโค้ดการออกโทเค็น

  • เปรียบเทียบโทเค็นก่อนและหลังการรีเฟรชเพื่อยืนยันว่าวันหมดอายุได้รับการขยายแล้ว

  • ตรวจสอบอัลกอริทึมของโทเค็น — ยืนยันว่ามีการใช้ RS256 หรือ ES256 ในการใช้งานจริง ไม่ใช่ 'none' เด็ดขาด

  • แปลง payload แบบ base64url จากบันทึกของเซิร์ฟเวอร์ให้เป็น claim ที่มนุษย์อ่านได้

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

ปลอดภัยหรือไม่ที่จะใช้กับ JWT ในโปรดักชัน?▼
ปลอดภัย การถอดรหัสเกิดขึ้นทั้งหมดในเบราว์เซอร์ของคุณผ่าน JavaScript ในเครื่อง โทเค็นจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเราหรือปรากฏในบันทึกใดๆ คุณตรวจสอบได้ด้วยการเปิด DevTools → แท็บ Network ขณะถอดรหัส จะไม่มีคำขอขาออกใดๆ เกิดขึ้น อย่างไรก็ตาม ให้ปฏิบัติต่อ JWT เสมือนเป็นข้อมูลรับรอง อย่าวางลงใน URL ภาพหน้าจอ หรือเอกสารที่แชร์ร่วมกัน ไม่ว่าตัวถอดรหัสจะทำงานที่ใดก็ตาม
เครื่องมือนี้ตรวจสอบลายเซ็นหรือไม่?▼
ไม่ การตรวจสอบลายเซ็นต้องใช้ซีเคร็ต (สำหรับ HS256) หรือคีย์สาธารณะ (สำหรับ RS256/ES256/PS256) เครื่องมือบนเว็บที่ขอซีเคร็ตของคุณเพื่อตรวจสอบ JWT ถือเป็นสัญญาณเตือนด้านความปลอดภัย เพราะคุณจะกำลังส่งคีย์ลงลายเซ็นของคุณให้คนแปลกหน้า ให้ตรวจสอบลายเซ็นบนเซิร์ฟเวอร์หรือด้วยไลบรารีที่คุณควบคุม (jose, jsonwebtoken)
จะเกิดอะไรขึ้นหาก JWT ของฉันหมดอายุ?▼
การหมดอายุไม่ขัดขวางการถอดรหัส เคลม 'exp' เป็นเพียงข้อมูลชิ้นหนึ่งในเพย์โหลด ให้มองหา 'exp' ในเพย์โหลดที่ถอดรหัสแล้ว ซึ่งเป็น Unix timestamp (วินาทีนับจากปี 1970) แปลงค่าด้วยตัวแปลง Timestamp ของเราเพื่อดูเวลาหมดอายุในเขตเวลาของคุณ หาก 'exp' ผ่านไปแล้ว โทเค็นจะถูกปฏิเสธโดยตัวตรวจสอบที่เป็นไปตามมาตรฐานทุกตัว แม้ว่าตัวถอดรหัสจะยังอ่านได้อยู่ก็ตาม
JWT สามารถเข้ารหัสได้หรือไม่?▼
ได้ นั่นเรียกว่า JWE (JSON Web Encryption, RFC 7516) เครื่องมือนี้จัดการ JWS (JSON Web Signature ซึ่งเป็นกรณีทั่วไป) โดยเพย์โหลดถูกลงลายเซ็นแต่มองเห็นได้ โทเค็น JWE มี 5 ส่วนคั่นด้วยจุดแทนที่จะเป็น 3 ส่วน และต้องใช้คีย์ส่วนตัวของผู้รับเพื่อถอดรหัส หากโทเค็นของคุณมี 5 ส่วน คุณต้องใช้เครื่องมือที่รองรับ JWE
'alg': 'none' หมายความว่าอย่างไรและอันตรายหรือไม่?▼
'none' หมายความว่าไม่มีลายเซ็น โทเค็นไม่ได้ลงลายเซ็นและใครก็ตามสามารถปลอมเคลมใดก็ได้ ระบบโปรดักชันต้องปฏิเสธโทเค็นที่มี 'alg: none' อย่างชัดเจน ไลบรารีบางตัวยอมรับมันโดยปริยาย (เป็นกลุ่ม CVE ที่เป็นที่รู้จักดี) ให้อนุญาตเฉพาะอัลกอริทึมที่แอปของคุณคาดหวังไว้เสมอ
ทำไมจึงใช้ JWT แทนคุกกี้เซสชัน?▼
JWT ไม่มีสถานะ (stateless) เซิร์ฟเวอร์ไม่จำเป็นต้องค้นหาเซสชัน ตัวโทเค็นเองมีข้อมูลตัวตนและสิทธิ์ของผู้ใช้อยู่แล้ว สิ่งนี้ทำให้ JWT เหมาะอย่างยิ่งสำหรับระบบแบบกระจายและ API ส่วนคุกกี้เซสชันมีสถานะ (ต้องใช้ที่จัดเก็บเซสชันบนเซิร์ฟเวอร์) แต่ทำให้เป็นโมฆะได้ง่ายกว่า (แค่ลบเซสชันก็พอ) ข้อแลกเปลี่ยนคือ JWT ขยายระบบได้ดีกว่า แต่คุณไม่สามารถ 'ออกจากระบบของผู้ใช้' ได้จนกว่าโทเค็นจะหมดอายุ
เคลมมาตรฐานของ JWT มีอะไรบ้าง?▼
RFC 7519 กำหนดไว้ดังนี้ iss (ผู้ออก), sub (subject โดยปกติคือ ID ผู้ใช้), aud (กลุ่มเป้าหมาย), exp (เวลาหมดอายุ), nbf (ห้ามใช้ก่อนเวลา), iat (ออกโทเค็นเมื่อ), jti (ID ของ JWT) นอกเหนือจากนั้น แอปต่างๆ เพิ่มเคลมแบบกำหนดเองอย่าง 'roles', 'permissions' หรือ 'tenant_id' ควรรักษาเคลมแบบกำหนดเองให้มีขนาดเล็ก เพราะ JWT เดินทางไปในส่วนหัวของทุกคำขอและเพิ่มการใช้แบนด์วิดท์ของคุณ

เครื่องมือที่เกี่ยวข้อง

เครื่องมือจัดรูปแบบและตรวจสอบ JSON

จัดรูปแบบ ตรวจสอบ และย่อขนาด JSON ออนไลน์ ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ข้อมูลของคุณจะไม่ออกจากอุปกรณ์ของคุณเลย

เครื่องมือจัดรูปแบบ XML

จัดรูปแบบและทำให้เอกสาร XML อ่านง่ายขึ้น มีประโยชน์สำหรับ SOAP, sitemap, feed RSS และไฟล์การกำหนดค่า

ตัวเข้ารหัสและถอดรหัส Base64

เข้ารหัสสตริงเป็น Base64 หรือถอดรหัส Base64 เป็นข้อความ เคารพความเป็นส่วนตัวของคุณ: ทำงานในเบราว์เซอร์ของคุณ

ตัวเข้ารหัสและถอดรหัส URL

แปลงข้อความเป็นการเข้ารหัสที่ปลอดภัยสำหรับ URL (การเข้ารหัสแบบเปอร์เซ็นต์) และกลับกัน มีประโยชน์สำหรับ query string การเปลี่ยนเส้นทาง และโฟลว์ OAuth

เครื่องมือเข้ารหัสและถอดรหัสเอนทิตี HTML

แปลงอักขระพิเศษเป็นเอนทิตี HTML (&, < เป็นต้น) และในทางกลับกัน มีประโยชน์สำหรับการฝังข้อความลงใน HTML อย่างปลอดภัย

ตัวย่อขนาด CSS

ลบคอมเมนต์ ช่องว่าง และอักขระที่ไม่จำเป็นออกจาก CSS เพื่อลดขนาดไฟล์

สมัครรับข่าวสารอัปเดต

เราไม่ขายอีเมลของคุณ เราไม่ส่งสแปม

© 2026 RevealTheme. All rights reserved.