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.