Logto 产品更新
Logto v1.42.0 带来了自定义域名验证文件、支持通配符模式的邮箱允许列表、重置密码魔法链接、Grant.LimitExceeded webhook 事件,以及协议层更新至 node-oidc-provider v9、Koa 3,并默认开启 SSRF 保护。
Logto v1.42.0 带来了自定义域名验证文件、支持通配符模式的邮箱允许列表、重置密码魔法链接、Grant.LimitExceeded webhook 事件,以及协议层更新至 node-oidc-provider v9、Koa 3,并默认开启 SSRF 保护。
Logto v1.42.0 是一个面向域名和协议的版本。它为团队提供了无需额外部署主机即可证明域名所有权的方法,更细致地控制哪些邮箱可以进入租户,以及为终端用户带来更流畅的密码重置流程。在底层,Logto 迁移到了 node-oidc-provider v9 和 Koa 3,并且为外部 OIDC 请求默认开启 SSRF 保护。以下是本次更新的内容。
第三方服务通常会通过让你在固定路径下提供一个小文件来验证域名所有权。此前,这意味着你需要为 Logto 自定义域名额外运行一个主机。
现在,你可以在 Console > Tenant settings > Domains 为激活中的自定义域名附加验证文件。每个文件具备:
/verify.txt),要么是在 /.well-known/ 下的路径。text/plain 或 application/json。JSON 内容在保存时会进行校验。每个域最多可配置 10 个文件,且路径必须唯一。Logto 会以配置的内容类型和响应加固只处理完全匹配的 GET 和 HEAD 请求。Logto 现有路由总是优先生效,因此错误配置的文件不会覆盖真实接口。控制台体验在所有支持的语言下是本地化的。
由于 Logto 不介入文件内容,这适用于任何提供商的验证方案,无需 Logto 针对特定提供商设计行为模型。
邮箱黑名单策略现已扩展为更完善的邮箱访问规则,配置路径为 Console > Security > Email blocklist。
自定义邮箱允许名单。 你可以配置邮箱地址、域名或通配符模式的允许名单。当允许名单设置后,只有匹配的邮箱才能用于新用户注册和新增绑定邮箱——无论是邮箱注册还是账号邮箱更新。
通配符模式。 允许名单和黑名单都支持邮箱地址和域名的通配符模式,如 foo*@example.com、*@example.com 和 @*.example.com,也支持精确地址(如 [email protected])和域名(如 @example.com)。
冲突警告。 当允许名单条目也匹配到黑名单规则、当允许名单使用了加号且已禁止邮箱子地址、以及合并规则后将不允许任何新邮箱通过时,控制台将给出警告。
匹配和校验逻辑通过 @logto/core-kit 的可复用工具共享,所以无论邮箱在哪进入租户,规则都是一致的。
Experience 应用现在支持通过重置密码落地页直接验证一次性魔法链接,除了验证码之外,也可用于密码重置流程。
Grant.LimitExceeded webhook 事件当 OIDC 授权因应用超出其最大授权数而被清除时,Logto 现在会触发 Grant.LimitExceeded webhook 事件,可以像其他事件一样在控制台 webhook 设置中选择。
Payload 会报告 userId、applicationId、revokedGrantIds、maxAllowedGrants 和 preRevocationActiveGrantCount。该事件为即发即弃型:失败会记录为 TriggerHook.Grant.LimitExceeded 审计日志,不会阻塞认证响应。
这里最大的变更是 token 吊销的安全修复。
吊销一个 opaque 访问令牌现在同时会吊销属于同一个授权下的所有令牌,包括刷新令牌。在 v8 中,刷新令牌在吊销后依然可用,可以继续请求新的访问令牌。
v9 的其他协议更新:
unsupported_token_type 拒绝 JWT 访问令牌,而不像 v8 那样返回成功但实际却没吊销任何内容。/oidc/.well-known/oauth-authorization-server 访问。at_hash claim。typ: "JWT" 头部。OpenID Connect 规定 ID token 就是 JWT,且客户端不要求校验该头部。自定义 ID token 校验需关注。 使用 Logto 官方 SDK 无需变更。若你的集成做了自定义 ID token 校验,请更新实现,使其允许 at_hash claim 和 typ: "JWT" 头部缺失。
Logto 现运行于 Koa 3,这是当前积极维护并率先获得安全修复的版本。预期不会产生行为变化:所有接口、OIDC 流程和 API 响应与之前完全一致。
identities 用户权限,与其他社交和企业 SSO 身份接口一致。rediss 协议的 Redis 集群连接现在会正确启用 TLS。jose 依赖,安装连接器时不会再拉取未被导入的包。必要操作 — OIDC 提供方 SSRF 保护。 外部请求安全性加强,默认开启 SSRF 保护。需访问私有网络中受信任的 relying-party 端点的自托管部署,请在启动 Logto 前设置 OIDC_PROVIDER_SSRF_PROTECTION_DISABLED=true;否则保持未设置。
数据库迁移必要操作。 本次发布带来了自定义域名验证文件相关的表结构变更,以及部分内部索引和表。升级后,请在启动新版本前运行数据库变更命令(在 @logto/cli/core 镜像中执行 npm run alteration deploy,或 logto db alteration deploy)。详细步骤参见 升级指引。
自定义 ID token 校验。 关于 at_hash 和 typ 头部变更,请参见上方 node-oidc-provider v9 部分。
特别感谢以下社区成员在本次发布中的贡献:
Grant.LimitExceeded webhook 事件(#9230)与无密码连接器事务性替换(#9277)rediss TLS 修复(#9144)准备好升级了吗?请参见 升级指引 获取分步骤操作。
查看全部变更,请访问 GitHub 发布页。