• jwt
  • authentication
  • session
  • token
  • revoke jwt

JWT เทียบกับการรับรองความถูกต้องของเซสชัน

เรียนรู้ความแตกต่างระหว่างการรับรองความถูกต้องแบบใช้เซสชันและ JWT สำรวจการแลกเปลี่ยน ข้อดี และกรณีการใช้งานเพื่อเลือกแผนการรับรองความถูกต้องที่เหมาะสมสําหรับแอปของคุณ

Ran
Ran
Product & Design
Darcy Ye
Darcy Ye
Developer

โดยทั่วไปแล้ว ขั้นตอนแรกในการใช้งานแอปพลิเคชันคือ การรับรองความถูกต้อง ซึ่งผู้ใช้ปลายทางจะให้ข้อมูลประจําตัวของตนเพื่อลงชื่อเข้าใช้ เมื่อลงชื่อเข้าใช้เสร็จสมบูรณ์ ระบบระบุตัวตน (เช่น ผู้ให้บริการระบุตัวตน, เซิร์ฟเวอร์ตรวจสอบสิทธิ์ ฯลฯ) จะทราบว่าเป็นใครและมีสิทธิ์เข้าถึงทรัพยากรใดบ้าง

เนื่องจาก HTTP เป็นแบบไม่มีสถานะโดยสมบูรณ์ คําขอแต่ละรายการในเซสชันจะเป็นอิสระและไม่สามารถเรียกข้อมูลจากเซสชันก่อนหน้านั้นได้ การรับรองความถูกต้องอีกครั้งสําหรับผู้ใช้ในทุกๆ การกระทําเป็นเรื่องยุ่งยากและเป็นอันตรายต่อประสบการณ์ผู้ใช้

มาเข้าสู่ การรับรองความถูกต้องแบบใช้เซสชัน และ การรับรองความถูกต้องโดยใช้ JWT (JSON Web Tokens) ซึ่งเป็นสองวิธีที่นิยมในการดูแลสถานะการรับรองความถูกต้อง แต่ละวิธีมีข้อดีและการแลกเปลี่ยนที่ไม่เหมือนกัน และการเลือกใช้ระหว่างพวกมันนั้นขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชันของคุณ หากคุณกําลังตัดสินใจระหว่างทั้งสองวิธี คู่มือนี้พร้อมที่จะช่วยคุณ

การรับรองความถูกต้องแบบใช้เซสชันคืออะไร?

การรับรองความถูกต้องแบบใช้เซสชันอาศัย เซิร์ฟเวอร์ ในการดูแลบันทึกสถานะการรับรองความถูกต้องของผู้ใช้ โดยการสร้างและจัดการเซสชัน เซิร์ฟเวอร์ช่วยให้ผู้ใช้ยังคงลงชื่อเข้าใช้ต่อไปและทํางานร่วมกับแอปพลิเคชันต่อได้โดยไม่ต้องป้อนข้อมูลประจําตัวใหม่ในทุกๆ คําขอ

การรับรองความถูกต้องแบบใช้เซสชันทํางานอย่างไร?

การสร้างเซสชัน

  1. ผู้ใช้รับรองความถูกต้องและให้ข้อมูลประจําตัวบางรายการ (เช่น อีเมลและรหัสผ่าน)
  2. ถ้าข้อมูลประจําตัวถูกต้อง เซิร์ฟเวอร์จะสร้างบันทึกถาวรเพื่อแทน เซสชัน นั้น เซสชันจะมีข้อมูลเช่น สายสตริงสุ่ม ตัวระบุตัวตนผู้ใช้ เวลาเริ่มต้นเซสชัน เวลาเซสชันหมดอายุ ฯลฯ
  3. SessionID ถูกเก็บใน ฐานข้อมูล และส่งกลับไปยัง ไคลเอ็นต์ ของผู้ใช้เป็น คุกกี้

