🔐 ก่อนจะมารู้จักกับ 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 ให้การพัฒนาเทคโนโลยีเป็นเรื่องง่ายสำหรับทุกคน
「json decode」的推薦目錄:
- 關於json decode 在 BorntoDev Facebook 的精選貼文
- 關於json decode 在 josdejong/lossless-json: Parse JSON without risk of ... - GitHub 的評價
- 關於json decode 在 Encode and Decode Json in Dart | Flutter - YouTube 的評價
- 關於json decode 在 Json decode Instance of Item - flutter - Stack Overflow 的評價
- 關於json decode 在 JS 筆記- JSON.parse, JSON.stringify - 提姆寫程式 的評價
json decode 在 Encode and Decode Json in Dart | Flutter - YouTube 的推薦與評價
We will learn about jsonEncode and jsonDecode in dart flutter. We will learn how to convert json to string, and how to convert string to ... ... <看更多>
json decode 在 josdejong/lossless-json: Parse JSON without risk of ... - GitHub 的推薦與評價
The number parser shown above is included in the library and is named parseNumberAndBigInt . Validate safe numbers. If you want parse a json string into an ... ... <看更多>