• โทเค็น
  • oidc
  • รีเฟรชโทเค็น
  • การหมุนเวียน
  • ความปลอดภัย

การหมุนเวียนรีเฟรชโทเค็นคืออะไรและทำไมจึงสำคัญ?

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

Charles
Charles
Developer

รีเฟรชโทเค็นคืออะไร?

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

ในระหว่างการแนะนำ เราได้กล่าวไว้ว่า ใน Logto เพื่อปกป้องความปลอดภัยของรีเฟรชโทเค็นของคุณ เราได้บังคับใช้กลไก "การหมุนเวียนรีเฟรชโทเค็น" เป็นค่าเริ่มต้น

แต่แท้จริงแล้ว "การหมุนเวียนรีเฟรชโทเค็น" คืออะไร และมันเป็นประโยชน์ต่อผู้ใช้งานของเราอย่างไร มาดำน้ำลึกกันเลย!

การหมุนเวียนรีเฟรชโทเค็นคืออะไร?

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

ทำไมเราต้องการการหมุนเวียนรีเฟรชโทเค็น?

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

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

แนวปฏิบัติที่ดีที่สุดในการดำเนินการหมุนเวียนรีเฟรชโทเค็น

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

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

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

ในกรณีข้างต้น หลังจากที่มีการสัญญาณเตือน ลูกค้าที่ถูกต้องตามกฎหมายสามารถเข้าสู่ระบบอีกครั้งผ่านกระแสการเข้าสู่ระบบเพื่อรับรีเฟรชโทเค็นใหม่ ในทางกลับกัน ผู้โจมตีจะสูญเสียการควบคุมระบบของคุณและถูกบล็อกไว้ภายนอก

เมื่อใดที่การหมุนเวียนรีเฟรชโทเค็นเกิดขึ้น?

ใน Logto พฤติกรรมเริ่มต้นของการหมุนเวียนรีเฟรชโทเค็นระบุว่า:

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

ฉันสามารถเปิด/ปิดการหมุนเวียนรีเฟรชโทเค็นใน Logto ได้อย่างไร?

ในคอนโซลผู้ดูแลระบบ Logto ไปที่ Admin Console > Applications และเลือกแอปพลิเคชันที่คุณต้องการสลับการหมุนเวียนรีเฟรชโทเค็น ในหน้ารายละเอียดแอปพลิเคชัน ไปที่แท็บ "การตั้งค่าขั้นสูง" และเลื่อนลงไปที่ด้านล่าง คุณจะพบสวิตช์พร้อมกับการตั้งค่าที่มีประโยชน์อื่นๆ

รายละเอียดแอป

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

สรุป: การหมุนเวียนรีเฟรชโทเค็นคืออะไรและทำไมมันจึงสำคัญ?

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

Logto ดำเนินตามแนวปฏิบัติที่ดีที่สุดที่นำโดยอุตสาหกรรมและมักให้ความปลอดภัยของผู้ใช้อยู่ในลำดับความสำคัญสูงสุดเสมอ

หวังว่าโพสต์นี้จะอธิบายข้อสงสัยของคุณเกี่ยวกับกลไกการหมุนเวียนรีเฟรชโทเค็นได้ดี แจ้งให้เราทราบหากยังมีบางอย่างที่ไม่ชัดเจน ความคิดเห็นและข้อเสนอแนะของคุณเป็นที่ยินดีเสมอ!

ลอง Logto วันนี้และยอมรับประสบการณ์การตรวจสอบที่ปลอดภัยยิ่งขึ้น