Обновления продукта Logto
🎉 Представляем июльский релиз: Logto API SDK, хранилище секретов для федеративного хранения токенов, управление TOTP и резервными кодами через Account API и многое другое!
🎉 Представляем июльский релиз: Logto API SDK, хранилище секретов для федеративного хранения токенов, управление TOTP и резервными кодами через Account API и многое другое!
TypeScript SDK для взаимодействия с Management API Logto с использованием аутентификации по клиентским учетным данным.
Как это работает:
npm install @logto/apicreateManagementApi(), чтобы создать типизированного клиента Management API с учетными данными вашего приложения.Особенности:
Хранилище секретов — это безопасное хранилище в Logto для управления конфиденциальными пользовательскими данными, такими как токены доступа, API-ключи, коды доступа и другая секретная информация. Эти секреты часто используются для доступа к сторонним сервисам от имени пользователей, поэтому их защита критически важна.
Теперь поддерживается хранение токенов для социальных и корпоративных SSO-коннекторов. При включении Logto сохраняет набор токенов, выданный провайдером идентификации после успешной аутентификации. Позже приложения могут получить access token — без необходимости повторной аутентификации пользователя — чтобы обращаться к сторонним 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 передан, он будет использован в запросе авторизации; иначе — будет использоваться значение из настроек коннектора по умолчанию.Ограничение внешнего ключа по 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 пользователя. Это обеспечивает правильную изоляцию арендаторов на уровне базы данных.