• 404-not-found
  • logto-unknown-session
  • authorization-code-flow

สาเหตุที่คุณอาจเห็น 404 เมื่อเข้าสู่ระบบแอปที่รวม Logto

คุณเคยเจอข้อผิดพลาด "404 Not Found" เมื่อพยายามเข้าสู่ระบบแอปที่รวม Logto หรือไม่? บล็อกโพสต์นี้อธิบายว่าทำไมสิ่งนี้ถึงเกิดขึ้นและคุณจะหลีกเลี่ยงได้อย่างไร

Charles
Charles
Developer

พื้นหลัง

คุณเคยพยายามเข้าสู่ระบบแอปที่ใช้ Logto สำหรับการยืนยันตัวตนและเจอข้อผิดพลาด "404 not found" หรือไม่? ผู้ใช้ของคุณเคยรายงานปัญหาเดียวกันหรือไม่?

Logto session not found 404 error screenshot

นี่อาจเกิดขึ้นเมื่อคุณเข้าถึงหน้าเข้าสู่ระบบโดยตรง (เช่น https://your-app.com/sign-in) โดยไม่ผ่านกระบวนการเข้าสู่ระบบที่แอปพลิเคชันกำหนดไว้

เหตุผลคือ:

ความสำคัญของกระบวนการ OIDC

Logto พึ่งพา โปรโตคอล OpenID Connect (OIDC) สำหรับการยืนยันตัวตนที่ปลอดภัย เมื่อคุณเข้าสู่ระบบผ่านกระบวนการปกติของแอปพลิเคชัน (เช่น โดยคลิกปุ่มเข้าสู่ระบบจากแอปพลิเคชันของคุณ) แอปพลิเคชันจะเริ่มการสื่อสารกับเซิร์ฟเวอร์ OIDC ของ Logto การสื่อสารนี้เรียกว่า "authorization request" ซึ่งสำคัญเพราะมันดำเนินการตรวจสอบต่าง ๆ กับผู้ใช้ ก่อนที่จะสร้างเซสชันที่ปลอดภัยระหว่างเบราว์เซอร์ของคุณและเซิร์ฟเวอร์ (จัดการโดย cookies)

ปัญหาจะเกิดขึ้นเมื่อผู้ใช้เข้าสู่หน้า "/sign-in" โดยตรง ซึ่งจะข้ามตรรกะภายในของแอปพลิเคชันที่เรียกใช้ authorization request ของ OIDC ดังนั้น เซิร์ฟเวอร์จึงไม่รู้จักเบราว์เซอร์ของคุณว่ามีเซสชันที่ถูกต้อง ซึ่งนำไปสู่ข้อผิดพลาด 404

วิธีแก้ปัญหา

มีสองวิธีหลักในการหลีกเลี่ยงปัญหานี้:

ใช้ปุ่มเข้าสู่ระบบของแอปเสมอ

แทนที่จะเข้าถึงหน้า "/sign-in" โดยตรง ให้ทำตามกระบวนการเข้าสู่ระบบที่กำหนดไว้โดยแอปพลิเคชัน เมื่อคุณคลิกปุ่ม "Sign in" ภายในแอป มันจะเริ่ม authorization request ของ OIDC ที่ถูกต้อง และสร้างเซสชันที่จำเป็น

เปลี่ยนเส้นทางผู้ใช้อัตโนมัติ

ถ้าคุณมีเพียงแอปพลิเคชันเดียวในอินสแตนซ์ Logto ของคุณ คุณอาจลองใช้ตรรกะเพื่อดักกรองความพยายามของผู้ใช้ในการเข้าสู่หน้า "/sign-in" โดยไม่มีเซสชันที่ถูกต้อง และเปลี่ยนเส้นทางพวกเขากลับไปยังหน้าหลักของคุณที่แสดงปุ่มเข้าสู่ระบบ ซึ่งไม่สามารถทำได้โดย Logto เนื่องจาก "Omni-sign-in" มีธรรมชาติเช่นนั้น เนื่องจากหลาย ๆ แอปพลิเคชันสามารถใช้ระบบยืนยันตัวตนเดียวกันได้ และดังนั้น เมื่อมีคำร้องขอหน้าเข้ามา Logto จะไม่ทราบว่าจะเปลี่ยนเส้นทางไปแอปใด

ความคิดเพิ่มเติมเกี่ยวกับการปรับปรุงประสบการณ์

เรากำลังพยายามปรับปรุงประสบการณ์ผู้ใช้ โดยอย่างน้อยต้องเพิ่มข้อความที่เป็นประโยชน์ในหน้า "/unknown-session" อธิบายเหตุผลของ 404 และแจ้งให้ผู้ใช้ทราบว่าควรทำอย่างไรแทนที่จะสับสนและมองไม่เห็นทาง

เรายังพิจารณาที่จะนำมาตรการความปลอดภัยอื่น ๆ มาใช้เพื่อลดปัญหา เช่น การเปลี่ยนเส้นทางอัตโนมัติไปยัง "Sign-out redirect URI" (ปกติคือหน้าหลักของแอปพลิเคชัน) เมื่อมีการตรวจพบว่าแอปพลิเคชันเดียวที่ใช้ Logto อินสแตนซ์ปัจจุบัน หรือเพิ่มการกำหนดค่าเพิ่มเติมเพื่อแสดงข้อความที่ปรับแต่งตามกรณีนั้น

สรุป

ข้อผิดพลาด 404 not found (เซสชันไม่ถูกต้อง) บนหน้า "/sign-in" มักเกิดจากการเข้าถึง URL ของหน้าเข้าสู่ระบบโดยตรง ซึ่งข้ามกระบวนการเข้าสู่ระบบแอปพลิเคชันปกติที่เรียกใช้ authorization request และไม่มีการสร้างเซสชันที่ถูกต้อง (จัดการโดย cookies)

ด้วยการเข้าใจกระบวนการนี้และความสำคัญของมัน คุณสามารถหลีกเลี่ยงข้อผิดพลาดนี้และเพลิดเพลินกับประสบการณ์การเข้าสู่ระบบที่ไม่มีสะดุดกับแอปที่รวม Logto ของคุณ

โปรดติดต่อเราหากคุณต้องการที่จะแบ่งปันไอเดียของคุณ