Skip to main content

Authentication methods

Method🔧

ต้องขอเกริ่นก่อนว่า การยืนยันตัวตน (Authentication) มันมีหลายวิธี โดย JWT ก็เป็นหนึ่งในวิธียืนยันตัวตนเเบบ Token Token-based authentication

ในที่นี้จะขอยกตัวอย่าง 3 วิธีที่เราน่าจะคุ้นชินกัน

1. Password-based authentication

วิธีนี้เป็นวิธีที่ทั่วไปเเละใช้งานง่าย โดยหลักการทำงานของมันก็ง่าย ๆ เริ่มจากการที่ผู้ใช้งานส่ง password ไปที่ serverServer เพื่อทำการยืนยันตัวตน

ถ้า password ถูกต้อง ผู้ใช้งานก็จะได้รับการยืนยันตัวตนเเละมีสิทธิ์ในการเข้าถึง resource ในเว็บไซต์นั้น 

JWT (3).jpg

เเต่ถ้า password ผิด ทาง serverServer ก็จะตอบกลับมาว่า wrong credentials (invalid username/password)

JWT (4).jpg

2. Multi-Factor authentication

วิธีนี้ก็จะเป็นวิธีที่มีความปลอดภัยมากขึ้นเมื่อเทียบกับ password Password-based เพราะมันจะมีการเข้ารหัสมากกว่า 1 ครั้ง พูดอธิบายง่าย  เวลาเราเข้าสู่ระบบด้วย password อะไรเรียร้อยเล้ว วระบบจะใช้วิธีบางอย่าง เพื่อยืนยันตัวตนของเราอีกครั้ง ยกตัวอย่างเช่น

  • การส่ง pin มาที่เบอร์โทรศัพท์เรา 
  • การเเสกนลายนิ้วมือ
  • การส่ง verification code มาที่เมลของเรา

JWT (5).jpg

3. Token-based authentication

เป็นวิธีการยืนยันตัวตนที่ใช้สิ่งที่เรียกว่า token พูดเเบบง่ายๆให้ลองนึกถึง passport ดูครับ ก่อนเราจะสมัครก็จะต้องมีการกรอกข้อมูลส่วนตัวของผู้ใช้งานเเล้วทางระบบก็จะทำการ generate passport มาให้ โดยที่ผู้ใช้งานจะไม่สามารถเเก้ไขข้อมูลใน passport เองได้ เวลาจะเข้า-ออกนอกประเทศ เราก็ต้องยื่น passport ให้ตรวจสอบความถูกต้องอีกทีเช่

ตัว token ก็ทำงาในลักษณะเดียวกันกับ tokenpassport

สถานการณ์จำลอง

  1. นาย A ได้ทำการ login โดยใช้ username & password 
  2. Server ได้ทำ verify ตรวจสอบข้อมูลว่าถูกต้องตามที่อยู่ใน Database เเลหรือไม่ จากนัจึงทำการ generate ตัว token ขึ้นมา
  3. Server ได้ทำการเก็บ token ในนั้นไว้ใน session เเล้วส่งมาทาง clientClient
  4. เมื่อนาย A ต้องการที่จะใช้หรือเข้าถึง resource บางอย่างบนเว็บไซต์ที่จำเป็นต้องมีการยืนยันตัวตน ก็จะทำการส่ง request พร้อมเเนบเจ้าตัว token นี่เเหละ ไปยืนยันที่ Server
  5. เมื่อ Server ได้ทำการตรวจสอบเรียบร้อยเเล้วว่า token ของนาย A มีข้อมูลที่ถูกต้องเเละตัว tokenยังไม่หมดอายุ ตัว Server ก็จะส่งมอบ resource ที่นาย A ต้องการเข้าถึงไปยัง clientClient

JWT (6).jpg

สรุป

วิธีในการทำ authentication มีอยู่หลายวิธี ซึ่งตัวเอกในบทนี้ก็คือ token-Token-based ชนิดหนึ่งที่ชื่อว่า Json Web Token (JWT) ที่จะทำ encode ข้อมูลเเบบเฉพาะตัวเเละเก็บข้อมูลผู้ใช้ไว้ที่ตัวมันเพื่อเป็นบัตรผ่านทางในการร้องขอการเข้าถึงทรัพยากรภายในเว็บไซต์นั้น  ได้นั่นเอง โดยในบทต่อไปจะเป็นการพูดถึง jwtJWT ในมุมมองที่ลึกขึ้นเเละส่วนประกอบข้างในของตัวมัน ถ้าพร้อมเเล้วก็ไปกันเลย!