🔐 ก่อนจะมารู้จักกับ JWT เรามาดูการยืนยันตัวตนแบบเก่ากันก่อน โดยแบบเก่าจะต้องส่งผ่าน HTTP protocal ไปที่ server แล้วนำไป query ใน database เพื่อนำข้อมูลมาเทียบกัน
.
และเนื่องจากเจ้า HTTP protocal เนี่ยเป็น stateless ซึ่งมันจะไม่จดจำข้อมูลการส่งเอาไว้ดังนั้นเมื่อจะทำงานอะไรเลยต้องแนบข้อมูลไว้ให้มันผ่าน cookie ด้วย เพื่อให้รู้ว่าคนที่ request นี้เป็นใคร ทำให้ต้องมีการ query เพิ่มเติมใน database ในทุกๆ request
.
หากต้องการเพิ่ม server ก็จะเกิดปัญหา เนื่องจาก server ตัวใหม่ก็ต้องมี session ID ที่เหมือนตัวเก่าแต่ทว่า database มันไม่ sync กันทำให้จัดการได้ยาก และเนื่องจากต้องส่งข้อมูลผ่าน cookie ถ้าส่งข้อมูลข้าม Domain ก็ทำไม่ได้อีก
.
นอกจากนี้การส่ง Session ID ในทุกๆครั้งก็อาจส่งผลกระทบด้านความปลอดภัยได้ 👻
.
📦 JWT ย่อมาจาก JSON Web Token เป็นstandardที่มาแก้ปัญหาด้านการส่งข้อมูล โดยโครงสร้างของมันประกอบด้วย3ส่วนคือ
.
Header : เก็บประเภท token และวิธีการเข้ารหัส
Payload : เก็บข้อมูลที่ใช้
Signature : เป็นส่วนที่เอาไว้ยืนยันว่า token นี้เป็นของจริงมาจากเว็บเราจริงๆ
.
📬 การใช้งานก็สามารถพ่วงไปกับ HTTP request ผ่าน Header ได้เลยเมื่อส่งไปถึงมือ server แล้ว ตัว server ก็จะต้องเช็ค Signature เพื่อยันยันว่าเป็นของจริงหรือไม่ ต่อไปก็จะทำการ decode ตัว payload เพื่อนำข้อมูลไปใช้
.
เนื่องจาก JWT สามารถเก็บข้อมูลเองได้ จึงเป็นการลดขั้นตอนการทำงานไม่ต้องQuery ข้อมูลเพิ่มเติม และไม่ต้องเก็บ session ID ไว้ใน server อีกด้วย เพราะ browser จะเก็บข้อมูล JWT เพื่อส่งกลับให้ server ผ่าน browser เพื่อยืนยันตัวตน
.
🎯 สรุปแล้วเจ้า JWT สามารถใช้ได้กับทุกงานที่รองรับการส่งข้อมูลแบบ JSON และมีการส่งข้อมูลแบบ HTTP protocal โดยที่เราสามารถใช้การทำงานกับระบบที่มีหลาย server หรือการติดต่อข้าม domain ได้ง่ายกว่า
.
แต่ก็มีข้อควรระวังคือ Payload นั้นไม่ควรเก็บข้อมูลที่เป็นความลับเด็ดขาดเนื่องจากยังสามารถ decode ออกมาดูได้อยู่ และ token นั้นแก้ไขไม่ได้ ต้องสร้างใหม่อย่างเดียวจึงควรตั้งเวลาหมดอายุได้ด้วย
.
สำหรับใครที่อยากลองเล่น มาได้ที่นี่เลย https://jwt.io/
.
#BorntoDev - 🦖 Coding Academy ให้การพัฒนาเทคโนโลยีเป็นเรื่องง่ายสำหรับทุกคน
Search
jwt token decode 在 Securing REST APIs - How to decode JWT Token (JSON Web ... 的美食出口停車場
In this Apigee Edge 4MV4D, Find out how to decode JWT Token before you verify same. It will be helpful to ... ... <看更多>