เซสชัน
เซสชันใน Logto กำหนดวิธีการสร้าง แบ่งปัน รีเฟรช และเพิกถอนสถานะการยืนยันตัวตนระหว่างแอป เบราว์เซอร์ และอุปกรณ์ต่าง ๆ
ในทางปฏิบัติ ผู้ใช้จะรู้สึกว่า "ลงชื่อเข้าใช้" เป็นสถานะเดียว แต่สถานะของระบบถูกแบ่งออกเป็นหลายชั้น การเข้าใจชั้นเหล่านี้เป็นกุญแจสำคัญในการออกแบบพฤติกรรม SSO การต่ออายุโทเค็น และการลงชื่อออกที่สามารถคาดการณ์ได้
โมเดลเซสชันใน Logto
- เซสชันการลงชื่อเข้าใช้ของ Logto: สถานะการลงชื่อเข้าใช้ที่ถูกเก็บไว้ในรูปแบบคุกกี้ของโดเมน Logto ซึ่งควบคุมความพร้อมใช้งานของ SSO ในบริบทของเบราว์เซอร์ปัจจุบัน
- Grant: สถานะการอนุญาตเฉพาะแอปสำหรับ
user + client appGrants เป็นสะพานเชื่อมระหว่างการลงชื่อเข้าใช้แบบรวมศูนย์และการออกโทเค็นของแอป - เซสชัน / โทเค็นภายในแอป: สถานะการยืนยันตัวตนภายในแอปแต่ละแอป (โทเค็น ID / การเข้าถึง / รีเฟรช, คุกกี้เซสชันแอป ฯลฯ)
แนวคิดหลัก
เซสชัน Logto คืออะไร?
เซสชัน Logto คือสถานะการยืนยันตัวตนแบบรวมศูนย์ที่ถูกสร้างขึ้นหลังจากการลงชื่อเข้าใช้สำเร็จ หากยังคงมีผล Logto สามารถยืนยันตัวตนผู้ใช้ได้อย่างเงียบ ๆ สำหรับแอปอื่นในผู้เช่าเดียวกัน หากไม่มีอยู่ ผู้ใช้ต้องลงชื่อเข้าใช้อีกครั้ง
Grant คืออะไร?
Grant คือสถานะการอนุญาตระดับแอปที่ผูกกับผู้ใช้และแอปไคลเอนต์เฉพาะ
- เซสชัน Logto หนึ่งสามารถมี Grant สำหรับหลายแอป
- โทเค็นสำหรับแอปจะออกภายใต้ Grant ของแอปนั้น
- การเพิกถอน Grant จะส่งผลต่อความสามารถของแอปนั้นในการเข้าถึงแบบใช้โทเค็นต่อไป
ความสัมพันธ์ระหว่างเซสชัน, Grant, และสถานะการยืนยันตัวตนของแอป
- เซสชัน ตอบคำถาม: "เบราว์เซอร์นี้สามารถทำ SSO กับ Logto ได้ตอนนี้หรือไม่?"
- Grant ตอบคำถาม: "ผู้ใช้นี้ได้รับอนุญาตสำหรับแอปไคลเอนต์นี้หรือไม่?"
- เซสชันภายในแอป ตอบคำถาม: "แอปนี้ปัจจุบันถือว่าผู้ใช้ลงชื่อเข้าใช้หรือไม่?"
การลงชื่อเข้าใช้และการสร้างเซสชัน
โทโพโลยีเซสชันระหว่างแอปและอุปกรณ์
เบราว์เซอร์เดียวกัน: เซสชัน Logto ที่แชร์
แอปในเบราว์เซอร์เดียวกันสามารถแชร์สถานะเซสชัน Logto แบบรวมศูนย์ได้ ดังนั้น SSO สามารถเกิดขึ้นได้โดยไม่ต้องป้อนข้อมูลรับรองซ้ำ
เบราว์เซอร์หรืออุปกรณ์ต่างกัน: เซสชัน Logto ที่แยกกัน
แต่ละเบราว์เซอร์ / อุปกรณ์มีการเก็บคุกกี้แยกกัน เซสชันที่ถูกต้องบนอุปกรณ์ A ไม่ได้หมายความว่าเซสชันที่ถูกต้องบนอุปกรณ์ B
วงจรชีวิตเซสชัน
1. สร้าง
หลังจากการยืนยันตัวตนของผู้ใช้ Logto จะสร้างเซสชันแบบรวมศูนย์และ Grant เฉพาะแอป
2. ใช้ซ้ำ (SSO)
ตราบใดที่คุกกี้เซสชันยังคงมีผลในเบราว์เซอร์เดียวกัน คำขอการอนุญาตใหม่สามารถเสร็จสิ้นได้อย่างเงียบ ๆ
3. ต่ออายุโทเค็น
การเข้าถึงแอปมักจะดำเนินต่อไปผ่านกระบวนการรีเฟรชโทเค็น (เมื่อเปิดใช้งาน) นี่คือความต่อเนื่องระดับแอป แยกจากการที่เซสชัน Logto แบบรวมศูนย์ยังคงมีอยู่หรือไม่
4. เพิกถอน / หมดอายุ
การเพิกถอนสามารถเกิดขึ้นได้ในหลายชั้น:
- การลงชื่อออกจากแอปภายในจะลบโทเค็น / เซสชันภายในแอป
- การสิ้นสุดเซสชันจะลบเซสชัน Logto แบบรวมศูนย์
- การเพิกถอน Grant จะลบความต่อเนื่องของการอนุญาตระดับแอป
คำแนะนำในการออกแบบ
- จัดการเซสชันภายในแอปอย่างชัดเจนในโค้ดแอปของคุณ
- ถือว่าเซสชัน Logto, Grant, และเซสชันภายในแอปเป็นชั้นแยกกัน
- เลือกว่าการลงชื่อออกควรเป็นเฉพาะแอปหรือทั่วโลก
- ใช้ back-channel logout เมื่อจำเป็นต้องมีความสอดคล้องกันหลายแอป
- สำหรับพฤติกรรมการลงชื่อออกและรายละเอียดการใช้งาน ดู Sign-out
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเพิกถอนการเข้าถึง
ใช้กลยุทธ์การเพิกถอนที่แตกต่างกันตามเป้าหมายของคุณ:
-
เพิกถอนการเข้าถึงจากแอปของคุณเอง: เพิกถอนเซสชันเป้าหมายด้วย
revokeGrantsTarget=firstParty. สิ่งนี้จะลงชื่อผู้ใช้ออกจากแอปของคุณเองที่เกี่ยวข้องกับเซสชันนั้น ซึ่งสร้างประสบการณ์การลงชื่อออกที่สอดคล้องกัน ในขณะเดียวกัน Grant สำหรับแอปของบุคคลที่สามที่มีการให้offline_accessสามารถยังคงใช้ได้สำหรับการผสานรวมที่ต่อเนื่อง ดู จัดการเซสชันผู้ใช้ สำหรับรายละเอียดการเพิกถอนเซสชัน -
เพิกถอนการเข้าถึงแอปของบุคคลที่สาม: เลือกหนึ่งในตัวเลือกต่อไปนี้:
- เพิกถอนเซสชันด้วย
revokeGrantsTarget=allเพื่อเพิกถอน Grant ทั้งหมดที่เกี่ยวข้องกับเซสชันนั้น - เพิกถอน Grant เฉพาะโดยตรงผ่าน API การจัดการ Grant เพื่อเอาการอนุญาตแอปของบุคคลที่สามออกโดยไม่ต้องบังคับให้ลงชื่อออกจากเซสชันทั้งหมด ดู จัดการแอปที่ผู้ใช้อนุญาต (Grant) สำหรับกลยุทธ์การเพิกถอนเฉพาะ Grant
- เพิกถอนเซสชันด้วย
-
เมื่อใช้ Logto Console: ในหน้ารายละเอียดผู้ใช้ Logto มีการจัดการเซสชันและการจัดการแอปของบุคคลที่สามที่ได้รับอนุญาตในตัว
- การเพิกถอนเซสชันจะเพิกถอน Grant ของแอปของคุณเองด้วย เพื่อให้พฤติกรรมการลงชื่อออกของแอปของคุณเองสอดคล้องกัน
- การเพิกถอนการอนุญาตแอปของบุคคลที่สามจะเพิกถอน Grant สำหรับแอปของบุคคลที่สามนั้นในขณะที่ยังคงสถานะเซสชันเดิมไม่เปลี่ยนแปลง
แหล่งข้อมูลที่เกี่ยวข้อง
จัดการเซสชันผู้ใช้ จัดการแอปที่ผู้ใช้อนุญาต (Grant) การกำหนดค่าเซสชัน การลงชื่อออก การลงชื่อสมัครใช้และลงชื่อเข้าใช้เข้าใจกระบวนการยืนยันตัวตน