แปลงฟรี

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

ถอดรหัสส่วนหัว JWT (JSON Web Token) และเพย์โหลดทันทีในเบราว์เซอร์ของคุณ ฟรี เป็นส่วนตัวและฝั่งไคลเอ็นต์ — ไม่มีข้อมูลถูกส่งไปยังเซิร์ฟเวอร์ใดๆ

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

JSON Web Tokens (JWT) เป็นรูปแบบขนาดกะทัดรัดและปลอดภัยต่อ URL สำหรับการส่งการอ้างสิทธิ์ระหว่างสองฝ่าย ซึ่งกำหนดโดย RFC 7519 JWT คือสามส่วนที่เข้ารหัส base64url โดยคั่นด้วยจุด: ส่วนหัว (อัลกอริทึมและประเภทโทเค็น) เพย์โหลด (การอ้างสิทธิ์) และลายเซ็น (หลักฐานพิสูจน์ความถูกต้องด้วยการเข้ารหัส) ส่วนหัวและเพย์โหลดเป็น JSON ซึ่งเข้ารหัส base64url เพื่อความปลอดภัยของ URL ลายเซ็นใช้หนึ่งในหลายอัลกอริธึม (HS256, RS256, ES256 และอื่นๆ) บนส่วนหัวที่เข้ารหัสและเพย์โหลด

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

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

ทำไมต้องถอดรหัส JWT

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

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

วิธีใช้งาน

วางโทเค็น รับเนื้อหาที่แยกวิเคราะห์

  1. วาง JWT ของคุณ: วางโทเค็นแบบเต็ม (header.payload.signature) ลงในพื้นที่อินพุต ตัวถอดรหัสยอมรับโทเค็นโดยมีหรือไม่มีคำนำหน้า Bearer เผื่อเลือก
  2. ตรวจสอบส่วนหัว: ส่วนหัวแสดงอัลกอริทึมการลงนาม (alg) และประเภทโทเค็น (typ) อัลกอริธึมทั่วไปคือ HS256, RS256 และ ES256 ระวัง alg: ไม่มี ซึ่งส่งสัญญาณโทเค็นที่ไม่ได้ลงนามและไม่ค่อยปลอดภัยในการผลิต
  3. ตรวจสอบน้ำหนักบรรทุก: เพย์โหลดประกอบด้วยการอ้างสิทธิ์: iss (ผู้ออก), sub (หัวเรื่อง), aud (ผู้ชม), exp (หมดอายุ), iat (ออกที่) และการอ้างสิทธิ์เฉพาะแอปพลิเคชันใด ๆ การประทับเวลามาตรฐานคือ Unix epoch วินาที
  4. ตรวจสอบแยกกัน: ตัวถอดรหัสไม่ได้ตรวจสอบลายเซ็น หากต้องการตรวจสอบความถูกต้อง ให้รันโทเค็นผ่านไลบรารี JWT ด้วยรหัสลับหรือคีย์สาธารณะที่เหมาะสมในโค้ดแอปพลิเคชันของคุณ

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

รายละเอียดทางเทคนิค

รูปแบบ JWT คือสามส่วนที่เชื่อมต่อกันด้วยจุด แต่ละเซ็กเมนต์มีการเข้ารหัส base64url ซึ่งเป็นรูปแบบที่ปลอดภัยต่อ URL ของ base64 ที่ใช้ - และ _ แทน + และ / โดยที่บางครั้งละเว้นช่องว่างภายใน การถอดรหัสจำเป็นต้องยกเลิกการแทนที่ URL ที่ปลอดภัย การเติมส่วน และการถอดรหัส base64

ส่วนหัวและเพย์โหลดเป็น JSON หลังจากการถอดรหัส ส่วนลายเซ็นเป็นแบบไบนารี (ไบต์ลายเซ็นแบบดิบ) และไม่สามารถอ่านได้โดยมนุษย์ ต้องใช้รหัสยืนยันจึงจะมีประโยชน์

