ตัวสร้าง JWT
สร้าง JWT ที่ลงนามด้วยส่วนหัว เพย์โหลด และคีย์แบบกำหนดเอง รองรับ HS256, RS256, ES256
JWT คืออะไร?
JWT (JSON Web Token, RFC 7519) เป็นมาตรฐานเปิดสำหรับส่งข้อมูลอย่างปลอดภัยเป็นออบเจกต์ JSON ขนาดกะทัดัด ประกอบด้วยสามส่วนคั่นด้วยจุด: Header.Payload.Signature
การใช้งานทั่วไปของ JWT มีอะไรบ้าง?
JWT ใช้กันอย่างแพร่หลายสำหรับการตรวจสอบตัวตน (single sign-on) การให้สิทธิ์ API และการแลกเปลี่ยนข้อมูลอย่างปลอดภัย หลังจากเข้าสู่ระบบ เซิร์ฟเวอร์จะออก JWT ที่ไคลเอนต์แนบไปกับคำขอถัดไป
เลือก HS256, RS256 และ ES256 อย่างไร?
HS256 ใช้รหัสลับร่วมและเร็วที่สุด เหมาะสำหรับบริการเดียว RS256 ใช้คู่กุญแจ RSA ดีกว่าสำหรับสถาปัตยกรรมหลายบริการ ES256 ใช้กุญแจ elliptic curve ให้ความปลอดภัยสูงพร้อมลายเซ็นสั้นกว่า
Claims ใน JWT คืออะไร?
Claims คือข้อความในเพย์โหลด Claims ที่ลงทะเบียนรวมถึง iss (ผู้ออก), sub (หัวข้อ), exp (วันหมดอายุ), aud (ผู้รับ) Claims สาธารณะสามารถลงทะเบียนกับ IANA Claims ส่วนตัวเป็นฟิลด์ที่กำหนดเอง
วิธีตรวจสอบ JWT?
ถอดรหัสส่วนหัวเพื่อรับอัลกอริทึม แล้วใช้กุญแจที่เหมาะสม (รหัสลับร่วมสำหรับ HMAC, กุญแจสาธารณะสำหรับ RSA/ECDSA) เพื่อตรวจสอบลายเซ็น ตรวจสอบ exp, iss และ aud ด้วย
การสร้าง JWT ในเบราว์เซอร์ปลอดภัยหรือไม่?
ใช่ เครื่องมือนี้ใช้ Web Crypto API กุญแจและโทเค็นไม่ออกจากเบราว์เซอร์ ไม่มีข้อมูลถูกส่งไปยังเซิร์ฟเวอร์
ความแตกต่างระหว่างการเข้ารหัสและการลงนาม?
การเข้ารหัส (Base64) เพียงแปลงข้อมูลเป็นรูปแบบที่ส่งได้และใครก็ตามสามารถย้อนกลับได้ การลงนามสร้างแฮชเชิงรหัสที่พิสูจน์ว่าโทเค็นไม่ถูกแก้ไข
JWT สามารถเข้ารหัสได้หรือไม่?
ได้ JWE (JSON Web Encryption) เข้ารหัสเนื้อหาเพย์โหลด JWT มาตรฐาน (JWS) รับประกันความสมบูรณ์เท่านั้น แต่เพย์โหลดสามารถอ่านได้โดยทุกคนที่มีโทเค็น
แนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุดสำหรับ JWT?
ตั้งเวลาหมดอายุสั้นเสมอ ใช้รหัสลับที่แข็งแกร่งและสุ่มสำหรับ HMAC เก็บกุญแจส่วนตัวอย่างปลอดภัย อย่าใส่ข้อมูลสำคัญในเพย์โหลด ใช้ HTTPS ในสภาพแวดล้อมการผลิต
JWT เทียบกับการตรวจสอบตัวตนแบบเซสชันอย่างไร?
JWT ไม่มีสถานะ — เซิร์ฟเวอร์ไม่เก็บข้อมูลเซสชัน เหมาะสำหรับไมโครเซอร์วิสและสถานการณ์ข้ามโดเมน เซสชันต้องใช้พื้นที่เก็บข้อมูลบนเซิร์ฟเวอร์แต่เพิกถอนได้ทันที
JWT เหมาะสำหรับการออกจากระบบและการจัดการเซสชันหรือไม่?
JWT ไม่มีสถานะโดยการออกแบบ การออกจากระบบจึงต้องการกลไกเพิ่มเติมเช่นรายการบล็อกหรือโทเค็นอายุสั้นพร้อมโทเค็นรีเฟรช ใช้โทเค็นเข้าถึงอายุสั้น (เช่น 15 นาที)
รูปแบบโทเค็นรีเฟรชทำงานกับ JWT อย่างไร?
ใช้โทเค็นเข้าถึงอายุสั้น (JWT) สำหรับเรียก API และโทเค็นรีเฟรชอายุยาวกว่าสำหรับรับโทเค็นเข้าถึงใหม่ เมื่อโทเค็นเข้าถึงหมดอายุ ไคลเอนต์ส่งโทเค็นรีเฟรชเพื่อรับ JWT ใหม่
อัลกอริทึม "none" คืออะไร?
อัลกอริทึม "none" หมายถึง JWT ไม่มีลายเซ็น ใช้เพื่อการทดสอบเท่านั้น ไลบรารีจำนวนมากปิดใช้งานเป็นค่าเริ่มต้นเพื่อความปลอดภัย
JWT มีข้อจำกัดด้านขนาดหรือไม่?
JWT ไม่มีขีดจำกัดขนาดตายตัว แต่เนื่องจากส่งในส่วนหัว HTTP ควรอยู่ต่ำกว่า 4KB ทำให้เพย์โหลดเล็กที่สุด