ตัวถอดรหัส JWT

JWT โทเค็น

วาง JWT โทเค็นเพื่อถอดรหัสทันที

วาง JWT โทเค็นเพื่อถอดรหัสทันที

เกี่ยวกับเครื่องมือนี้

การถอดรหัส JWT (JSON Web Token) เป็นสิ่งที่ฉันทำเกือบทุกวันเมื่อดีบักปัญหาการตรวจสอบสิทธิ์ ตรวจสอบโทเค็น API หรือแก้ไขปัญหาการรวมระบบ SSO เมื่อผู้ใช้รายงานข้อผิดพลาด 'การเข้าถึงถูกปฏิเสธ' สิ่งแรกที่ฉันทำคือถอดรหัส JWT ของพวกเขาเพื่อตรวจสอบเวลาหมดอายุ บทบาท และข้อความรับรอง เครื่องมือนี้ถอดรหัส JWT ทันทีโดยไม่ส่งโทเค็นไปยังเซิร์ฟเวอร์ใด ๆ—สำคัญมากเมื่อจัดการกับโทเค็นการเข้าถึงในการผลิตหรือข้อมูลรับรองของลูกค้า มันแบ่งโทเค็นออกเป็นสามส่วน (header, payload, signature) ถอดรหัส Base64 สองส่วนแรก และแสดงเนื้อหา JSON ในรูปแบบที่อ่านง่าย ลายเซ็นจะแสดงแต่ไม่ได้รับการตรวจสอบ—นี่คือเครื่องมือตรวจสอบ ไม่ใช่ตัวตรวจสอบ เหมาะสำหรับนักพัฒนาที่รวม OAuth2 ดีบักโทเค็น Auth0/Cognito หรือทำความเข้าใจว่าการตรวจสอบสิทธิ์แบบ JWT ทำงานอย่างไร ### โครงสร้าง JWT JWT ประกอบด้วย 3 ส่วนที่คั่นด้วยจุด (.): - **Header** - มีประเภทโทเค็นและอัลกอริทึมการลงนาม (เช่น HS256, RS256) - **Payload (claims)** - มีข้อมูลจริงและข้อความรับรอง - **Signature** - ตรวจสอบว่าโทเค็นไม่ถูกแก้ไข ตัวถอดรหัสช่วยให้นักพัฒนาดูเนื้อหา payload อย่างรวดเร็วเพื่อวัตถุประสงค์ในการดีบัก เช่น การดูบทบาท/สิทธิ์ การตรวจสอบการหมดอายุของโทเค็น การตรวจสอบข้อมูลผู้ออก การตรวจสอบขอบเขต API และการตรวจสอบโครงสร้างโทเค็นระหว่างการนำการตรวจสอบสิทธิ์ไปใช้ ### กรณีการใช้งาน **1. ดีบักโทเค็นจากผู้ให้บริการการตรวจสอบสิทธิ์** - Firebase Auth - Auth0 - AWS Cognito - Supabase - Keycloak **2. การพัฒนา Frontend** ตรวจสอบ: - มี claim role=admin อยู่หรือไม่? - โทเค็นหมดอายุเมื่อผู้ใช้บ่นหรือไม่? - โครงสร้างโทเค็นถูกต้องหรือไม่? **3. การพัฒนา Backend** ตรวจสอบ payload ก่อนที่จะเขียนการตรวจสอบใน backend **4. QA / การทดสอบ** ตรวจสอบโทเค็น API ระหว่างการทดสอบ API **5. การตรวจสอบความปลอดภัย (การตรวจสอบอย่างรวดเร็ว)** ตรวจสอบอัลกอริทึมลายเซ็น (alg) เพื่อความปลอดภัย: - HS256, RS256, ES256 → ✓ ปลอดภัย - NONE → ⚠️ ไม่ปลอดภัย **6. การดีบัก OAuth 2.0 / OpenID Connect** ดู: - `iss` - ผู้ออก - `aud` - ผู้ชม - `exp` - การหมดอายุ - `nonce` - การป้องกันการโจมตีแบบเล่นซ้ำ - `azp` - ฝ่ายที่ได้รับอนุญาต

วิธีใช้งาน

