ถอดรหัสส่วนหัว
เจสันหลังจากวาง JWT แล้ว เนื้อหาที่แยกวิเคราะห์จะแสดงที่นี่
ตรวจสอบส่วนหัวและเพย์โหลดของ JSON Web Token เครื่องมือนี้ไม่ได้ตรวจสอบลายเซ็นและการประมวลผลที่อยู่ในเบราว์เซอร์ของคุณ
วาง JWT ด้านล่างเพื่อถอดรหัส ตรวจสอบ และยืนยันทันที
กำลังรออินพุต JSON Web Token
หลังจากวาง JWT แล้ว เนื้อหาที่แยกวิเคราะห์จะแสดงที่นี่
หลังจากวาง JWT แล้ว เนื้อหาที่แยกวิเคราะห์จะแสดงที่นี่
ลายเซ็นจะแสดงที่นี่หลังจากการถอดรหัส
ป้อนรหัสลับเพื่อใช้เมื่อออก JWT การยืนยัน HS256 ดำเนินการในเบราว์เซอร์ของคุณ
แก้ไข Header และ Payload JSON และใช้ลายเซ็น HS256
เตรียมสร้าง JWT
โทเค็นชุดนี้เหมาะสำหรับการทดสอบภายในและการดีบักการพัฒนา
JWT เป็นรูปแบบโทเค็นที่ใช้กันทั่วไปสำหรับการเข้าสู่ระบบ การตรวจสอบ API และการอนุญาตระหว่างบริการ ประกอบด้วยสามส่วน: ส่วนหัว เพย์โหลด และลายเซ็น
เนื้อหาของเพย์โหลดสามารถถอดรหัสและอ่านได้ และไม่ควรใส่ข้อมูลที่ละเอียดอ่อนในการอ้างสิทธิ์ของ JWT
หน้านี้รองรับการตรวจสอบและสร้างลายเซ็น HS256 ทำให้ง่ายต่อการตรวจสอบว่าโทเค็นสภาพแวดล้อมการทดสอบถูกสร้างขึ้นด้วยข้อมูลลับเดียวกันหรือไม่
การถอดรหัส การเข้ารหัส และการตรวจสอบลายเซ็น JWT ทั้งหมดทำได้ในเบราว์เซอร์
ฐานความรู้ JWT SEO
หากคุณกำลังค้นหา "JWT Decoder", "JWT Decoder", "JSON Web Token Parsing", "JWT Verify" หรือ "JWT Encoder" โดยทั่วไปแล้วจะหมายความว่าคุณมีโทเค็นอยู่แล้ว และจำเป็นต้องเข้าใจส่วนหัว, เพย์โหลด, เวลาหมดอายุ, อัลกอริธึมการเซ็นชื่อ และการอ้างสิทธิ์อย่างรวดเร็ว หน้านี้ไม่เพียงแต่มีเครื่องมือถอดรหัส JWT ออนไลน์เท่านั้น แต่ยังจัดระเบียบความรู้พื้นฐานของ JWT ที่นักพัฒนาสอบถามบ่อยครั้ง
JWT เป็นตัวย่อของ JSON Web Token เป็นรูปแบบโทเค็นที่ใช้ JSON เพื่อแสดงข้อมูล จากนั้นแปลงเป็นสตริงแบบง่าย มักใช้ในเว็บไซต์แยกส่วนหน้าและส่วนหลัง, App API, การเข้าสู่ระบบของสมาชิก, SSO การลงชื่อเพียงครั้งเดียว, การอนุญาตไมโครเซอร์วิส และการแลกเปลี่ยนข้อมูลระหว่างบริการ
การถอดรหัส JWT ไม่จำเป็นต้องใช้รหัสผ่านเนื่องจากส่วนหัวและเพย์โหลดมีการเข้ารหัส Base64URL เท่านั้น ไม่ได้เข้ารหัส ใครก็ตามที่ได้รับโทเค็นสามารถใช้ JWT Decoder เพื่อดูเนื้อหาเพย์โหลดได้ ดังนั้นการอ้างสิทธิ์ต้องไม่มีรหัสผ่าน คีย์ API หรือข้อมูลส่วนบุคคลที่ละเอียดอ่อน
กรณีการใช้งานที่พบบ่อยที่สุดคือการอนุญาต หลังจากที่ผู้ใช้เข้าสู่ระบบสำเร็จ เซิร์ฟเวอร์การอนุญาตจะออก JWT เมื่อส่วนหน้าหรือแอปเรียก API ในเวลาต่อมา โทเค็นจะถูกวางในส่วนหัวการอนุญาต HTTP เช่น การอนุญาต: ผู้ถือ
JWT ยังใช้สำหรับการแลกเปลี่ยนข้อมูลโดยทั่วไป เมื่อทั้งสองระบบจำเป็นต้องแลกเปลี่ยนข้อมูลที่ตรวจสอบได้ ลายเซ็นช่วยให้ฝ่ายรับยืนยันว่าข้อมูลไม่มีการเปลี่ยนแปลงระหว่างการส่ง ตำแหน่งข้อมูล JWKS มักใช้ในระบบขนาดใหญ่เพื่อเปิดเผยกุญแจสาธารณะ เพื่อให้บริการต่างๆ สามารถตรวจสอบแหล่งที่มาของโทเค็นได้
JWT มาตรฐานมักจะประกอบด้วยสตริง Base64URL ที่คั่นด้วยช่วงระยะเวลาสามสตริง: Header.Payload.Signature ส่วนแรกของส่วนหัวจะอธิบายประเภทโทเค็นและอัลกอริธึมลายเซ็น ส่วนที่สองของเพย์โหลดประกอบด้วยการอ้างสิทธิ์ และส่วนที่สามของลายเซ็นจะใช้เพื่อตรวจสอบความสมบูรณ์
การเรียกร้องที่ลงทะเบียนทั่วไป ได้แก่ iss, sub, aud, exp, nbf, iat และ jti การตรวจสอบความถูกต้องของ API ที่ดีมักจะตรวจสอบอย่างน้อย exp, iss และ aud
กระบวนการทั่วไปคือ: ผู้ใช้เข้าสู่ระบบ อนุญาตให้เซิร์ฟเวอร์ตรวจสอบรหัสผ่านบัญชีหรือผลการเข้าสู่ระบบของบุคคลที่สาม จากนั้นจึงออกโทเค็นการเข้าถึง ส่วนหน้าแนบโทเค็นการเข้าถึงกับคำขอ API API แบ็กเอนด์ตรวจสอบโทเค็นและส่งคืนข้อมูลที่ได้รับการป้องกัน
JWT ไม่ใช่การแทนที่เซสชันสากล เมื่อมีการออกโทเค็นแล้ว โดยปกติจะสามารถตรวจสอบได้โดยไม่ต้องตรวจสอบฐานข้อมูลก่อนหมดอายุ อย่างไรก็ตาม ยังคงจำเป็นต้องออกแบบการเพิกถอนโทเค็น การเปลี่ยนแปลงสิทธิ์ทันที และการประมวลผลการออกจากระบบ
การตรวจสอบ JWT มักจะหมายถึงการตรวจสอบว่าโทเค็นเป็นไปตามกฎที่คาดหวังหรือไม่ เช่น มีสามส่วนหรือไม่ สามารถถอดรหัสได้หรือไม่ JSON นั้นถูกกฎหมายหรือไม่ หมดอายุแล้วหรือไม่ ผู้ออกนั้นถูกต้องหรือไม่ และผู้ชมปฏิบัติตาม API ปัจจุบันหรือไม่
การตรวจสอบ JWT จะใช้อัลกอริทึมและคีย์ที่ระบุเพื่อคำนวณลายเซ็นใหม่ จากนั้นเปรียบเทียบกับลายเซ็นที่สามของโทเค็น ความสามารถในการเข้าใจเพย์โหลดไม่ได้หมายความว่าโทเค็นนั้นน่าเชื่อถือ API อย่างเป็นทางการจะต้องผ่านการตรวจสอบตราประทับและการตรวจสอบการเรียกร้อง
JWT Decode แปลงย่อหน้าแรกและย่อหน้าที่สองของโทเค็นกลับเป็น JSON เพื่อให้คุณสามารถอ่านส่วนหัวและเพย์โหลดได้ JWT Encode เป็นกระบวนการย้อนกลับ: เตรียม Header JSON และ Payload JSON สร้าง Signature และรวมเข้าด้วยกันเป็นโทเค็นที่สมบูรณ์
หากคุณต้องการดูเนื้อหาเพย์โหลด คุณไม่จำเป็นต้องมีความลับ หากคุณต้องการยืนยันว่าระบบของคุณออกโทเค็นจริงหรือไม่ คุณต้องใช้รหัสลับหรือรหัสสาธารณะที่ถูกต้องเพื่อตรวจสอบลายเซ็น ปัจจุบันหน้านี้รองรับ HS256
เมื่อใช้การถอดรหัส JWT ออนไลน์ คุณควรตรวจสอบว่าใครเป็นผู้ออกโทเค็น ระบบที่ออกโทเค็น มีผลเมื่อใด หมดอายุเมื่อใด และขอบเขตการอนุญาตตรงตามข้อกำหนด API หรือไม่ ตารางต่อไปนี้สรุปข้อเรียกร้อง JWT ทั่วไป
| การเรียกร้อง | ความหมายภาษาจีน | สิ่งที่ต้องตรวจสอบเมื่อทำการดีบัก |
|---|---|---|
iss | ผู้ออก, ผู้ออก | ไม่ว่าจะเป็นเซิร์ฟเวอร์การอนุญาตของคุณหรือผู้ให้บริการข้อมูลประจำตัวที่เชื่อถือได้ |
ย่อย | หัวเรื่อง ผู้ใช้ หรือ ID หลัก | ไม่ว่าจะสอดคล้องกับผู้ใช้ สมาชิก บัญชีบริการ หรืออุปกรณ์ที่ถูกต้อง |
ออด | ผู้ชม ผู้ชมโทเค็น | ไม่ว่าจะส่งไปยัง API ปัจจุบันหรือไม่ ข้อผิดพลาดของผู้ชมมักทำให้เกิด 401 |
ประสบการณ์ | เวลาหมดอายุ, เวลาหมดอายุ | ไม่ว่าจะหมดอายุแล้ว; สังเกตความแตกต่างในการประทับเวลา Unix และการแสดงโซนเวลา |
ไม่ทราบ | ไม่มาก่อน เวลาที่มีผล | ยังไม่ถึงเวลาใช้งานหรือไม่ การเบี่ยงเบนเวลาของเซิร์ฟเวอร์ก็จะส่งผลกระทบต่อเช่นกัน |
นั่นคือ | ออก ณ เวลาที่ออก | ตรงกับเวลาจริงในการเข้าสู่ระบบหรือรีเฟรชโทเค็นหรือไม่ |
เจทีไอ | JWT ID, โทเค็น ID เฉพาะ | ไม่ว่าจะใช้สำหรับรายการเพิกถอน บันทึกการตรวจสอบ หรือการป้องกันการโจมตีซ้ำ |
ขอบเขต | ขอบเขตอำนาจหน้าที่ | สิทธิ์การอ่าน เขียน ผู้ดูแลระบบ และการอนุญาตอื่น ๆ ที่ API ต้องการอยู่หรือไม่ |
alg ใน JWT Header จะบอกผู้ตรวจสอบว่าควรใช้อัลกอริทึมใด HS256 คือ HMAC SHA-256 และทั้งการออกและการตรวจสอบใช้ชุดความลับเดียวกัน RS256 ใช้ลายเซ็นคีย์ส่วนตัว RSA และการตรวจสอบคีย์สาธารณะ ES256 ใช้อัลกอริธึมเส้นโค้งรูปไข่
แบ็กเอนด์ควรระบุรายการอัลกอริธึมที่อนุญาตอย่างชัดเจนเพื่อป้องกันไม่ให้ผู้โจมตีส่งผลกระทบต่อกระบวนการตรวจสอบโดยการแก้ไขส่วนหัว หาก JWT มาจากผู้ให้บริการข้อมูลระบุตัวตน โดยปกติจะได้รับ JWKS หรือคีย์สาธารณะและทำเครื่องหมายที่ kid, iss, aud, exp
ปัญหาที่พบบ่อยที่สุดที่พบเมื่อใช้ตัวถอดรหัส JWT คือโทเค็นไม่อยู่ในรูปแบบสามส่วนมาตรฐาน สตริง Base64URL ถูกคัดลอกไม่สมบูรณ์ มีช่องสีขาวทั้งก่อนและหลัง เพย์โหลดไม่ใช่ JSON ที่ถูกกฎหมาย หรือใช้ความลับในการเซ็นชื่ออย่างไม่ถูกต้อง หาก API ส่งคืน 401 หรือ 403 ขอแนะนำให้ถอดรหัส JWT ก่อนและยืนยัน exp, aud และ ขอบเขต
header.payload.signature หรือไม่ผู้ถือ หรือไม่exp หมดอายุแล้วหรือไม่ และเวลาเซิร์ฟเวอร์ซิงโครไนซ์หรือไม่iss และ aud สอดคล้องกับสภาพแวดล้อมปัจจุบันหรือไม่kid หรือไม่โดยปกติเซสชันจะบันทึกสถานะในเซิร์ฟเวอร์หรือที่เก็บข้อมูลส่วนกลาง และเบราว์เซอร์จะบันทึกเฉพาะรหัสเซสชันเท่านั้น JWT ใส่ส่วนหนึ่งของสถานะลงในโทเค็น เพื่อให้ API สามารถใช้ลายเซ็นเพื่อตรวจสอบความสมบูรณ์ได้ SAML เป็นแบบ XML และมักใช้ใน SSO ขององค์กร
| แผน | เหมาะสมกับสถานการณ์ | สิ่งที่ควรทราบ |
|---|---|---|
| เจดับบลิว | การอนุญาต API, โทเค็นการเข้าถึง SSO, ไมโครเซอร์วิส | จำเป็นต้องควบคุมเวลาหมดอายุ การตรวจสอบซีล การเพิกถอน และการรั่วไหลของข้อมูลที่ละเอียดอ่อน |
| เซสชัน | เว็บไซต์แบบดั้งเดิมที่ต้องออกจากระบบทันทีหรือการควบคุมสถานะแบบรวมศูนย์ | จำเป็นต้องมีที่เก็บเซสชันฝั่งเซิร์ฟเวอร์ และการขยายข้ามบริการจำเป็นต้องมีการออกแบบเพิ่มเติม |
| SAML | การบูรณาการเอกลักษณ์องค์กร ระบบ SSO เดิม | โครงสร้าง XML มีขนาดใหญ่กว่า และลายเซ็นและการตั้งค่ามักจะซับซ้อนกว่า |
exp ที่สมเหตุสมผล และอย่าทำให้โทเค็นการเข้าถึงใช้งานได้เป็นเวลานานalg ของส่วนหัวโดยสุ่มสี่สุ่มห้าiss, aud, nbf, iat พร้อมการอ้างสิทธิ์ที่จำเป็นเครื่องมือถอดรหัส JWT ออนไลน์นี้ใช้การประมวลผลแบบเนทีฟของเบราว์เซอร์: โทเค็น, ข้อมูลลับ, Header JSON และ Payload JSON ที่คุณวางจะไม่ถูกอัพโหลดไปยังเซิร์ฟเวอร์ ToolBoy อย่างไรก็ตาม ควรปฏิบัติตามหลักการของการเปิดเผยข้อมูลขั้นต่ำเมื่อต้องจัดการกับโทเค็นการผลิตจริง
JWT มักปรากฏในกระบวนการดีบัก API ร่วมกับ JSON, Base64URL, การสืบค้น URL, การประทับเวลา, SHA-256, UUID, regex และรูปแบบข้อมูลอื่นๆ คุณสามารถใช้เครื่องมือการจัดรูปแบบ JSON, การเข้ารหัสและถอดรหัส Base64, การแปลงการประทับเวลา Unix หรือ ของ ToolBoy href="uuid-generator.html" data-i18n="auto.025">ตัวสร้าง UUID
หากต้องการอ่านเพิ่มเติม โปรดดูที่ JSON Web Token Introduction ของ jwt.io และ RFC 7519. เนื้อหาของหน้านี้ได้รับการจัดระเบียบใหม่และเขียนใหม่เป็นภาษาจีน โดยเน้นที่การแก้ไขจุดบกพร่องเชิงปฏิบัติ SEO หมวกขาว และความเป็นส่วนตัวดั้งเดิม