เครื่องถอดรหัส JWT

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

เพย์โหลด (การอ้างสิทธิ์):

ส่วนหัว (อัลกอริทึมการเซ็นชื่อและประเภทโทเค็น):

ลายเซ็น:

ลายเซ็นแสดงเป็นข้อมูลเข้ารหัส Base64URL การตรวจสอบลายเซ็นไม่ได้ดำเนินการโดยเครื่องมือนี้

เพิ่มเติมเกี่ยวกับ JSON Web Tokens

รูปแบบ JWT

JSON Web Token (JWT) เป็นวิธีที่กระชับและปลอดภัยสำหรับ URL ในการแสดงการอ้างสิทธิ์ที่จะถูกส่งระหว่างสองฝ่าย ประกอบด้วยสามส่วนที่เข้ารหัส Base64URL คั่นด้วยจุด: header.payload.signature ส่วนหัวโดยทั่วไปมีประเภทโทเค็น (JWT) และอัลกอริทึมการเซ็นชื่อ เพย์โหลดมีการอ้างสิทธิ์—ข้อความเกี่ยวกับเอนทิตี (โดยปกติคือผู้ใช้) และข้อมูลเมตาเพิ่มเติม ลายเซ็นใช้เพื่อตรวจสอบว่าข้อความไม่ได้ถูกเปลี่ยนแปลงระหว่างทาง

JOSE (JSON Object Signing and Encryption)

JWT เป็นส่วนหนึ่งของเฟรมเวิร์ก JOSE (JSON Object Signing and Encryption) ที่ใหญ่กว่า ซึ่งให้วิธีมาตรฐานในการรักษาความปลอดภัยข้อมูลที่ใช้ JSON JOSE รวมข้อกำหนดที่เกี่ยวข้องหลายรายการ: JWS (JSON Web Signature) สำหรับโทเค็นที่เซ็นชื่อ JWE (JSON Web Encryption) สำหรับโทเค็นที่เข้ารหัส JWK (JSON Web Key) สำหรับการแสดงคีย์เข้ารหัส และ JWA (JSON Web Algorithms) สำหรับการระบุอัลกอริทึมเข้ารหัส

JSON Web Signature (JWS)

JWT ส่วนใหญ่ที่คุณพบเป็นโทเค็น JWS—เซ็นชื่อแล้วแต่ไม่ได้เข้ารหัส ซึ่งหมายความว่าใครก็ตามสามารถอ่านเพย์โหลดได้โดยถอดรหัส Base64URL แต่ไม่สามารถแก้ไขได้โดยไม่ทำให้ลายเซ็นเป็นโมฆะ JWS ให้ความสมบูรณ์และความถูกต้อง: คุณสามารถตรวจสอบว่าโทเค็นถูกออกโดยฝ่ายที่เชื่อถือได้และไม่ได้ถูกดัดแปลง

อัลกอริทึมการเซ็นชื่อ

JWS รองรับอัลกอริทึมเข้ารหัสหลายตัวสำหรับการเซ็นชื่อโทเค็น แบ่งเป็นสองประเภท: อัลกอริทึมสมมาตร (ใช้คีย์เดียวกันสำหรับเซ็นชื่อและตรวจสอบ) และอัลกอริทึมอสมมาตร (ใช้คีย์ส่วนตัวสำหรับเซ็นชื่อ คีย์สาธารณะสำหรับตรวจสอบ)

อัลกอริทึม HMAC (สมมาตร)

HS256, HS384 และ HS512 ใช้ HMAC (Hash-based Message Authentication Code) กับ SHA-256, SHA-384 หรือ SHA-512 ตามลำดับ เหล่านี้เป็นอัลกอริทึมสมมาตร—ใช้คีย์ลับเดียวกันในการเซ็นชื่อและตรวจสอบโทเค็น อัลกอริทึม HMAC รวดเร็วและง่าย แต่ต้องการการกระจายคีย์ที่ปลอดภัยเนื่องจากทั้งสองฝ่ายต้องมีความลับเดียวกัน

อัลกอริทึม RSA (อสมมาตร)

RS256, RS384 และ RS512 ใช้ RSASSA-PKCS1-v1_5 กับ SHA-256, SHA-384 หรือ SHA-512 PS256, PS384 และ PS512 ใช้ RSASSA-PSS (probabilistic signature scheme) อัลกอริทึม RSA ใช้คีย์ส่วนตัวในการเซ็นชื่อและคีย์สาธารณะในการตรวจสอบ ทำให้สามารถแชร์คีย์ตรวจสอบได้อย่างเปิดเผยโดยไม่กระทบความปลอดภัย—เหมาะสำหรับระบบกระจายที่มีบริการหลายตัวที่ต้องตรวจสอบโทเค็น

อัลกอริทึม Elliptic Curve (อสมมาตร)

ES256, ES384 และ ES512 ใช้ ECDSA (Elliptic Curve Digital Signature Algorithm) กับเส้นโค้ง P-256, P-384 หรือ P-521 ตามลำดับ อัลกอริทึม EC ให้ความปลอดภัยเท่ากับ RSA แต่ด้วยขนาดคีย์ที่เล็กกว่า ทำให้ลายเซ็นเล็กลงและทำงานเร็วขึ้น ES256 ได้รับความนิยมเพิ่มขึ้นสำหรับแอปพลิเคชันสมัยใหม่เนื่องจากประสิทธิภาพ

JSON Web Encryption (JWE)

ในขณะที่ JWS ให้โทเค็นที่เซ็นชื่อ JWE ให้โทเค็นที่เข้ารหัสซึ่งเพย์โหลดเป็นความลับ โทเค็น JWE มีห้าส่วนแทนที่จะเป็นสาม: ส่วนหัว คีย์ที่เข้ารหัส เวกเตอร์เริ่มต้น ข้อความเข้ารหัส และแท็กยืนยันตัวตน JWE รองรับอัลกอริทึมการเข้ารหัสหลายตัว รวมถึง AES-GCM และ AES-CBC พร้อม HMAC โปรดทราบว่าเครื่องถอดรหัสนี้จัดการเฉพาะโทเค็น JWS เท่านั้น โทเค็น JWE ต้องการการถอดรหัสด้วยคีย์ที่เหมาะสม

ข้อกำหนด RFC

มาตรฐาน JWT และ JOSE ถูกกำหนดใน RFC ของ IETF หลายฉบับ:

  • RFC 7519 กำหนด JSON Web Token (JWT)
  • RFC 7515 กำหนด JSON Web Signature (JWS)
  • RFC 7516 กำหนด JSON Web Encryption (JWE)
  • RFC 7517 กำหนด JSON Web Key (JWK)
  • RFC 7518 กำหนด JSON Web Algorithms (JWA)

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