JWT คือ JSON Web Token เป็นรูปแบบหนึ่งที่ใช้ในการสร้างรหัส token จากข้อมูล JSON Data แล้วทำการเข้ารหัสด้วย Base64Url และถือว่าเป็นมาตรฐานเปิด(RFC 7519) ที่เข้ามาแก้ปัญหาการส่งข้อมูลอย่างปลอดภัยระหว่างกัน โดยถูกออกแบบไว้ว่า จะต้องมีขนาดที่กะทัดรัด (Compact) และเก็บข้อมูลภายในตัว(Self-contained)
หน้าตาของ JWT จะเป็น xxxxxxxx.yyyyyyyy.zzzzzzzz
โดยจะแบ่งเป็น 3 ส่วน ประกอบด้วย
- Header – เป็นส่วนที่บอกรายละเอียดของ J W T ประกอบไปด้วย
- ชนิดของข้อมูล
- การเข้ารหัส
- Payload – เป็นส่วนที่เก็บข้อมูลต่างๆ ที่เราต้องการส่งไปใน Token โดยจะเก็บอยู่ในรูปของ JSON Obeject
- Signature – เป็นส่วนที่เอาไว้เช็คว่า ข้อมูลของ Header และ Payload ถูกต้องหรือไม่ มีการแก้ไข หรือเปลี่ยนแปลงอะไรรึเปล่า ถ้าเกิดการเปลี่ยนแปลง Token จะไม่ถูกนำมาใช้ เพราะไม่มีความน่าเชื่อถือ
ส่วนการทำ J W T นั้น ก็คือการนำเอาส่วนของ Header, Payload และ Signature มาต่อกันขั้นด้วยจุด(.) แล้วเราก็จะได้ Token แล้ว
ข้อดี
- เป็น JSON มันจึงสามารถใช้งานกับภาษาโปรแกรมได้หลายภาษา
- เก็บทุกอย่างไว้ในตัวของมันเองแม้กระทั้งข้อมูลทั่วไปของผู้ใช้งาน (ต้องเป็นข้อมูลที่เปิดเผยได้นะครับเพื่อความปลอดภัย)
- ง่ายต่อการส่งไปส่งมา เพราะว่ามันเป็น JSON และก็เก็บทุกอย่างที่จำเป็นไว้กับตัวเองจึงทำให้มันง่ายต่อการส่ง ไม่ว่าจะส่งไปกับ url, ajax, header หรืออะไรก็แล้วแต่ที่สามารถส่ง string ได้
JSON Web Token สามารถใช้ได้กับทุกภาษาที่รองรับข้อมูลแบบ JSON และสามารถส่งผ่าน HTTP header, POST, URL ได้ง่าย รวดเร็ว และมีความปลอดภัยด้วยตัวของมันเอง (ทั้งนี้ทั้งนั้นขึ้นอยู่กับการ implement ) อย่างที่ได้ย้ำอยู่เสมอว่าข้อมูลนี้จะนำมาทำเป็น token จะต้องเป็นข้อมูลที่เปิดเผยได้นะครับ เพราะยังไงการเข้ารหัสก็เป็นการเข้ารหัสด้วย Base64 ซึ่งทุกคนสามารถเปิดมันได้จึงต้องใช้มันด้วยความรอบคอบ
อยากลองทำหรือศึกษา ก็สามารถตามไป ที่นี่ เลย