การตรวจสอบเซสชัน

  1. กระบวนการนี้สามารถถูกเรียกใช้ด้วยตนเองโดยผู้ใช้ (เช่น การคลิกแท็บ การรีเฟรชหน้า) หรืออัตโนมัติโดยไคลเอ็นต์ (เช่น ในการโหลดหน้าแรกหรือผ่าน API calls พร้อม SessionID)
  2. การเรียกแต่ละครั้งหลังจากนั้นจะส่งคําขอ HTTP จาก ไคลเอ็นต์ โดยมี คุกกี้ของเซสชัน ไปยัง เซิร์ฟเวอร์
  3. เซิร์ฟเวอร์ตรวจสอบ SessionID โดยการปรึกษาข้อมูลเซสชันที่เก็บไว้บนเซิร์ฟเวอร์
  4. ถ้าถูกต้อง เซิร์ฟเวอร์ดำเนินการตามคำขอและอนุญาตให้ผู้ใช้

วิธีเพิกถอนเซสชัน?

เซสชันสามารถถูกทำให้เป็นโมฆะได้ในเวลาจริง ซึ่งมีประโยชน์ในสถานการณ์ที่การเพิกถอนสิทธิ์เข้าถึงอย่างรวดเร็วมีความจำเป็น

  • ผู้ใช้ล็อกเอาต์ด้วยตนเอง: เซิร์ฟเวอร์จะลบบันทึกเซสชัน ทำให้ผู้ใช้ล็อกเอาต์ออกไป
  • ผู้ดูแลระบบบังคับล็อกเอาต์ผู้ใช้: ผู้ดูแลหรือระบบสามารถยุติเซสชันเฉพาะได้โดยการลบออกจากฐานข้อมูล ตัวอย่างเช่น ในระหว่างการละเมิดความปลอดภัย
  • เซสชันหมดอายุ: เซสชันสามารถหมดอายุโดยอัตโนมัติหลังจากระยะเวลาที่กำหนดของการไม่ใช้งาน หรือขีดจำกัดเวลาคงที่

ข้อดีของการรับรองความถูกต้องแบบใช้เซสชัน

  • ง่ายและเชื่อถือได้: บันทึกเซสชันให้แหล่งข้อมูลที่ชัดเจนและลำดับที่อยู่ตรงกลาง ซึ่งทำให้การตัดสินใจอนุญาตปลอดภัยขึ้นและน่าเชื่อถือ
  • การเพิกถอนเวลา-จริง: โดยการลบหรือทำให้บันทึกเซสชันเป็นโมฆะ การเข้าถึงของผู้ใช้สามารถเพิกถอนได้อย่างรวดเร็ว

ข้อเสียของการรับรองความถูกต้องแบบใช้เซสชัน

  • ความล่าช้าในระบบกระจาย: การรักษาข้อมูลเซสชันบนเซิร์ฟเวอร์หลายเซิร์ฟเวอร์ต้องการการซิงค์ข้อมูลเซสชันเสมอซึ่งทำให้การดำเนินการล่าช้าเนื่องจากเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลเซสชันทุกครั้งที่มีการร้องขอข้อมูล
  • การใช้ทรัพยากรสูง: แต่ละเซสชันใช้ทรัพยากรเซิร์ฟเวอร์เมื่อต้องการขยายฐานผู้ใช้ ซึ่งส่งผลต่อประสิทธิภาพการทำงาน
  • ความเสี่ยงด้านความปลอดภัย: เซสชันสามารถถูกแฮกได้ (ผ่านคุกกี้เซสชันที่ถูกขโมย) ซึ่งอาจอนุญาตให้เข้าถึงบัญชีผู้ใช้โดยไม่ได้รับอนุญาต
  • การใช้งานที่จำกัดสำหรับ API: การรับรองความถูกต้องแบบใช้เซสชันไม่เหมาะสำหรับแอพพลิเคชั่นมือถือ เนื่องจากข้อมูลของเซสชันถูกเก็บบนเซิร์ฟเวอร์ซึ่งสามารถเพิ่มโหลดและความซับซ้อนได้เมื่อมีผู้ใช้มาก นอกจากนี้ การใช้คุกกี้ยังยากที่จะจัดการบนอุปกรณ์มือถือ

การรับรองความถูกต้องแบบ JWT คืออะไร?

JSON Web Tokens (JWTs) ใช้วิธีที่แตกต่างโดยฝังข้อมูลผู้ใช้ที่เกี่ยวข้องทั้งหมดโดยตรงลงในโทเค็นโดยใช้วัตถุ JSON ต่างจากวิธีการที่ใช้เซสชัน JWTs เป็นการใช้สถานะที่ไม่มีสถานะหมายความว่าเซิร์ฟเวอร์จะไม่จัดการบันทึกการรับรองความถูกต้อง

