Logto 产品更新
Logto v1.40.0 带来了审计日志的时间范围选择器、更丰富的组织成员 Webhook 载荷、大型组织下的性能大幅提升,以及多项自托管体验改进。
Logto v1.40.0 带来了审计日志的时间范围选择器、更丰富的组织成员 Webhook 载荷、大型组织下的性能大幅提升,以及多项自托管体验改进。
Logto v1.40.0 是一次平台硬化版本。它让大规模下的审计日志变得实用,告诉你组织成员 Webhook 到底发生了什么变化,加快了大型租户下的组织查询速度,还消除了自托管部署中几个长期存在的痛点。还有三个新的连接器加入。以下是新内容。
审计日志在事情刚刚发生时最有用 —— 但之前 Console 一直获取的是一个无限范围窗口,在日志体量非常大的租户下会变慢。
本次发布为审计日志页面加入了 时间范围选择器,默认显示最近 7 天。你可以选择预设时间窗口(最近 1 小时、最近 24 小时、最近 7 天、最近 30 天)和自定义日期范围,想访问更早的日志只要扩大一下窗口即可(#8810)。
在底层,管理 API 的 GET /api/logs 和 GET /api/hooks/{id}/recent-logs 新增了 start_time 和 end_time 查询参数(UNIX 毫秒,开区间),这样你也可以编程方式限定日志查询范围(#8806)。对于非常大的租户,新增的 enableCap=true 参数会在约一万行时提前返回,响应头带有 Total-Number-Is-Capped: true,用部分计数换取不会超时的响应,Console 达到上限时会自动切换为上一页/下一页的布局(#8796、#8802)。默认情况下没有该参数时行为不变。
Organization.Membership.Updated Webhook 之前只能告诉你成员变了,但不会告诉你具体变了什么。现在它显式携带了 delta 字段 —— 在所有成员接口包含 addedUserIds / removedUserIds 和 addedApplicationIds / removedApplicationIds,在邀请被接受和即时用户创建(邮件域名或企业 SSO JIT)事件中也带有 addedUserIds(#8840)。
这完全是新增且兼容的:如果没有 delta,字段会被省略,每个条目数组最多 5000 条用于批量操作(超出可通过 GET /organizations/:id/users 或 .../applications 重新对账)。详细约定见 Webhook 参考文档。这一工作取代了之前社区的提案 —— 感谢 @chiche84(#8752)。
我们也顺带增强了会话代码,GET /api/my-account/sessions 所有条目新增了 isCurrent 标记,方便会话管理 UI 高亮“本设备”行,避免误删自己的会话(#8731)。
这次有几项改动专为巨型组织下的租户而设计:
GET /organizations/:id/users 通过 LATERAL 子查询聚合角色,这样 LIMIT 能在查找角色前先裁剪用户集 —— 不必在每次分页时都构建完整的“成员 × 角色”连接表(#8826)。organization_user_relations (tenant_id, user_id),在每次登录和成员中间件中都会被命中(#8818);另一个是 organization_role_user_relations (tenant_id, organization_id, user_id),被 getUserScopes 和按用户角色关联命中(#8819)。PUT /organizations/:id/users 换成了新的增量查询,只写实际上变化的行,不每次都全量重写成员行 —— 且自动保留没变动成员的角色分配(#8820)。prompt=none 自动重新认证,而不会直接跳转到登录页,感谢 @taka-guevara(#8785)。connectorId(#8758),二步验证开关标签也更清晰了(#8792)。本次加了三个连接器,还对多个现有连接器做了改进 —— 多个由社区贡献:
auth 可以省略 user 和 pass,支持只凭源(如 IP/VLAN)认证,无需伪造身份信息(#8888)。几项变更专门优化了开源自托管部署体验:
隔离环境下的管理员初始化。
install和db seed命令现在可以带--dapc标志(等同--disable-admin-pwned-password-check)。管理员租户种子密码策略默认启用“Have I Been Pwned”泄漏检测,每次设置管理员密码都会访问api.pwnedpasswords.com—— 搭隔离环境没网时首次创建管理员就会卡住。有了--dapc,会关闭这个检测,管理员注册不再依赖外部网络。感谢 @darcyYe(#8859)
管理员签名密钥从数据库读取。 开源部署现在直接从数据库读取管理员租户签名密钥,省去了之前让 Logto 容器访问自身 OIDC 配置时还要加主机/DNS 映射的麻烦(#8869)。
需要数据库迁移。 v1.40.0 带来了数据库结构变更(新的组织关系索引和内部字段)。升级后需先执行数据库升级步骤,再启动服务。参见 升级指南。
准备升级?请参考 升级指南 获取操作步骤。
完整更新列表见 GitHub 发布页面。
有问题或建议?欢迎加入我们的 Discord 社群 或到 GitHub 提 issue。