会话配置
会话配置定义了租户级别的控制,用于决定 Logto 登录会话的持续时间以及如何强制执行与会话相关的访问策略。
本页内容包括:
- 会话 TTL 配置
- 每个应用的最大并发认证 (Authentication) 设备数
会话 TTL 配置
会话 TTL 决定了 Logto OIDC 登录会话的最长生命周期。 这是一个租户级别的设置:一旦配置,将应用于该租户下的所有应用和认证 (Authentication) 流程。
默认行为
- 默认情况下,会话 TTL 为14 天。
- 如果没有配置自定义 TTL,Logto 会继续使用该默认值。
通过 Logto 控制台配置
你可以在控制台的以下位置配置会话 TTL:
控制台 > 租户 > 设置 > OIDC 设置使用 会话最大存活时间 来更新该值。
控制台使用天作为输入和显示单位,而底层的 OIDC 会话配置 / API 使用秒。
通过 Management API 配置
使用以下端点读取和更新 OIDC 会话配置:
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 后需要重启服务实例,以便服务器能够加载最新的 OIDC 设置。
如需在不重启服务的情况下自动应用 OIDC 配置更新,请启用中央 redis 缓存。
每个应用的最大并发认证 (Authentication) 设备数
每个应用的最大并发认证 (Authentication) 设备数是一个应用级别的控制,用于限制每个用户在特定应用下可以保持多少个活跃授权 (Authorization)。
通过应用的 customClientMetadata 字段中的 maxAllowedGrants 进行配置。
详细了解请参阅 应用数据结构。
行为
当设置了 maxAllowedGrants 时,Logto 会在每次授权 (Authorization) 成功时评估用户在当前应用下的活跃授权 (Authorization) 数量。
如果活跃授权 (Authorization) 数量超过限制,Logto 会优先撤销最早的授权 (Authorization)。
如果未设置 maxAllowedGrants,则没有并发限制。
通过 Logto 控制台配置
你可以在每个应用的详情页下进行配置:
控制台 > 应用 > 应用详情 > 并发设备限制为当前应用设置每个用户的最大并发活跃授权 (Authorization)(设备)数量。
该设置不支持机器对机器应用、受保护应用和 SAML 应用。
通过 webhook 监控驱逐事件
当 Logto 为了强制执行 maxAllowedGrants 而撤销用户最早的授权 (Authorization) 时,会触发 Grant.LimitExceeded webhook 事件,这样你可以主动响应设备被登出的情况,而不是通过支持工单被动发现。
payload 会标识用户和应用、生效的限制、驱逐前的活跃授权 (Authorization) 数量,以及被撤销的授权 (Authorization) ID。完整结构请参阅 Grant.LimitExceeded payload。
常见用例:
- 通知用户他们在其他设备上被登出,并告知具体设备。
- 将设备驱逐率纳入分析,判断当前配置的限制是否过低。
- 标记单个用户异常的驱逐模式,作为凭证共享或账户被接管的信号。
前往 控制台 > Webhook 进行订阅,或通过 Management API 创建 webhook。配置详情请参阅 Webhook。
相关资源
会话 管理用户会话管理用户授权 (Authorization) 应用(授权 (Authorization))
应用数据结构:maxAllowedGrants
Webhook 事件:异常 hook 事件
与 Management API 交互