เครื่องถอดรหัส 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 หลายฉบับ: