การกำหนดค่าช่วงเวลาเซสชัน
การกำหนดค่าเซสชันเป็นการควบคุมในระดับผู้เช่า (tenant) สำหรับระยะเวลาที่เซสชันการลงชื่อเข้าใช้ Logto จะยังคงใช้งานได้ และวิธีการบังคับใช้นโยบายการเข้าถึงที่เกี่ยวข้องกับเซสชัน
หน้านี้ครอบคลุม:
- การกำหนดค่า TTL ของเซสชัน
- จำนวนอุปกรณ์ที่ยืนยันตัวตนพร้อมกันสูงสุดต่อแอป
การกำหนดค่า TTL ของเซสชัน
Session TTL กำหนดอายุสูงสุดของเซสชันการลงชื่อเข้าใช้ OIDC ของ Logto นี่เป็น การตั้งค่าระดับผู้เช่า (tenant-level setting): เมื่อกำหนดแล้วจะมีผลกับทุกแอปและทุก flow การยืนยันตัวตนในผู้เช่านั้น
พฤติกรรมเริ่มต้น
- โดยค่าเริ่มต้น Session TTL คือ 14 วัน
- หากไม่ได้กำหนด TTL แบบกำหนดเอง Logto จะใช้ค่านี้ต่อไป
กำหนดค่าผ่าน Logto Console
คุณสามารถกำหนดค่า Session TTL ได้ใน Console ที่
Console > Tenant > Settings > OIDC settingsใช้ Session maximum time to live เพื่ออัปเดตค่า
Console ใช้ วัน สำหรับการกรอกและแสดงผล ในขณะที่การตั้งค่า OIDC session / API ที่อยู่เบื้องหลังใช้ วินาที
กำหนดค่าผ่าน Management API
ใช้ endpoint เหล่านี้เพื่ออ่านและอัปเดตการกำหนดค่า OIDC session:
GET /api/configs/oidc/sessionPATCH /api/configs/oidc/session
ตัวอย่าง (ttl เป็นวินาที):
curl https://[tenant-id].logto.app/api/configs/oidc/session \
-H 'authorization: Bearer <management_api_access_token>'
curl -X PATCH https://[tenant-id].logto.app/api/configs/oidc/session \
-H 'authorization: Bearer <management_api_access_token>' \
-H 'content-type: application/json' \
--data-raw '{"ttl":1209600}'
1209600 วินาที = 14 วัน
สำหรับการใช้งาน OSS หลังจากเปลี่ยน logto-config ให้รีสตาร์ท instance ของ service เพื่อให้เซิร์ฟเวอร์โหลดการตั้งค่า OIDC ล่าสุด
หากต้องการให้อัปเดต OIDC config มีผลอัตโนมัติโดยไม่ต้องรีสตาร์ท service ให้ เปิดใช้ central redis cache
จำนวนอุปกรณ์ที่ยืนยันตัวตนพร้อมกันสูงสุดต่อแอป
จำนวนอุปกรณ์ที่ยืนยันตัวตนพร้อมกันสูงสุดต่อแอปเป็นการควบคุมในระดับแอป เพื่อจำกัดจำนวน grant ที่ผู้ใช้แต่ละคนสามารถมีได้สำหรับแอปนั้น
สามารถกำหนดได้ผ่านฟิลด์ maxAllowedGrants ใน customClientMetadata ของแอป
ดูรายละเอียดเพิ่มเติมที่ โครงสร้างข้อมูลแอปพลิเคชัน
พฤติกรรม
เมื่อกำหนด maxAllowedGrants แล้ว Logto จะตรวจสอบ grant ที่ผู้ใช้มีอยู่สำหรับแอปปัจจุบันทุกครั้งที่อนุญาตสำเร็จ
หากจำนวน grant ที่ใช้งานอยู่เกินขีดจำกัด Logto จะเพิกถอน grant ที่เก่าที่สุดก่อน
หากไม่ได้กำหนด maxAllowedGrants จะไม่มีการจำกัดจำนวนอุปกรณ์พร้อมกัน
กำหนดค่าผ่าน Logto Console
คุณสามารถกำหนดค่านี้ได้ในหน้ารายละเอียดของแต่ละแอปที่
Console > Applications > Application details > Concurrent device limit
ตั้งค่าจำนวน grant (อุปกรณ์) ที่ใช้งานพร้อมกันสูงสุดต่อผู้ใช้สำหรับแอปนี้
การตั้งค่านี้ไม่รองรับสำหรับแอป machine-to-machine, แอปที่ป้องกันไว้ (protected apps) และแอป SAML
ติดตามการถูกบังคับออกด้วย webhook
เมื่อ Logto เพิกถอน grant ที่เก่าที่สุดของผู้ใช้เพื่อบังคับใช้ maxAllowedGrants จะมีการทริกเกอร์ event webhook Grant.LimitExceeded webhook event เพื่อให้คุณสามารถตอบสนองต่อการที่อุปกรณ์ถูกลงชื่อออก แทนที่จะรอให้ผู้ใช้แจ้งปัญหา
payload จะระบุผู้ใช้และแอป ขีดจำกัดที่ใช้งาน จำนวน grant ที่มีอยู่ก่อนถูกบังคับออก และ grant ID ที่ถูกเพิกถอน ดู Grant.LimitExceeded payload สำหรับโครงสร้างเต็ม
กรณีการใช้งานทั่วไป:
- แจ้งเตือนผู้ใช้ว่าถูกลงชื่อออกจากอุปกรณ์อื่น พร้อมระบุว่าอุปกรณ์ใด
- นำอัตราการถูกบังคับออกของอุปกรณ์ไปวิเคราะห์ เพื่อดูว่าขีดจำกัดที่ตั้งไว้ต่ำเกินไปหรือไม่
- แจ้งเตือนรูปแบบการถูกบังคับออกที่ผิดปกติของผู้ใช้รายเดียว เป็นสัญญาณของการแชร์บัญชีหรือการถูกยึดบัญชี
ไปที่ Console > Webhooks เพื่อสมัครรับ event หรือสร้าง webhook ผ่าน Management API ดูรายละเอียดที่ Webhooks
แหล่งข้อมูลที่เกี่ยวข้อง
เซสชัน จัดการเซสชันของผู้ใช้ จัดการแอปที่ผู้ใช้ได้รับอนุญาต (grants)โครงสร้างข้อมูลแอปพลิเคชัน: maxAllowedGrants
เหตุการณ์ Webhooks: exception hook events
โต้ตอบกับ Management API