Logto 产品更新
Logto v1.41.0 带来了应用级访问控制、密码过期策略、主要的账户中心升级、可配置的用户名和验证码规则、更安全的消息发送机制,以及一轮协议与安全加固。
Logto v1.41.0 带来了应用级访问控制、密码过期策略、主要的账户中心升级、可配置的用户名和验证码规则、更安全的消息发送机制,以及一轮协议与安全加固。
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 设置中选择监听。
在注册关闭时,对未知收件人发送验证码也会被抑制,从而降低账户枚举风险。
针对组织 API 资源令牌,access token 的 JWT 定制器现在会被注入 context.organization,包含目标组织的 id、name、description 和 customData。
这样可更方便地为每个组织增加声明,而无需将每个组织的映射嵌入每个令牌中。
一些 API 改进如下:
POST /api/applications/:applicationId/roles 现在具备幂等性,存在的角色 ID 会被忽略,不再返回 422 application.role_exists。201,并附带 { roleIds, addedRoleIds },与用户角色分配接口返回格式一致。本次发布包含协议和安全相关的重点修复:
samlify 升级到 ^2.13.0,增强生成 SAML Assertion 时的 XML 转义。400 invalid_request。还包括兼容性与存储修复:旧版 Safari 和 iOS 15 不再因不支持正则回溯语法导致启动崩溃;OIDC 企业连接器支持从仅支持非 JSON EntryNegotiate 的服务商抓取 discovery 配置;自定义界面资源 Azure Blob 传输失败现在会映射为可重试的存储下载错误。
本次更新增加并完善了多项连接器能力:
samlify,并更严格类型返回。v1.41.0 需要数据库迁移。本次发布对密码过期、用户名策略、验证码策略、消息发送速率、账户中心默认值和服务日志索引进行了数据库结构更改。
升级后,请先运行数据库变更命令再启动新版本。详情请参阅 升级指南。
CASE_SENSITIVE_USERNAME 环境变量现已弃用。它仍能作为运行时覆盖,但用户名大小写敏感性应通过新用户名策略在每个租户下设置。该环境变量将在下个大版本中移除。
准备好升级了吗?请参考 升级指南 获取详细步骤。
查看 GitHub 版本发布页 获取完整变更列表。