วางโทเค็น JWT (รูปแบบ: xxxxx.yyyyy.zzzzz) ในช่องป้อนข้อมูล เครื่องมือจะแบ่งมันออกเป็นส่วน header, payload และ signature โดยอัตโนมัติ Header แสดงอัลกอริทึม (HS256, RS256 ฯลฯ) และประเภทโทเค็น Payload แสดงข้อความรับรองเช่น ID ผู้ใช้ (sub) การหมดอายุ (exp) ออกเมื่อ (iat) ผู้ออก (iss) และข้อความรับรองที่กำหนดเองที่แอปของคุณเพิ่ม เวลาหมดอายุเป็น Unix timestamps—เครื่องมือสามารถแปลงเหล่านี้เป็นวันที่ที่อ่านได้ ใช้สิ่งนี้เมื่อ API ส่งคืนข้อผิดพลาด 401 เพื่อตรวจสอบว่าโทเค็นหมดอายุหรือไม่ เมื่อดีบักการให้สิทธิ์เพื่อตรวจสอบว่ามีข้อความรับรองบทบาท/สิทธิ์หรือไม่ หรือเมื่อเรียนรู้โครงสร้าง JWT ### วิธีใช้ 1. คัดลอกโทเค็น JWT ของคุณ 2. วางในช่องป้อนข้อมูล 3. เครื่องมือจะแยก header, payload และ signature โดยอัตโนมัติ 4. ดูผลลัพธ์ที่ถอดรหัส: JSON + การแจกแจงข้อความรับรอง 5. ใช้ปุ่มคัดลอก/ส่งออกหากจำเป็น

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

ดีบักข้อผิดพลาดการตรวจสอบสิทธิ์

ผู้ใช้ได้รับข้อผิดพลาด 401; ถอดรหัสโทเค็นของพวกเขาเพื่อตรวจสอบว่า timestamp exp (การหมดอายุ) ผ่านไปแล้วหรือไม่—โทเค็นมักจะหมดอายุใน 15-60 นาที

ตรวจสอบข้อความรับรอง

ถอดรหัสโทเค็นการเข้าถึงเพื่อยืนยันว่ามีข้อความรับรองที่จำเป็น (บทบาท สิทธิ์ อีเมลที่ตรวจสอบแล้ว) ก่อนที่จะตรวจสอบปัญหาอื่น ๆ

การดีบักแบบหลายผู้เช่า

ตรวจสอบข้อความรับรอง tenant_id หรือ organization_id ในโทเค็นเพื่อให้แน่ใจว่าผู้ใช้เข้าถึงทรัพยากรผู้เช่าที่ถูกต้อง

การเปรียบเทียบโทเค็น

ถอดรหัสโทเค็นจากสภาพแวดล้อมต่าง ๆ (dev/staging/production) เพื่อเปรียบเทียบความแตกต่างของข้อความรับรอง

การเรียนรู้ OAuth2/OpenID

วางโทเค็นตัวอย่างจาก Auth0, Cognito หรือ Keycloak เพื่อทำความเข้าใจโครงสร้างและข้อความรับรองมาตรฐานเช่น aud (ผู้ชม) และ scope

ข้อจำกัดและหมายเหตุสำคัญ

⚠️ **สำคัญ**: เครื่องมือนี้ถอดรหัสโทเค็นเท่านั้น ไม่ตรวจสอบลายเซ็น! เครื่องมือนี้ถอดรหัส JWT เท่านั้น—ไม่ตรวจสอบลายเซ็นหรือตรวจสอบโทเค็น โทเค็นที่ถอดรหัสที่แสดงข้อความรับรองที่ถูกต้องไม่ได้หมายความว่าโทเค็นนั้นแท้จริง ผู้โจมตีสามารถสร้างโทเค็นด้วยข้อความรับรองเท็จได้ ตรวจสอบลายเซ็นที่ฝั่งเซิร์ฟเวอร์โดยใช้คีย์ลับหรือคีย์สาธารณะของคุณ (สำหรับ RS256) เสมอ เครื่องมือทำงานกับรูปแบบ JWT มาตรฐาน (header.payload.signature ในการเข้ารหัส Base64URL) ไม่จัดการ JWT ที่เข้ารหัส (JWE) หรือโทเค็นที่ซ้อนกัน หากโทเค็นของคุณมีข้อมูลไบนารีหรือการเข้ารหัสที่ไม่ใช่มาตรฐาน การถอดรหัสอาจล้มเหลว สำหรับการตรวจสอบโทเค็นอัตโนมัติในโค้ด ให้ใช้ไลบรารี JWT ที่เหมาะสมเช่น jsonwebtoken (Node.js), PyJWT (Python) หรือ jose4j (Java) หมายเหตุด้านความปลอดภัย: อย่าวางโทเค็นการผลิตที่ละเอียดอ่อนในเครื่องมือออนไลน์ที่คุณไม่ไว้วางใจ—เครื่องมือนี้ทำงานบนฝั่งไคลเอ็นต์ แต่ตรวจสอบเสมอในแท็บเครือข่าย DevTools ว่าไม่มีอะไรถูกอัปโหลด