การรับรองความถูกต้องแบบ JWT ทำงานอย่างไร?

JWT ประกอบด้วยสามส่วน: header, payload, และ signature

  • header ประกอบด้วยอัลกอริทึมที่ใช้ในการเซ็นชื่อ (เช่น HS256) และประเภทของโทเค็น (JWT)
  • payload ประกอบด้วยข้อเรียกร้องสำคัญ เช่น ตัวตนของผู้ใช้ บทบาทของผู้ใช้ และเวลาหมดอายุ
  • signature ใช้กุญแจในการเซ็นชื่อ header และ payload ซึ่งช่วยยืนยันว่าลายเซ็นไม่ได้ถูกดัดแปลง

image.png

การออก JWT

  1. ไคลเอ็นต์ส่งข้อมูลประจําตัวของผู้ใช้ไปยัง เซิร์ฟเวอร์รับรองความถูกต้อง (ผู้ให้บริการรูปลักษณ์ทั่วโลกมีประโยชน์อย่างยิ่งในการจัดการการเข้าถึงผ่านหลายโดเมน)
  2. เมื่อการรับรองความถูกต้องสำเร็จ เซิร์ฟเวอร์จะสร้าง JWT ที่รวม header, payload, และ signature
  3. AuthServer ส่งโทเค็นที่ออกไปยัง ไคลเอ็นต์ ไคลเอ็นต์เก็บ JWT (เช่น ใน cookies, localStorage, หรือ sessionStorage)

กระบวนการทำงานตามเซสชันมีขั้นตอนเหมือนกัน อย่างไรก็ตามหลังจากการรับรองความถูกต้อง ข้อมูลผู้ใช้จะถูกเก็บบนเซิร์ฟเวอร์ภายในเซสชัน ในขณะที่ JWTs อาศัยโทเค็นที่ส่งไปยังไคลเอ็นต์เพื่อการจัดเก็บและการใช้งานในภายหลัง

การตรวจสอบโทเค็น

  1. สำหรับคำขอ API ต่อไป ไคลเอ็นต์ส่ง JWT ในส่วนหัว Authorization (Bearer <token>)
  2. เซิร์ฟเวอร์ตรวจสอบลายเซ็นของ JWT ด้วยการใช้กุญแจลับหรือกุญแจสาธารณะ และตรวจสอบข้อเรียกร้องของมัน (เช่น การหมดอายุ ผู้เผยแพร่)
  3. ถ้าโทเค็นถูกต้อง เซิร์ฟเวอร์จะให้สิทธิ์การเข้าถึงทรัพยากรที่ร้องขอต่อไคลเอ็นต์

การรับรองความถูกต้องแบบใช้เซสชันต้องการให้เซิร์ฟเวอร์สร้างคำร้องไปยังที่เก็บข้อมูลเซสชัน ซึ่งอาจทำได้ช้า โดยเฉพาะถ้าอ้างอิงถึงฐานข้อมูลภายนอกหรือฐานข้อมูลที่มีการรวมกัน ในทางกลับกัน การรับรองความถูกต้องแบบ JWT เป็นการใช้สถานะที่ไม่มีสถานะ พร้อมข้อมูลที่จำเป็นทั้งหมดที่เก็บในโทเค็นของไคลเอ็นต์ และใช้ลายเซ็นเพื่อตรวจสอบความปลอดภัย เป็นการลบภาระการจัดการเซสชันทำให้เร็วขึ้นและขยายได้ง่ายขึ้นโดยเฉพาะในระบบกระจาย

วิธีเพิกถอน JWT?

โดยทางฝั่งไคลเอ็นต์ การเซ็นออกปกติหมายถึงการล้างเซสชันท้องถิ่นและลบโทเค็น (ID, access, refresh token) ออกจากหน่วยความจำ อย่างไรก็ตาม สำหรับการรับรองความถูกต้องแบบ JWT นี่หมายถึงการเซ็นออกเฉพาะในท้องถิ่น ทิ้งเซสชันที่รวมศูนย์บนเซิร์ฟเวอร์การอนุญาต ดังนั้นผู้ใช้อาจยังสามารถเข้าถึงแอปอื่นๆ ภายใต้เซสชันเดียวกันนี้ได้จนกว่าโทเค็นจะหมดอายุหรือถูกยุติด้วยตัว

