• release

Mises à jour du produit Logto

Logto v1.40.0 apporte un sélecteur de plage de temps pour les journaux d'audit, des charges utiles de webhook d'adhésion à l'organisation plus riches, de grandes améliorations de performance pour les grandes organisations, et plusieurs améliorations de qualité de vie pour l'auto-hébergement.

Yijun
Yijun
Developer

Arrêtez de perdre des semaines sur l'authentification des utilisateurs
Lancez des applications sécurisées plus rapidement avec Logto. Intégrez l'authentification des utilisateurs en quelques minutes et concentrez-vous sur votre produit principal.
Commencer
Product screenshot

Logto v1.40.0 est une version qui renforce la plateforme. Elle rend les journaux d'audit pratiques à grande échelle, t'indique précisément ce qui a changé dans les webhooks d'adhésion à l'organisation, accélère les requêtes d'organisation sur les grands locataires, et supprime quelques points de friction persistants pour les déploiements auto-hébergés. Trois nouveaux connecteurs font également leur entrée. Voici les nouveautés.

Journaux d'audit réellement ciblables

Les journaux d'audit sont les plus utiles quand quelque chose vient de se produire — mais jusque-là, la Console récupérait une fenêtre illimitée, ce qui pouvait devenir lent chez les locataires avec un volume massif de logs.

Cette version ajoute un sélecteur de plage de temps à la page des journaux d'audit, par défaut sur les 7 derniers jours. Tu as des fenêtres préréglées (Dernière heure, Dernières 24 heures, 7 derniers jours, 30 derniers jours) et une plage personnalisée, et les logs plus anciens restent accessibles en élargissant la fenêtre (#8810).

