ทำความเข้าใจเกี่ยวกับ Redirect URI และ Authorization Code Flow ใน OpenID Connect (OIDC)
มาดูที่ Redirect URI อย่างละเอียด เพราะเป็นส่วนประกอบด้านความปลอดภัยที่สำคัญในกระบวนการยืนยันตัวตนของ OIDC
มาดูที่ Redirect URI อย่างละเอียด เพราะเป็นส่วนประกอบด้านความปลอดภัยที่สำคัญในกระบวนการยืนยันตัวตนของ OIDC
Redirect URI หรือที่รู้จักกันว่า URL ตอบกลับ เป็นส่วนประกอบด้านความปลอดภัยที่สำคัญในกระบวนการยืนยันตัวตนของ OIDC มันระบุ URL ที่ผู้ใช้จะถูกส่งไปเมื่อทำการลงชื่อเข้าใช้ผ่านผู้ให้บริการ OIDC สำเร็จสำคัญกว่านั้นคือ มันเป็นที่ที่แอปพลิเคชันของคุณได้รับโค้ดการอนุญาตที่จำเป็นสำหรับการรับโทเค็น
ดูเพิ่มเติมที่ Redirect URI wiki สำหรับรายละเอียดเพิ่มเติม
Authorization Code Flow (ถูกระบุไว้ใน OAuth 2.0 RFC 6749, section 4.1) เป็นวิธีการยืนยันตัวตนพื้นฐานใน OIDC มันรวมถึงการแลกเปลี่ยนโค้ดการอนุญาตกับโทเค็นการเข้าถึง และอาจรวมถึง refresh token ด้วย วิธีนี้เหมาะสำหรับแอปพลิเคชันที่สามารถเก็บรักษาความลับของไคลเอนต์ได้อย่างปลอดภัย เช่น แอปพลิเคชันเว็บฝั่งเซิร์ฟเวอร์
ดูเพิ่มเติมที่ Authorization Code Flow wiki สำหรับรายละเอียดเพิ่มเติม
ใน Authorization Code Flow, Redirect URI เป็นเป้าหมายที่จะส่งโค้ดการอนุญาตจากผู้ให้บริการ OIDC หลังจากที่ผู้ใช้ยืนยันตัวตนสำเร็จ มันต้องถูกลงทะเบียนล่วงหน้ากับผู้ให้บริการ OIDC เพื่อให้แน่ใจว่าปลอดภัยและป้องกันการเปลี่ยนเส้นทางที่ไม่ได้รับอนุญาต
นี่คือวิธีที่คุณสามารถลงทะเบียน Redirect URI ใน Logto Console:

เมื่อเริ่มต้นการลงชื่อเข้าใช้:
client_id, response_type, scope และ redirect_uri.redirect_uri ที่ระบุ รวมถึงโค้ดการอนุญาตเป็นพารามิเตอร์การสอบถามผู้ให้บริการ OIDC จะตรวจสอบ redirect_uri กับลิสต์ของ URIs ที่ลงทะเบียนล่วงหน้า หากมีความไม่ตรงกัน จะได้รับผลลัพธ์เป็นข้อผิดพลาด invalid_redirect_uri ซึ่งจะเพิ่มความปลอดภัยโดยการป้องกันไม่ให้จุดสิ้นสุดที่ไม่ได้รับอนุญาตได้รับโทเค็น
ในกรณีการใช้งานจริง แนวปฏิบัติที่ดีที่สุดโดยทั่วไปคือการประกาศหน้า "Callback" โดยเฉพาะและรวม router / deep link ที่อนุญาตให้เข้าถึงโดยตรงจากภายนอก ลิงค์นี้ควรถูกใช้เป็น redirect URI
สมมติว่าคุณมีแอปพลิเคชันเว็บประเภทหน้าเดียวที่ทำงานบน https://my-app.com ซึ่งปกติแล้ว redirect URI จะถูกประกาศเป็น https://my-app.com/callback
หากเป็นแอปบนมือถือ native ปกติ redirect URI จะเริ่มต้นด้วย custom scheme เช่น com.company://myapp/callback
แนวปฏิบัติที่ดีที่สุดอื่น ๆ รวมถึง:
เพื่อจัดการโค้ดการอนุญาตที่ถูกส่งกลับไปยัง redirect_uri ของคุณ ให้ปฏิบัติตามขั้นตอนเหล่านี้:
สกัดโค้ดการอนุญาต: นำค่าจากพารามิเตอร์โค้ดในสตริงการส่งคืนของ redirect URI
แลกเปลี่ยนโค้ดการอนุญาตสำหรับโทเค็น: เขียนคำร้อง POST ไปยังจุดสิ้นสุดโทเค็นของผู้ให้บริการ OIDC รวมถึง:
client_id: ID ของแอปพลิเคชันของคุณในผู้ให้บริการ OIDCcode: โค้ดการอนุญาตที่ได้รับจาก redirect URIcode_verifier: สตริงสุ่มที่สร้างบนไคลเอนต์redirect_uri: URI เดียวกันที่ใช้ในการขออนุญาตgrant_type: ชนิดของการให้ ซึ่งมักเป็น authorization_codeLogto SDKs เป็นชุดพัฒนาที่เขียนในภาษาหรือเฟรมเวิร์คเฉพาะ เช่น Logto React SDK, Next.js SDK และ Swift SDK การใช้ SDK จะช่วยทำให้ทุกอย่างง่ายขึ้นโดยการเรียกเพียงหนึ่งหรือสองฟังก์ชัน
นี่คือตัวอย่าง "Callback" component ใน React โดยใช้ Logto official React SDK:
คำแนะนำการรวม SDK สามารถพบได้ใน Logto quick-starts docs.
การเข้าใจ Redirect URIs ใน OIDC กับการไหลของโค้ดการอนุญาตเป็นสิ่งสำคัญสำหรับการรักษาความปลอดภัยและเพิ่มประสิทธิภาพกระบวนการยืนยันตัวตนของคุณ โดยการลงทะเบียน redirect URIs ที่เชื่อถือได้และการจัดการ callback ของการลงชื่อเข้าใช้อย่างมีประสิทธิภาพ คุณสามารถทำให้ประสบการณ์การใช้งานของผู้ใช้เป็นไปอย่างรวดเร็วและปลอดภัยพร้อมกับลดความยุ่งยากในการพัฒนาด้วย Logto SDKs ของคุณ