การเพิกถอน JWT (JSON Web Token) ยากกว่าเนื่องจาก JWTs เป็นการใช้สถานะที่ไม่มีสถานะและไม่สามารถทำให้เป็นโมฆะหลังจากออกไปแล้ว เว้นแต่จะมีการเปิดใช้งานกลยุทธ์เฉพาะ. วิธีทั่วไปได้แก่:

  • ระยะเวลาหมดอายุสั้น: ตั้งค่า exp ที่สั้น (เช่น 15 นาที) สำหรับ JWT เมื่อลายเซ็นหมดอายุ ผู้ใช้ต้องรับรองความถูกต้องใหม่ สิ่งนี้ลดความเสี่ยงหากโทเค็นถูกรุกล้ำ เนื่องจากผู้โจมตีสามารถใช้ได้เพียงเวลาจำกัดเท่านั้น ในการรักษาประสบการณ์ผู้ใช้ที่ดีที่สุด, refresh token สามารถใช้เพื่อลดความไม่สะดวกของการรับรองความถูกต้องใหม่
  • รายการโทเค็นดำ: สําหรับกรณีสําคัญ (เช่น การล็อกเอาต์ผู้ใช้ การเปลี่ยนรหัสผ่าน) เก็บรายการดำของโทเค็นที่ถูกเพิกถอน เซิร์ฟเวอร์จะตรวจสอบโทเค็นที่เข้ามาเทียบกับรายการนี้และปฏิเสธการจับคู่ข้อนี้ ถึงแม้ว่าจะมีประสิทธิภาพก็ตาม แต่ต้องการการติดตามโทเค็นที่เพิกถอน ซึ่งขัดต่อธรรมชาติที่ไม่มีสถานะของ JWTs และอาจไม่ประสิทธิภาพหากรายชื่อเติบโตมาก
  • จุดสิ้นสุดการเพิกถอน: ให้มีจุดสิ้นสุดการเพิกถอนใน เซิร์ฟเวอร์การอนุญาต ซึ่งโทเค็น (เช่น refresh token) สามารถทำให้เป็นโมฆะ เมื่อลายเซ็นถูกยกเลิก โทเค็นการเข้าถึงที่ออกมาจากมันจะไม่ได้รับการต่อใหม่อีก วิธีนี้เหมาะใน OAuth2 โฟลว์

ข้อดีของการรับรองความถูกต้องแบบ JWT

  • เร็วและให้ข้อมูลมากขึ้น: ธรรมชาติที่บรรจุตนเองของ JWTs ทำให้การตรวจสอบทางฝั่งไคลเอ็นต์เร็วขึ้นและมีประสิทธิภาพมากขึ้น โดยไม่ต้องมีการติดต่อกับเซิร์ฟเวอร์ พวกมันยังสามารถรวม ข้อเรียกร้องที่กำหนดเอง (เช่น บทบาทของผู้ใช้หรือข้อมูลอื่น ๆ ที่เกี่ยวข้อง) ภายในโทเค็น ทำให้เซิร์ฟเวอร์สามารถกำหนดบทบาทได้โดยไม่ต้องสอบถามจากฐานข้อมูล
  • ปลอดภัยมากขึ้น: JWTs ใช้เทคนิคการเซ็นชื่อและการเข้ารหัส ทำให้การโจมตีทำได้ยากขึ้น
  • รองรับข้ามโดเมน: JWTs เหมาะสำหรับ Single Sign-On (SSO) และการรับรองความถูกต้องข้ามโดเมน ทำให้ผู้ใช้สามารถรับรองความถูกต้องในหลายโดเมนหรือบริการด้วยโทเค็นเดียวกัน
  • เป็นมิตรกับมือถือ: JWTs ใช้งานได้ดีสำหรับแอปพลิเคชันมือถือที่ต้องการการรับรองความถูกต้องที่ไม่มีสถานะ โทเค็นสามารถเก็บในฝั่งไคลเอ็นต์และส่งไปพร้อมกับแต่ละคำขอ เพิ่มประสิทธิภาพและการใช้ที่ง่ายขึ้น

ข้อเสียของการรับรองความถูกต้องแบบ JWT

  • JWT ไม่ได้อัปเดตแบบเรียลไทม์

    เมื่อ JWT ได้ถูกเซ็นชื่อ มันไม่สามารถถูกเพิกถอนหรืออัปเดตได้ และจะถือว่าถูกต้องตราบเท่าที่ลายเซ็นยังถูกต้องและยังไม่หมดอายุ

    ถ้าสิทธิ์การเข้าถึงของผู้ใช้เปลี่ยนแปลง (มักจะลดลง) ผู้ใช้ยังคงมีการเข้าถึงแหล่งข้อมูลที่ถูกง่ายเมื่อ JWT หมดอายุคล้ายกับกรณีที่ข้อมูลการอนุญาตของผู้ใช้เปลี่ยนแปลง (เช่นข้อมูลที่อิงบทบาทของผู้ใช้) ขอบเขตการอนุญาตใหม่จะไม่มีผลจนกว่า JWT เก่าจะหมดอายุ พูดง่ายๆว่า JWTs ไม่เหมาะสําหรับการเพิกถอนเรียลไทม์แต่ผู้ใช้สามารถตั้งค่าเวลาหมดอายุที่เหมาะสมเพื่อลดปัญหานี้

  • หลายอุปกรณ์และการเพิกถอนขัดแย้งกัน

    ไม่สามารถตรวจสอบความถูกต้องของ JWTs ที่ได้ออกไปแล้วทั้งหมดก่อนที่พวกมันจะหมดอายุได้เพื่อดำเนินการของการเพิกถอนของผู้ใช้ทั้งหมดในอุปกรณ์ต่างๆ แม้ว่าทางทฤษฎีอาจทำได้โดยการเพิกถอนกุญแจที่ใช้ในการเซ็นเพื่อทำให้ JWT เป็นโมฆะ แต่จะถือว่าเป็นการทำให้ JWTs ทั้งหมดที่ใช้กุญแจนั้นเป็นโมฆะและกระบวนการจัดการกุญแจแคชจะทำให้วิธีนี้เป็นไปไม่ได้ในกระบวนการเพิกถอนที่ง่ายของผู้ใช้

มีผู้ให้บริการระบุตัวตนบางตัวอาจมีโซลูชันที่สร้างขึ้นล่วงหน้าสำหรับปัญหาเหล่านี้ของ JWT สําหรับข้อมูลเพิ่มเติม โปรดตรวจสอบรายละเอียดใน "แนวทางปฏิบัติที่ดีที่สุดเพื่อปรับปรุงประสบการณ์การรับรองความถูกต้องของ JWT"

ความแตกต่างระหว่าง JWT และเซสชันคืออะไร?

เซสชันและ JWTs เป็นอีกสองวิธีที่ใช้กันทั่วไปในการจัดการบริบทการรับรองความถูกต้องและการอนุญาตในโลกแห่ง HTTP ที่ไม่มีสถานะ ในขณะที่วิธีการทั้งสองมีข้อดีและข้อเสียที่แตกต่างกันออกไป แต่ละวิธีมีความได้เปรียบและข้อเสีย

เซสชันมีการรับรองความมั่นคงที่มากขึ้นสําหรับการอนุญาตการทําคำขอแต่ละครั้งและง่ายต่อการใช้อยู่ในระดับเครือข่าย แต่ต้องตรวจสอบกับฐานข้อมูลเซิร์ฟเวอร์ซึ่งมีความล่าช้าในการดำเนินการและอาจไม่ดีต่อประสบการณ์ผู้ใช้ในแอปพลิเคชันที่ต้องการความรวดเร็วสูง

ในทางกลับกัน JWTs นั้นมีความได้เปรียบในเรื่องของการอนุญาตที่รวดเร็วและการทำงานร่วมกับแอปพลิเคชันภายนอกแต่ต้องใช้ความพยายามมากขึ้นในการจัดการกับความปลอดภัย เช่นการใช้ webhooks เพื่อแจ้งเตือนไคลเอ็นต์เมื่อผู้ใช้งานถูกเพิกถอน การทำให้ไคลเอ็นต์ลบ JWT ที่แคชอยู่และบังคับให้ผู้ใช้รับรองความถูกต้องใหม่

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

เซสชันเทียบกับ JWT: เลือกวิธีที่เหมาะสม

วิธีการรับรองความถูกต้องของคุณควรสอดคล้องกับสถาปัตยกรรมของแอปพลิเคชันและความต้องการเฉพาะของคุณ ต่อไปนี้คือคำแนะนำที่รวดเร็วเพื่อช่วยให้คุณตัดสินใจ:

