简体中文
  • release

Logto 产品更新

Logto v1.39.0 已发布,带来了更安全的签名密钥轮换、更智能的 JWT 脚本错误处理、扩展的账户中心安全控制、WhatsApp 连接器支持,以及关键安全性改进。

Simeng
Simeng
Developer

不要在用户认证上浪费数周时间
使用 Logto 更快地发布安全应用。几分钟内集成用户认证,专注于您的核心产品。
立即开始
Product screenshot

我们非常高兴推出 Logto v1.39.0,本次版本专注于更强的操作安全性、更灵活的令牌自定义以及改进的终端用户账户安全。本版本新增私有签名密钥轮换宽限期、自定义 JWT 脚本可配置错误处理、新账户中心安全页面、通过 Meta Cloud API 的 WhatsApp 连接器支持,以及认证流程中的若干安全与稳定性改进。

主要亮点

  • 私有签名密钥轮换宽限期:Logto 现在支持在轮换私有签名密钥时的宽限期,帮助客户端在不中断服务的情况下刷新缓存的 JWKS。
  • 自定义 JWT 脚本错误处理:在访问令牌和客户端凭证 JWT 自定义脚本执行失败时,现在可以阻止令牌发放。
  • 账户中心安全页面:终端用户现在可以在账户中心管理社交账户关联、多因素认证(MFA)和账户删除。
  • WhatsApp 连接器:新增 WhatsApp 短信连接器,可通过 Meta Cloud API 使用。
  • 安全性与兼容性修复:忘记密码验证响应已统一,降低账户枚举风险,同时应用内浏览器的社交 / SSO 重定向更加稳健。

新功能与增强

私有签名密钥轮换宽限期

Logto 现在在私有签名密钥轮换期间支持宽限期。

可通过以下方式进行配置:

  • PRIVATE_KEY_ROTATION_GRACE_PERIOD 环境变量。
  • --gracePeriod CLI 选项。

在宽限期内:

  • 新生成的签名密钥被标记为 下一个(Next)
  • 现有的签名密钥仍然作为 当前(Current) 激活。
  • 客户端有时间刷新缓存的 JWKS,防止新密钥激活前出现问题。

宽限期结束后:

  • 新的私有签名密钥切换为 当前(Current)
  • 旧签名密钥被标记为 先前(Previous)

这一机制提供了更平滑的密钥轮换流程,帮助避免因 JWKS 缓存未及时更新导致的认证失败。

文档:轮换签名密钥

自定义 JWT 脚本错误处理

Logto 现在支持用于自定义 JWT 脚本的可配置错误处理,适用于访问令牌和客户端凭证流程。

涉及的更改:

  • 现在自定义 JWT 脚本在执行失败时可阻止令牌发放;
  • api.denyAccess() 保持 access_denied 响应;
  • 其他阻断模式下的脚本失败会返回本地化的 invalid_request 响应;
  • 控制台增加专用的 错误处理 选项卡用于配置行为;
  • 新创建的脚本默认开启 blockIssuanceOnError
  • 没有保存该值的现有脚本则维持原有(关闭)策略;
  • 控制台内相关引导、短语、Schema 以及集成文档已更新。

这帮助开发者根据自身安全要求选择令牌自定义失败时应“宽进”还是“严进”。

账户中心安全页面

本次版本为开箱即用的账户中心新增了安全页面。

终端用户现在可在 /account/security 页面管理账户安全,包括:

  • 社交账户的绑定与解绑;
  • MFA 双步验证;
  • 账户删除。

控制台支持:

  • 登录体验相关设置现在可配置账户删除 URL 字段;
  • 控制台界面中暴露账户中心与社交预置 UI 入口。

通过 Meta Cloud API 的 WhatsApp 连接器

新增 WhatsApp 连接器,可通过 Meta Cloud API 发送消息。

这使得可基于 WhatsApp 进行短信/验证码发送场景,并使用官方 Meta Cloud API 集成。

组织分配 API 返回体

组织用户和角色分配 API 现在会返回响应体。

更新的接口有:

  • POST /organizations/:id/users 现在返回 { userIds: string[] },回显请求中发送的用户 ID;
  • POST /organizations/:id/users/:userId/roles 现在返回 { organizationRoleIds: string[] },包含最终分配的去重后的组织角色 ID(包括由名称解析获得的角色)。

控制台主题 Token 更新

控制台主题现在为明暗模式补全了缺失的 --color-overlay-primary-subtle token。

Bug 修复与稳定性改进

忘记密码验证枚举防护

忘记密码验证现统一返回 verification_code.code_mismatch 错误码。

这样可防止通过不同错误响应暴露某邮箱或手机号是否存在,降低账户枚举攻击风险。

应用内浏览器中的社交与 SSO 重定向

改进了 Instagram、Facebook、LINE 等应用内浏览器的社交和 SSO 重定向可靠性。

一些应用内浏览器会在新 WebView 中打开 OAuth IdP 页面,回跳时可能丢失 sessionStorage

本版本增加了 localStorage 备选方案:

  • 重定向状态仍存储于 sessionStorage
  • 同时将重定向上下文备用数据包存储到 localStorage
  • 回调时如找不到 sessionStorage,Logto 会从 localStorage 恢复状态;
  • 读取后自动消费,并在 10 分钟后自动清理;
  • 如果两处都为空,则用户会看到一个错误提示。

验证码连接器请求 IP

修复了请求 IP 未被正确传递给验证码连接器的问题。

现允许连接器收到正确的请求上下文,从而正确进行验证码投递。