简体中文
  • release

Logto 产品更新

Logto v1.41.0 带来了应用级访问控制、密码过期策略、主要的账户中心升级、可配置的用户名和验证码规则、更安全的消息发送机制,以及一轮协议与安全加固。

Sijie
Sijie
Developer

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

Logto v1.41.0 是一次以控制与安全为主题的版本。它为团队提供了更细致的方式来决定谁可以访问每个应用、更完善的密码生命周期管理,以及对终端用户功能更强大的账户中心。此版本还加固了验证码发送、用户名规则、SAML/OIDC 处理、MFA 重放保护和自托管升级路径。以下是本次更新内容。

应用级访问控制

你现在可以直接在 Logto 限制某个应用的访问。访问规则可以针对指定用户、用户角色、组织或组织角色。

当用户不符合设置的规则时,Logto 会用一个访问被拒页面阻止登录或应用访问流程,而不是让请求继续。这可以更方便地管理应用部署、特定客户访问、内部工具保护和基于组织的访问,而无需把完整决策下放到你的应用代码里。

参阅 应用级访问控制文档 获取完整配置流程。

密码过期策略

现在可以在 安全性 > 密码策略 中为租户设置密码过期。

管理员可以启用密码过期、设置密码有效天数,并在用户详情页手动让某个用户的密码过期。密码到期后,用户必须通过已配置的安全恢复方式重置密码后才能继续密码登录。

SSO 和密钥(passkey)登录不受影响。对于没有记录过更改密码时间戳的现有用户,Logto 会在启用策略时锚定时间点,这样他们将获得完整的有效期而不是立刻失效。

账户中心获得更多自助管控

账户中心继续成长为终端用户完整的自助身份平台。

此次发布新增了会话管理、连接三方应用审查、资料管理、头像上传、注册时采集资料时上传头像、独立密钥(passkey)控制,以及用户端密钥登录提示偏好等功能。

账户中心资料页面、注册时自定义资料字段,以及头像上传接口也已取消开发特性开关,正式发布。

此外,还有一些重要修复:

  • 主题、平台和品牌色于渲染前应用,减少视觉闪烁。
  • 逐步验证仅限于用户权限验证记录。
  • 在用户没有传统安全验证方式时,可以直接关联社交账号(无需密码、邮箱或手机验证)。
  • 控制台用户名编辑现在会跳转到账户中心完成必要验证。

用户名与验证码策略

控制台 > 登录体验 > 注册与登录 > 高级选项 可配置租户级用户名规则。

该策略覆盖大小写敏感性、长度边界和允许的字符类型,并在所有端用户写入用户名(包括注册、资料补全、账户中心、账户 API 和 /me)时强制执行。

切换到不区分大小写的用户名时有保护措施:Logto 会检查现有用户名中仅大小写不同的冲突,并在冲突解决前阻止策略更改。OIDC preferred_username 声明现在也会在 profile.preferredUsername 未设置时回退到用户的 username

验证码控制也已迁移到控制台安全设置。管理员可以设置验证码过期时长和最多重试次数。

更安全的消息发送

Logto 现在在系统级应用了基于收件人的邮件/SMS 验证码与邀请发送速率限制,包括体验、MFA、账户 API、管理 API、/me、组织邀请和传统交互 API。

如果发送受到限制,Logto 会触发 Message.RateLimited webhook 事件,可在控制台 webhook 设置中选择监听。

在注册关闭时,对未知收件人发送验证码也会被抑制,从而降低账户枚举风险。

JWT 定制器和 API 改进

针对组织 API 资源令牌,access token 的 JWT 定制器现在会被注入 context.organization,包含目标组织的 idnamedescriptioncustomData

这样可更方便地为每个组织增加声明,而无需将每个组织的映射嵌入每个令牌中。

一些 API 改进如下:

  • POST /api/applications/:applicationId/roles 现在具备幂等性,存在的角色 ID 会被忽略,不再返回 422 application.role_exists
  • 该接口现在返回 201,并附带 { roleIds, addedRoleIds },与用户角色分配接口返回格式一致。
  • 组织角色创建带初始权限范围支持事务,错误权限范围 ID 不会造成部分已创建角色残留。

安全与协议加固

本次发布包含协议和安全相关的重点修复:

  • SAML IdP 自动提交表单现已转义 HTML 属性值,并拒绝非 HTTP(S) 的 action URL。
  • samlify 升级到 ^2.13.0,增强生成 SAML Assertion 时的 XML 转义。
  • TOTP MFA 验证会拒绝来自相同或更早时间步计数器的重用码。
  • OIDC 请求体若含 null 字节,将返回 400 invalid_request
  • 审计日志内的有效负载会在写入前去除 null 字节。
  • 邮箱子地址黑名单检查不再用用户输入构建正则表达式。
  • Logto Tunnel 阻止静态文件请求读取超出配置体验路径的内容。

还包括兼容性与存储修复:旧版 Safari 和 iOS 15 不再因不支持正则回溯语法导致启动崩溃;OIDC 企业连接器支持从仅支持非 JSON EntryNegotiate 的服务商抓取 discovery 配置;自定义界面资源 Azure Blob 传输失败现在会映射为可重试的存储下载错误。

新增与改进的连接器

本次更新增加并完善了多项连接器能力:

  • 新增 SMTP2GO 邮件连接器,经由 SMTP2GO 发送 API 发送事务型认证邮件。
  • QQ 连接器支持通过存储重定向 URI 进行社交身份验证。
  • SAML 连接器基于新版本 samlify,并更严格类型返回。
  • Connector Kit 现在导出用于 MailJunky 的共享 SMTP 邮箱解析与格式化工具。

对自托管用户的说明

v1.41.0 需要数据库迁移。本次发布对密码过期、用户名策略、验证码策略、消息发送速率、账户中心默认值和服务日志索引进行了数据库结构更改。

升级后,请先运行数据库变更命令再启动新版本。详情请参阅 升级指南

CASE_SENSITIVE_USERNAME 环境变量现已弃用。它仍能作为运行时覆盖,但用户名大小写敏感性应通过新用户名策略在每个租户下设置。该环境变量将在下个大版本中移除。

开始体验

准备好升级了吗?请参考 升级指南 获取详细步骤。

查看 GitHub 版本发布页 获取完整变更列表。

有任何问题或反馈?欢迎加入我们的 Discord 或在 GitHub 提交 issue。