เมื่อใดควรใช้การรับรองความถูกต้องแบบใช้เซสชัน

การรับรองความถูกต้องแบบใช้เซสชันทำงานได้ดีที่สุดเมื่อคุณต้องการการควบคุมเซสชันเรียลไทม์ ต้องการการจัดการแบบรวมศูนย์ หรือการขยายไม่ได้เป็นข้อกังวลหลัก นี่คือที่ที่เซสชันเปล่งประโยชน์:

  • เว็บแอปพลิเคชันที่มีเซสชันต่อเนื่อง

    สำหรับแพลตฟอร์มอย่างร้านค้าออนไลน์ เซสชันมีความสำคัญในการติดตามผู้ใช้ ตะกร้าสินค้า และความชอบของผู้ใช้ในระหว่างการเข้าชม

  • แอปพลิเคชันที่ต้องการการควบคุมเซสชันเรียลไทม์

    แอปพลิเคชันเช่นธนาคารหรือบริการทางการเงินได้รับประโยชน์จากข้อมูลเซสชันที่ถูกควบคุมโดยเซิร์ฟเวอร์ ซึ่งทำให้การจัดการสิทธิ์การเข้าถึงและการรักษาความปลอดภัยได้อย่างมั่นคง

  • ระบบที่ใช้เซิร์ฟเวอร์เดียวหรือขนาดเล็ก

    เครื่องมือภายในหรือแอปพลิเคชันขนาดเล็กที่ไม่มีความต้องการที่จะขยายเก็บข้อมูลมากมายได้รับประโยชน์จากการจัดการเซสชันที่ง่ายดายสำหรับความง่ายในการใช้และความเชื่อถือได้

เมื่อใดควรใช้การรับรองความถูกต้องแบบ JWT

การรับรองความถูกต้องแบบ JWT เหมาะสมกว่าสำหรับแอปพลิเคชันที่ให้ความสำคัญกับการขยายประสิทธิภาพและระบบกระจาย เหมาะอย่างยิ่งสำหรับการโต้ตอบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์แบบไม่ถามสถานะ โปรดพิจารณาการรับรองความถูกต้องแบบใช้โทเค็นสำหรับต่อไปนี้:

  • Single Sign-On (SSO)

    JWTs เหมาะสำหรับ Single Sign-On อนุญาตให้ผู้ใช้รับรองความถูกต้องเพียงครั้งเดียวและเข้าถึงบริการหรือแอปพลิเคชันหลายแห่งอย่างราบรื่นด้วยการใช้โทเค็นเดียวกัน แชร์คำอธิบายที่ละเอียดเกี่ยวกับ แอปพลิเคชันที่ใช้คลาวด์อย่างปลอดภัยที่ใช้นโยบาย OAuth 2.0 และ OIDC ด้วยรูปแบบ JWT สำหรับทั้ง โทเค็นการเข้าถึง และ โทเค็น ID

  • แอปพลิเคชันมือถือ

    แอปพลิเคชันมือถือส่วนมากบริการ JWTs สำหรับการรับรองความถูกต้องเนื่องจากโทเค็นสามารถถูกเก็บอย่างปลอดภัยบนอุปกรณ์และส่งไปพร้อมกับแต่ละคำขอ API เรียนรู้การผสานรวม JWT ได้อย่างรวดเร็วสำหรับ Android / iOS

  • สถาปัตยกรรมไมโครเซอร์วิส

    ในสภาพแวดล้อมไมโครเซอร์วิส JWTs อนุญาตให้บริการแต่ละอย่างตรวจสอบความถูกต้องของโทเค็นได้อย่างอิสระโดยไม่ต้องพึ่งพาที่เก็บข้อมูลเซสชันศูนย์ กลางมั่นใจความขยายได้และประสิทธิภาพ

  • การรับรองความถูกต้องข้ามโดเมน

    JWTs โดดเด่นในสถานการณ์ที่เกี่ยข้องกับหลายโดเมนหรือซับโดเมน (เช่น api.example.com, dashboard.example.com, และ docs.example.com) โดยไม่ต้องพึ่งพาสิ่งที่ต้องการเพิ่มเติมในการจัดการ

  • API และบริการเว็บ

    RESTful APIs และบริการเว็บนิยมใช้ JWTs เนื่องจากเป็นน้ำหนักเบา พกพาได้ และทำให้ไม่ต้องการการจัดการเซสชันในฝั่งเซิร์ฟเวอร์ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการรับรองความถูกต้องระหว่างเครื่องต่อเครื่อง machine-to-machine authentication สำหรับสถานการณ์ที่แอปพลิเคชันของคุณต้องติดต่อเรียกร้องทรัพยากรโดยตรง

