การหมุนเวียนรีเฟรชโทเค็นคืออะไรและทำไมจึงสำคัญ?
มาเจาะลึกกันและพูดถึงว่าทำไมการหมุนเวียนรีเฟรชโทเค็นจึงเป็นวิธีที่มีประสิทธิภาพในการปกป้องความปลอดภัยของรีเฟรชโทเค็นของคุณ
รีเฟรชโทเค็นคืออะไร?
รีเฟรชโทเค็นเป็นโทเค็นประเภทพิเศษที่ใช้เพื่อรับโทเค็นการเข้าถึงใหม่เมื่อโทเค็นการเข้าถึงปัจจุบันหมดอายุ ดูโพสต์ก่อนหน้าของเราที่ ทำความเข้าใจโทเค็นใน 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 วันนี้และยอมรับประสบการณ์การตรวจสอบที่ปลอดภัยยิ่งขึ้น