简体中文
  • 发布

Logto 产品更新(2024年8月)

探索我们 2024 年 8 月发布的功能,包括用户模拟、应用秘密管理、组织和应用级别的登录体验品牌化以及更多内容。

Simeng
Simeng
Developer

用户模拟(RFC 8693:OAuth 2.0 令牌交换)

通过令牌交换增加了对用户模拟的支持:

  • 新的管理 API 端点 POST /subject-tokens 用于请求用于令牌交换的 subject_token
  • 更新了 OIDC 的 POST /oidc/token 端点,新增了授权类型 urn:ietf:params:oauth:grant-type:token-exchange,用于将 subject_token 交换为用户模拟的 access_token

详见 用户模拟 了解更多详情。

应用级别的 custom_data

为应用程序添加了一个新的任意对象字段 custom_data。此字段可以存储未在标准 Application 模式中定义的任何其他信息。

点击展开管理 API 更新
  • 新的 PATCH /api/applications/{applicationId}/custom-data 端点,用于部分更新应用程序的 custom_data 字段。
  • 更新 PATCH /api/applications/{applicationId} 端点,以允许覆盖 custom_data 字段。
点击展开控制台更新

在应用程序详情页面(受保护的应用程序除外)添加了一个新的自定义数据 JSON 编辑器。

多个应用秘密管理

安全应用程序(机器对机器、传统 Web、受保护)现在可以拥有多个带有到期时间的应用秘密。这允许密钥轮换并提供更安全的体验。

注意:在此功能之前创建的旧密钥仍可用于客户端身份验证。然而,建议删除旧密钥并创建新的带有到期时间的密钥以增强安全性。

点击展开管理 API 更新
  • GET /api/applications/{applicationId}/secrets:列出应用程序的所有秘密。
  • POST /api/applications/{applicationId}/secrets:为应用程序创建一个新秘密。
  • DELETE /api/applications/{applicationId}/secrets/{name}:通过名称删除应用程序的秘密。
  • PATCH /api/applications/{applicationId}/secrets/{name}:通过名称更新应用程序的秘密。
  • DELETE /api/applications/{applicationId}/legacy-secret:删除应用程序的旧密钥并用新密钥替换。
点击展开控制台更新

要管理你的应用秘密,请前往 Logto 控制台 -> 应用程序 -> 应用程序详情 -> 端点和凭据。

原始应用秘密只读输入字段已被新的秘密管理表替换。你可以在此表中创建、更新和删除秘密。

组织和应用级别的品牌化设置

组织标志

现在可以为组织设置浅色和深色标志。你可以在组织设置页面上传标志。

此外,还可以覆盖来自组织的登录体验标志。只需将 organization_id 参数添加到身份验证请求中。在大多数 Logto SDK 中,可以通过 signIn 方法中的 extraParams 字段来完成。

例如,在 JavaScript SDK 中:

<organization-id> 可以在组织设置页面中找到。

如果你无法在使用的 SDK 中找到 extraParams 字段,请告诉我们。

应用级别的品牌化设置

现在可以为你的应用设置标志、图标和颜色。这些设置将在应用程序启动身份验证流程时在登录体验中使用。对于没有品牌设置的应用,将使用通用登录体验品牌。

如果身份验证请求中提供了 organization_id,并且组织有可用的品牌设置,应用级别的品牌设置将被组织品牌设置覆盖。

性能改进

支持体验应用的服务端渲染

Logto 现在将登录体验设置和短语注入到 index.html 文件中,以提高首屏性能。如果:

  • 服务器未注入设置和短语。
  • URL 中的参数与服务器渲染的数据不同。

体验应用仍将从服务器获取设置和短语。

包构建改进

  • 使用 tsup 构建连接器包。这将加快构建过程,并且不应影响包的功能。
  • 使用 Vite 进行 @logto/console@logto/demo-app@logto/experience 包的转译和打包。移除了 ParcelJS 并用 Vite 替代。不应预期有重大变更。

错误修复

修复了 PATCH /api/applications/{applicationId} 端点的 jsonb 更新行为

Application 对象的所有 jsonb 字段都应使用 replace 模式而不是 merge 模式更新。此更改将使 PATCH 方法更具可预测性,并与 RESTful API 设计一致。

  • PATCH /api/applications/{applicationId} 端点中 jsonb 字段的更新模式从 merge 改为 replace
  • PATCH /api/applications/{applicationId} 端点中,将 API jsonb 字段输入参数验证从 partial 改为 full
  • 受影响的字段:oidc_client_metadatacustom_client_metadataprotected_app_metadatacustom_data

注意:如果你使用 Logto 控制台更新 Application 设置,则不应受到此更改的影响。使用 API PATCH 方法更新 Application jsonb 字段设置的用户应注意此更改。PATCH 方法现在将用新的输入数据替换整个 jsonb 字段。受影响字段的任何部分输入数据将被拒绝。

修复了一些 webhook 事件负载总是返回 API 响应状态 404 的问题

受影响的 webhook 事件:Role.Scopes.UpdatedOrganizations.Membership.Updates

从 webhook 事件负载返回的 API 响应状态码总是 404。这是由于在 API 响应上下文设置之前插入了 webhook 事件负载导致的。

因为我们只在事件成功处理时触发 webhook,所以状态码应始终为 2xx。

此问题已通过在 API 响应上下文设置后插入 webhook 事件负载进行修复。

其他改进

  • 深色主题的图标现在可以在登录体验品牌设置中设置。
  • 增加了新的密码摘要算法:Argon2dArgon2id。使用这些算法的用户将在成功登录后迁移到 Argon2i
  • @logto/experience 的浏览器列表配置已与 README.md 中所述的同步。
  • 改进 Swagger 身份验证描述。使用原生 OpenAPI OAuth2 安全方案,代替自定义 HTTP 头基安全方案。