Sous le capot, l’API de gestion gagne les paramètres de requête start_time et end_time pour GET /api/logs et GET /api/hooks/{id}/recent-logs (bornes exclusives en millisecondes unix), tu peux donc cibler les requêtes de logs par programmation aussi (#8806). Pour les très grands locataires, un nouveau paramètre enableCap=true coupe court à la requête de comptage vers ~10,000 lignes et retourne un en-tête Total-Number-Is-Capped: true, troquant le total exact contre une réponse qui évite le statement_timeout; la Console bascule vers un affichage Précédent/Suivant quand le plafond est atteint (#8796, #8802). Le comportement par défaut sans ce paramètre ne change pas.

Les webhooks d'appartenance à l'organisation indiquent maintenant les changements

Le webhook Organization.Membership.Updated signalait seulement qu’un changement avait eu lieu, mais pas ce qui avait changé. Il transporte désormais des champs de delta explicites — addedUserIds / removedUserIds et addedApplicationIds / removedApplicationIds — sur tous les endpoints d’adhésion, ainsi que addedUserIds lors de l’acceptation d’une invitation et du provisioning automatique (par domaine email ou SSO d’entreprise en JIT) (#8840).

Cela est totalement additionnel et non-bloquant : les deltas vides sont omis, et chaque tableau est plafonné à 5000 entrées pour les opérations de masse (reconcilie via GET /organizations/:id/users ou .../applications si tu dépasse ce seuil). Consulte la référence webhook pour le contrat complet. Ce travail remplace une proposition communautaire antérieure — crédit à @chiche84 (#8752).

Pendant qu’on y était dans le code des sessions, GET /api/my-account/sessions a aussi reçu un drapeau isCurrent sur chaque entrée, permettant aux interfaces de gestion de session de marquer la ligne "Cet appareil" et d’éviter la révocation de la session courante (#8731).

Des organisations toujours rapides à mesure qu’elles grandissent

Plusieurs changements ciblent les locataires avec de très grandes organisations :

  • GET /organizations/:id/users agrège désormais les rôles via une sous-requête LATERAL, ainsi le LIMIT filtre les utilisateurs avant l’analyse des rôles — au lieu de matérialiser tout le produit cartésien membres × rôles à chaque pagination (#8826).
  • Deux nouveaux index secondaires accélèrent les recherches inversées : un sur organization_user_relations (tenant_id, user_id), utilisé à chaque connexion et par le middleware d’adhésion (#8818), et un sur organization_role_user_relations (tenant_id, organization_id, user_id), utilisé par getUserScopes et les jointures de rôles par utilisateur (#8819).
  • PUT /organizations/:id/users passe à une nouvelle requête delta qui n’écrit que les lignes effectivement modifiées, au lieu de réécrire chaque ligne d’adhésion à chaque appel — et préserve les rôles des membres restant après la mise à jour (#8820).

Correctifs pour Account Center et la connexion

  • Conditions à la création lors de la connexion. Quand la politique d’accord exige une case à cocher à l’inscription seulement, se connecter avec un email ou un téléphone non enregistré, puis choisir "créer un nouveau compte" déclenche maintenant l’accord des conditions avant la création du compte — en cohérence avec l'inscription dédiée et les parcours sociaux/SSO (#8835).
  • Mise en place initiale du mot de passe. Les utilisateurs n’ayant ni mot de passe, ni email, ni téléphone peuvent désormais définir leur premier mot de passe via l’API Compte sans enregistrement de vérification (#8746).
  • Ré-authentification silencieuse. Sur une erreur d’informations utilisateur — par exemple, si un jeton d’accès est périmé après avoir changé d’utilisateur dans le même navigateur — Account Center se ré-authentifie avec prompt=none au lieu de renvoyer vers la page de connexion, grâce à @taka-guevara (#8785).
  • Expirations de session et callbacks sociaux plus nets. Les sessions expirées dans Account Center redirigent sans afficher l’erreur manuelle lors de l’identification (#8830), le callback de liaison sociale lit maintenant correctement connectorId (#8758), et le libellé pour l’activation/désactivation de la double vérification est plus clair (#8792).
  • i18n. Correction de la traduction chinoise de "Passkey" dans les phrases MFA, merci à @rotempasharel1 (#8870).

Nouveaux connecteurs et améliorations

Cette version ajoute trois connecteurs et en améliore plusieurs autres — beaucoup grâce à la communauté :

  • MailJunky connecteur email pour les emails transactionnels d’authentification, contribué par @devadarshh (#8638).
  • SMSBao connecteur SMS pour la vérification SMS domestique, contribué par @wintbiit (#8871).
  • Service d’authentification Aliyun SMS connecteur, contribué par @CertStone (#8385).
  • Aliyun Direct Mail permet maintenant de configurer la région Direct Mail (#8892).
  • WeCom récupère des informations de profil utilisateur plus riches via des appels API additionnels, contribué par @liyujun-dev (#8191).
  • SMTP auth peut à présent omettre user et pass, permettant aux relais autorisés par la source (ex : IP/VLAN) de fonctionner sans forger d’identifiants (#8888).
  • Connector Kit a raffiné la détection des URL de branding d’emails pour éviter les faux positifs sur les abréviations à points, merci à @aayushbaluni (#8747).

Pour les utilisateurs auto-hébergés

Quelques changements facilitent spécifiquement le déploiement OSS :

Mise en place admin hors-ligne. Les commandes install et db seed acceptent désormais un flag --dapc (alias --disable-admin-pwned-password-check). La politique de mot de passe du locataire admin active par défaut le contrôle des fuites Have I Been Pwned, ce qui interroge api.pwnedpasswords.com à chaque soumission de mot de passe admin — et bloque la première création d’admin si l’endpoint n’est pas joignable. Utiliser --dapc initialise la politique avec le contrôle désactivé, l’inscription admin n’a donc plus besoin d’accès réseau sortant. (Merci à @darcyYe, #8859)

Clés de signature admin depuis la base de données. Les déploiements OSS lisent désormais les clés de signature du locataire admin directement dans la base, supprimant les mappings d’hôte/DNS requis pour que le conteneur Logto récupère sa propre configuration OIDC admin via un endpoint configuré en externe (#8869).

Migration requise. v1.40.0 apporte des changements de schéma base (nouveaux index de relation organisation et colonnes internes supplémentaires). Après récupération de la nouvelle version, lance les changements base avant de démarrer le serveur. Consulte le guide de mise à niveau.

Pour commencer

Prêt à mettre à jour ? Consulte notre guide de mise à niveau pour les instructions pas à pas.

Pour la liste complète des modifications, vois la page de release GitHub.

Des questions ou des retours ? Rejoins-nous sur Discord ou ouvre un ticket sur GitHub.