Logto v1.41.0 приносит контроль доступа на уровне приложений, политики истечения срока действия паролей, серьезные улучшения Центра аккаунта, настраиваемые правила для имен пользователей и кодов подтверждения, более безопасную доставку сообщений и усиленную защиту протоколов/безопасности.
SijieDeveloper
Хватит тратить недели на аутентификацию пользователей
Запускайте безопасные приложения быстрее с Logto. Интегрируйте аутентификацию пользователей за считанные минуты и сосредоточьтесь на вашем основном продукте.
Logto v1.41.0 — это релиз, ориентированный на контроль и безопасность. Он предоставляет командам более тонкие способы управлять доступом к каждому приложению, более широкие возможности управления жизненным циклом паролей и значительно улучшенный Центр аккаунта для конечных пользователей. Кроме того, ужесточены правила доставки кодов подтверждения, добавлены новые требования к именам пользователей, улучшена работа с протоколами SAML/OIDC, защита от повторного использования MFA и оптимизированы сценарии обновления для self-hosting. Вот что нового.
Теперь вы можете ограничивать доступ к приложению напрямую из Logto. Правила доступа могут быть ориентированы на конкретных пользователей, роли пользователей, организации или организационные роли.
Если пользователь не соответствует заданным условиям, Logto блокирует процесс входа или доступа к приложению с помощью страницы "Доступ запрещен", а не позволяет запросу пройти дальше. Это облегчает развертывание приложений, управление доступом для конкретных клиентов, защиту внутренних инструментов и создание организации с ограниченным доступом без необходимости реализовывать всю логику в вашем приложении.
Теперь консоль поддерживает политики истечения паролей на уровне арендатора в разделе Безопасность > Политика паролей.
Администраторы могут включить истечение пароля, задать количество дней действия пароля и вручную истечь пароль конкретного пользователя на странице сведений о пользователе. Когда пароль истекает, пользователь должен сбросить его с помощью настроенного метода восстановления, чтобы продолжить вход по паролю.
SSO и вход с помощью ключа доступа не затрагиваются. Для существующих пользователей без записанного времени изменения пароля Logto устанавливает отправную точку на момент включения политики, чтобы пользователи могли воспользоваться полным сроком действия, а не сразу получить просроченный пароль.
Центр аккаунта с расширенными функциями самообслуживания#
Центр аккаунта продолжает развиваться в полноценную самообслуживаемую панель управления идентичностью.
В этой версии добавлены управление сессиями, просмотр подключённых сторонних приложений, управление профилем, загрузка аватара, загрузка аватара во время регистрации с заполнением профиля, независимый контроль ключей доступа и пользовательская настройка приглашения на вход с помощью ключа доступа.
Профиль в Центре аккаунта, пользовательские поля профиля при регистрации и конечные точки загрузки аватаров теперь также больше не ограничены только для разработчиков.
Также были исправлены несколько важных моментов:
Тема, платформа и фирменный цвет применяются до гидратации для снижения эффекта "мигания" интерфейса.
Повышенная верификация теперь ограничена только записями подтверждения разрешений пользователя.
Социальные аккаунты можно связывать без пароля, электронной почты или номера телефона, если у пользователя нет устаревших методов проверки безопасности.
Редактирование имени пользователя в консоли теперь перенаправляется в Центр аккаунта для завершения необходимой проверки.
Политики по имени пользователя и коду подтверждения#
Теперь правила для имен пользователей на уровне арендатора настраиваются в разделе Консоль > Вход > Регистрация и вход > Дополнительные параметры.
Политика охватывает чувствительность к регистру, ограничения по длине и допустимые типы символов. Она применяется ко всем действиям пользователя над своим именем, включая регистрацию, заполнение профиля, Центр аккаунта, Account API и /me.
Переход на регистронезависимые имена пользователей защищен: Logto проверяет существующие имена, отличающиеся только регистром, и блокирует изменение политики до разрешения конфликтов. OIDC поле preferred_username теперь также возвращает username пользователя, если profile.preferredUsername не задано.
Управление отправкой кодов подтверждения также перенесено в настройки безопасности Консоли. Администраторы могут настраивать срок действия кода подтверждения и максимальное количество попыток ввода.
Logto теперь применяет системное ограничение скорости отправки сообщений для каждого получателя по всем каналам валидации email/SMS, приглашений, включая Experience, MFA, Account API, Management API, /me, организационные приглашения и устаревший Interaction API.
В случае ограничения скорости отправки Logto генерирует событие webhook Message.RateLimited, которое теперь можно выбрать в настройках webhook в Консоли.
Доставка кодов подтверждения неизвестным получателям также подавляется при отключенной регистрации, что снижает риск появления базы логинов через подбор.
Для access token JWT в organization API теперь доступен context.organization с целевыми атрибутами организации: id, name, description и customData.
Это облегчает добавление claim для каждой организации без необходимости вкладывать всю карту организаций в каждый токен.
Также было внедрено несколько улучшений API:
POST /api/applications/:applicationId/roles теперь идемпотентен. Существующие идентификаторы ролей игнорируются вместо возврата 422 application.role_exists.
Эндпойнт теперь возвращает 201 с { roleIds, addedRoleIds } — похоже на схему назначения ролей пользователям.
Создание ролей организации с начальными scope теперь транзакционно: если совпадают некорректные ID scope, больше не остаётся частично созданных ролей.
В этот релиз включён блок правок, направленных на повышение защищенности протоколов и безопасности:
Формы автоотправки SAML IdP теперь экранируют значения HTML-атрибутов и отклоняют нестандартные action URL (не HTTP(S)).
Используется обновлённый samlify версии ^2.13.0 для лучшего экранирования XML в создаваемых SAML-assertion.
Проверка TOTP MFA отклоняет повторно отправленные коды одного или более старого счетчика времени.
Теперь OIDC запросы с null-байтами возвращают 400 invalid_request.
Payload для журналов аудита избавляется от null-байтов при сохранении.
Проверка на Blacklist email-субадресов больше не компилирует регулярные выражения из пользовательского ввода.
Logto Tunnel предотвращает чтение статических файлов вне заданного пути Experience.
Также внесены корректировки для совместимости и хранения: старые Safari и iOS 15 больше не вылетают на старте из-за несовместимого синтаксиса regex lookbehind, коннекторы OIDC enterprise могут получать discovery-конфигурации от провайдеров, которые не поддерживают обмен только JSON, а сбои загрузки пользовательских UI-ассетов через Azure Blob теперь обрабатываются как ошибки, допускающие повторную загрузку.
Для версии v1.41.0 требуется миграция базы данных. В релиз вошли изменения схемы для поддержки истечения паролей, политики по именам пользователя, политик по кодам подтверждения, индексов ограничения скорости для сообщений, дефолтов Центра аккаунта и индексов журналов сервисов.
После обновления выполните команду изменения базы данных до запуска новой версии. За подробностями обратитесь к гиду по обновлению.
Переменная окружения CASE_SENSITIVE_USERNAME больше не рекомендуется к использованию. Она продолжает работать как временный override, но теперь чувствительность имени пользователя к регистру должна настраиваться индивидуально на уровне арендатора через новую политику имени. Переменная будет удалена в следующем мажорном релизе.