• релиз
  • API SDK
  • хранилище
  • Account API

Обновления продукта Logto

🎉 Представляем июльский релиз: Logto API SDK, хранилище секретов для федеративного хранения токенов, управление TOTP и резервными кодами через Account API и многое другое!

Simeng
Simeng
Developer

Хватит тратить недели на аутентификацию пользователей
Запускайте безопасные приложения быстрее с Logto. Интегрируйте аутентификацию пользователей за считанные минуты и сосредоточьтесь на вашем основном продукте.
Начать
Product screenshot

Logto API SDK

TypeScript SDK для взаимодействия с Management API Logto с использованием аутентификации по клиентским учетным данным.

Как это работает:

  1. Создайте приложение машинного взаимодействия в Logto Console.
  2. Дайте приложению доступ к Management API.
  3. Установите SDK через npm: npm install @logto/api
  4. Используйте createManagementApi(), чтобы создать типизированного клиента Management API с учетными данными вашего приложения.

Особенности:

  • Автоматически обрабатывает аутентификацию и обновление OAuth токена.
  • Поддерживает как облачные, так и самостоятельные инстансы Logto.
  • Упрощает интеграцию с Management API Logto, позволяя сосредоточиться на разработке функций вместо работы с низкоуровневыми API-запросами.

Хранилище секретов

Хранилище секретов — это безопасное хранилище в Logto для управления конфиденциальными пользовательскими данными, такими как токены доступа, API-ключи, коды доступа и другая секретная информация. Эти секреты часто используются для доступа к сторонним сервисам от имени пользователей, поэтому их защита критически важна.

Поддержка хранения федеративных токенов

Теперь поддерживается хранение токенов для социальных и корпоративных SSO-коннекторов. При включении Logto сохраняет набор токенов, выданный провайдером идентификации после успешной аутентификации. Позже приложения могут получить access token — без необходимости повторной аутентификации пользователя — чтобы обращаться к сторонним API.

Поддерживаемые коннекторы:

  • Социальные коннекторы: GitHub, Google, Facebook, Стандартный OAuth 2.0 и Стандартный OIDC
  • Корпоративные SSO-коннекторы: Все SSO-коннекторы на базе OIDC

Как это работает:

  1. Включите хранение токенов для социальных и корпоративных SSO-коннекторов в Logto Console либо через Logto Management API.
  2. После включения Logto автоматически сохраняет набор токенов, выданный провайдером после успешной аутентификации пользователя.
  3. При необходимости получите сохраненный токен через Account API.

Подробнее смотри в документации по хранилищу секретов.

Добавление TOTP и резервных кодов через Account API

Теперь пользователи могут добавлять TOTP и резервные коды через Account API.

  • POST /api/my-account/mfa-verifications/totp-secret/generate: Сгенерировать TOTP-секрет.
  • POST /api/my-account/mfa-verifications/backup-codes/generate: Сгенерировать резервные коды.
  • POST /api/my-account/mfa-verifications: Добавить TOTP или резервный код с использованием сгенерированного секрета или кодов.
  • GET /api/my-account/mfa-verifications/backup-codes: Получить резервные коды.

Прочие улучшения

  • Социальные коннекторы: Добавлена поддержка передачи своего параметра scope при генерации URL авторизации для социальных коннекторов. Это позволяет запрашивать дополнительные разрешения у социальных провайдеров при вызове эндпойнта социальной проверки Logto. Если параметр scope передан, он будет использован в запросе авторизации; иначе — будет использоваться значение из настроек коннектора по умолчанию.
  • Консоль: Для лучшей поддержки новой функции хранилища секретов был переработан макет страницы сведений о пользователе. Пользовательские социальные и корпоративные SSO-идентификации теперь сгруппированы в новый раздел "Подключения". В этом разделе отображаются все связанные с пользователем подключения, информация о сторонней идентификации и статус хранения токенов (если применимо). Также для каждого подключения доступна детальная страница идентификации пользователя с подробной информацией о связанной идентификации и её токенах.

Исправления ошибок

Ограничение внешнего ключа по tenant для таблицы organization_user_relations

Проблема

Разработчики могли ошибочно назначить user_id от другого арендатора организации, что вызывало ошибки 500 на эндпойнтах API пользователей организаций. В оригинальной таблице organization_user_relations внешнее ограничение действовало только на users (id), допуская назначение любого существующего user ID независимо от изоляции по арендатору.

Первопричина

Logto применяет Row Level Security (RLS) на всех таблицах для изоляции доступа к данным арендаторов. При объединении таблицы users с organization_user_relations реальные пользовательские данные становятся недоступны текущему арендатору из-за ограничений RLS, что вызывает возврат null и ошибку 500 на сервере.

Решение

Было добавлено составное ограничение внешнего ключа (tenant_id, user_id), ссылающееся на users (tenant_id, id), чтобы удостовериться, что tenant ID связи организация-пользователь соответствует tenant ID пользователя. Это обеспечивает правильную изоляцию арендаторов на уровне базы данных.