JWT (JSON Web Token)
เป็นมาตรฐานที่ใช้สำหรับส่งข้อมูลระหว่างฝ่ายต่างๆ ในรูปแบบ JSON ที่มีการเซ็นรับรองด้วยการเข้ารหัส ข้อมูลที่ถูกส่งไปใน JWT จะถูกเข้ารหัสและสามารถตรวจสอบความถูกต้องได้แต่จะไม่ถูกเข้ารหัส (หมายถึงสามารถอ่านได้โดยผู้รับหากมีการถอดรหัส)
ส่วนประกอบของ JWT
JWT ประกอบด้วย 3 ส่วนหลัก ๆ
- Header ประกอบด้วยสองส่วนคือประเภทของโทเคน (ในกรณีนี้คือ JWT) และอัลกอริธึมที่ใช้ในการเซ็นรับรอง เช่น HMAC SHA256
- Payload ส่วนที่ประกอบด้วยข้อมูลที่ต้องการส่ง ซึ่งอาจจะมีข้อมูลผู้ใช้งานหรือข้อมูลอื่นๆ ขึ้นอยู่กับการใช้งาน ข้อมูลในส่วนนี้จะถูกเข้ารหัสในรูปแบบ Base64
- Signature ส่วนที่ใช้ในการตรวจสอบความถูกต้องของโทเคน เพื่อให้มั่นใจว่าข้อมูลใน Header และ Payload ไม่ได้ถูกเปลี่ยนแปลง Signature นี้ถูกสร้างขึ้นโดยการนำข้อมูลใน Header และ Payload มารวมกันแล้วเข้ารหัสด้วย secret key
การใช้งาน JWT 🤔
JWT มักถูกนำไปใช้งานในหลายด้าน เช่น การรับรองตัวตนของผู้ใช้งาน (authentication) การแลกเปลี่ยนข้อมูลอย่างปลอดภัยระหว่างฝ่ายต่างๆ โดยเฉพาะในระบบที่ต้องการความรวดเร็วและปลอดภัย
ตัวอย่างโค้ด 👨🏻💻
ด้านล่างเป็นตัวอย่างการสร้างและตรวจสอบ JWT โดยใช้ภาษา JavaScript ร่วมกับไลบรารี jsonwebtoken
การติดตั้งไลบรารี 📚
การสร้าง JWT
การตรวจสอบ JWT
ในตัวอย่างข้างต้น
- การสร้าง JWT ใช้ฟังก์ชัน sign ของไลบรารี jsonwebtoken โดยกำหนด payload, secret key และอัลกอริธึมที่ใช้
- การตรวจสอบ JWT ใช้ฟังก์ชัน verify โดยใส่โทเคนและ secret key หากโทเคนถูกต้องจะคืนค่า payload ที่ถูกถอดรหัสแล้ว หากไม่ถูกต้องจะเกิดข้อผิดพลาด
สรุป
JWT เป็นมาตรฐานที่มีความปลอดภัยและสะดวกในการส่งข้อมูลระหว่างฝ่ายต่างๆ ในรูปแบบ JSON มีการใช้งานที่หลากหลายโดยเฉพาะในเรื่องของการรับรองตัวตนและการแลกเปลี่ยนข้อมูลอย่างปลอดภัย การสร้างและตรวจสอบ JWT สามารถทำได้ง่ายๆ ด้วยไลบรารีต่างๆ เช่น jsonwebtoken ใน JavaScript