Обновления продукта Logto
🎉 Представляем июльский релиз: Logto API SDK, хранилище секретов для федеративного хранения токенов, управление TOTP и резервными кодами через Account API и многое другое!
Logto API SDK
TypeScript SDK для взаимодействия с Management API Logto с использованием аутентификации по клиентским учетным данным.
Как это работает:
- Создайте приложение машинного взаимодействия в Logto Console.
- Дайте приложению доступ к Management API.
- Установите SDK через npm:
npm install @logto/api
- Используйте
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
Как это работает:
- Включите хранение токенов для социальных и корпоративных SSO-коннекторов в Logto Console либо через Logto Management API.
- После включения Logto автоматически сохраняет набор токенов, выданный провайдером после успешной аутентификации пользователя.
- При необходимости получите сохраненный токен через 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 пользователя. Это обеспечивает правильную изоляцию арендаторов на уровне базы данных.