แนวทางปฏิบัติที่ดีที่สุดในการปรับปรุงประสบการณ์การรับรองความถูกต้องด้วย JWT

การรับรองความถูกต้องด้วย JWT เป็นเครื่องมือที่ดีแต่สามารถประสบปัญหาที่ส่งผลต่อประสบการณ์ผู้ใช้ Logto เสนอโซลูชั่นที่ง่ายและเชื่อถือได้เพื่อเอาชนะอุปสรรคเหล่านี้ทำให้มันเป็นตัวเลือกที่ดีที่สุดสำหรับการรับรองความถูกต้องที่มีความปลอดภัยและมีประสิทธิภาพ

การจัดการปัญหาการเซ็นออกของผู้ใช้ด้วย JWT

ปัญหาทั่วไปอย่างหนึ่งในการรับรองความถูกต้องแบบ JWT คือการมั่นใจว่ามีประสบการณ์การเซ็นออกที่ถูกต้องของผู้ใช้ Logto ทำให้กระบวนการนี้ง่ายขึ้นด้วย SDK กล่องเครื่องมือของมันที่ตุ้ออกอย่างง่ายดาย

  • โดยการลบโทเค็นและการล้างเซสชันท้องถิ่นในฝั่งไคลเอ็นต์และเปลี่ยนเส้นทางไปยัง Logto's end session endpoint คุณสามารถยุติเซสชันทั้งในฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ได้อย่างง่ายดาย
  • นอกจากนี้ Logto รองรับ back-channel logout ซึ่งอนุญาตให้ AuthServer แจ้งเตือนไคลเอ็นต์ทุกรายการที่แชร์เซสชันเดียวกันเมื่อผู้ใช้ลงชื่อออก

สิ่งนี้ทำให้การจัดการเซสชันมีความสอดคล้องและปลอดภัยทั่วทั้งระบบของคุณ มาดูวิธีจัดการเซ็นออก เรียนรู้เพิ่มเติมเกี่ยวกับการจัดการการเซ็นออก

การจัดการการเปลี่ยนแปลงการอนุญาตของผู้ใช้

การจัดการเปลี่ยนแปลงสิทธิ์ใช้งานของผู้ใช้แบบเวลาจริงด้วย JWT อาจท้าทาย เนื่องจาก JWTs ถูกออกแบบให้ไม่มีสถานะใดๆ สิทธิ์หรือบทบาทที่ใหม่ๆ อาจไม่มีผลจนกว่าโทเค็นหมดอายุ Logto เสนอกลยุทธ์เพื่อจัดการสิ่งนี้อย่างมีประสิทธิภาพ:

  • สำหรับลดการอนุญาตผู้ใช้ในระยะเวลาที่สั้นลง: ใช้เวลาหมดอายุโทเค็นที่สั้นกว่าหรือทำตรวจการอนุญาตตามเวลาจริงผ่านเรียก API
  • สำหรับเพิ่มสิทธิ์การใช้งานใหม่ให้กับผู้ใช้: อัปเดต AuthServer เพื่อรวมขอบเขตอนุญาตใหม่และขอความยินยอมใหม่จากผู้ใช้เพื่อเสริมการเปลี่ยนแปลงเหล่านี้

โซลูชั่นเหล่านี้ช่วยให้การอนุญาตเป็นไปตามเวลาจริงและให้ระบบที่ปลอดภัยมากขึ้น มีปฏิศุลักษณ์ในการบังคับใช้ เวลาที่มีการเปลี่ยนอำนาจบทบาท เรียนรู้เพิ่มเติมเกี่ยวกับการจัดการการเปลี่ยนแปลงสิทธิ์

Logto กับโครงสร้างจําระบุเข้าถึงที่ขยายได้ มอบการแก้ปัญหาสิ่งระบตุลักษณ์ที่ครบครันที่มีทั้ง บริการคลาวด์ และ แบบโอเพนซอร์ส