การอ้างสิทธิ์ทั่วไปที่กำหนดใน RFC 7519: iss (ผู้ออก), sub (ตัวระบุหัวเรื่อง), aud (ผู้ชม), exp (หมดอายุเป็น Unix epoch วินาที), nbf (ไม่ก่อนการประทับเวลา), iat (ออกเมื่อประทับเวลา), jti (ID โทเค็นเฉพาะ) การกล่าวอ้างเฉพาะแอปพลิเคชันสามารถปรากฏพร้อมกับชื่อใดก็ได้

แนวทางปฏิบัติที่ดีที่สุด

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

ปลอดภัยไหมที่จะวาง JWT ของฉันที่นี่
ใช่. การถอดรหัสเกิดขึ้นทั้งหมดในเบราว์เซอร์ของคุณ — โทเค็นจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ใดๆ อย่างไรก็ตาม JWT เป็นข้อมูลรับรอง อย่าแชร์ต่อสาธารณะ (ในภาพหน้าจอ โพสต์ Stack Overflow ฯลฯ) เนื่องจากอาจให้สิทธิ์การเข้าถึงบัญชีของคุณ
เครื่องมือนี้ตรวจสอบลายเซ็น JWT หรือไม่
เครื่องมือนี้จะถอดรหัสและแสดงเนื้อหาโทเค็น การตรวจสอบลายเซ็นต้องใช้คีย์ลับ (HMAC) หรือคีย์สาธารณะ (RSA/ECDSA) ซึ่งควรจะคงอยู่บนเซิร์ฟเวอร์ของคุณ เครื่องมือแสดงอัลกอริทึมที่ใช้แต่ไม่สามารถยืนยันได้หากไม่มีคีย์
การเรียกร้อง JWT มาตรฐานหมายถึงอะไร
iss = ผู้ออก, sub = subject (ID ผู้ใช้), exp = เวลาหมดอายุ (การประทับเวลา Unix), iat = ออกเมื่อ, nbf = ไม่ก่อนหน้า, aud = ผู้ชม, jti = JWT ID การอ้างสิทธิ์แบบกำหนดเองอาจมีข้อมูลเฉพาะแอปพลิเคชันใดๆ
ทำไมใครๆ ก็สามารถถอดรหัส JWT ได้
JWT ถูกเข้ารหัส ไม่ใช่ถูกเข้ารหัส เพย์โหลดมีการเข้ารหัส Base64URL (ไม่ได้เข้ารหัส) ดังนั้นใครๆ ก็สามารถอ่านได้ ลายเซ็นป้องกันการปลอมแปลงไม่อ่าน อย่าจัดเก็บข้อมูลที่ละเอียดอ่อน (รหัสผ่าน, SSN) ไว้ในเพย์โหลดของ JWT
เหตุใดโทเค็นบางตัวจึงไม่มีลายเซ็น?
โทเค็นที่มี alg: ไม่มี ไม่มีลายเซ็น เป็น JWT ที่ถูกต้องตามข้อมูลจำเพาะ แต่ไม่มีการรับประกันความถูกต้อง และไม่ควรได้รับการยอมรับในการผลิต
JWT มีการเข้ารหัสหรือไม่
เพย์โหลด JWT มาตรฐานได้รับการลงนามแต่ไม่ได้เข้ารหัส JWE (การเข้ารหัสเว็บ JSON, RFC 7516) เป็นรูปแบบแยกต่างหากสำหรับโทเค็นที่เข้ารหัส JWT ส่วนใหญ่ในป่าเป็น JWS (ลงนามเท่านั้น)
โทเค็นของฉันถูกอัพโหลดไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การถอดรหัสเกิดขึ้นในเบราว์เซอร์ของคุณ โทเค็นจะไม่ออกจากอุปกรณ์ของคุณ
โดยทั่วไป JWT จะใช้เวลานานแค่ไหน?
มีตั้งแต่ไม่กี่ร้อยถึงหลายพันตัวอักษร ความยาวขึ้นอยู่กับจำนวนและขนาดของการอ้างสิทธิ์บวกกับความยาวของลายเซ็น (ซึ่งขึ้นอยู่กับอัลกอริทึม)