Logto v1.46.0 est arrivé. Cette version apporte l'authentification graduée OIDC, la connexion avec Ethereum, une solution pour maintenir l'invite iOS « Enregistrer le mot de passe », des tokens d'accès personnels en libre-service, et une série de renforcements de la sécurité.
SimengDeveloper
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.
Logto v1.46.0 introduit l'authentification graduée OIDC pour les actions sensibles, la connexion avec Ethereum, un moyen de maintenir l'invite iOS "Enregistrer le mot de passe", et les tokens d'accès personnels en libre-service dans le Centre de Compte, ainsi que GeeTest CAPTCHA, les attributs statiques SAML, et une série de renforcements de la sécurité. Voici les nouveautés.
Les applications peuvent désormais exiger une connexion récente ou renforcée avant les actions sensibles, à l'aide des paramètres OIDC standards.
Demander et vérifier : Passez acr_values et max_age dans la requête d'autorisation, puis lisez acr, amr et auth_time depuis les tokens ID, les tokens d'accès et les réponses d'introspection. Les valeurs ACR supportées sont indiquées dans le document de découverte.
Intégré au Centre de Compte : Le Centre de Compte autorise désormais les opérations sensibles de l'API de Compte avec un token d'accès interne récent. Si la connexion n'est pas assez récente, l'API de Compte répond avec un défi d'authentification graduée RFC 9470.
Fenêtre configurable : Définissez à quel point la connexion doit être récente dans Console > Expérience de connexion > Centre de compte > Authentification récente (10 minutes par défaut). Un client peut toujours demander une fenêtre plus courte avec max_age.
Rétrocompatible : Les applications qui appellent directement l'API de Compte peuvent continuer à utiliser un ID d'enregistrement de vérification pour les opérations sensibles.
Le nouveau connecteur social Ethereum Wallet (@logto/connector-siwe) permet aux utilisateurs de se connecter avec un wallet EVM. Les utilisateurs ayant un wallet navigateur (un provider EIP-1193 injecté) signent un message unique Sign-In with Ethereum (EIP-4361) sans quitter la page de connexion. Une adresse fonctionne sur toutes les chains EVM supportées, et les admins peuvent restreindre les chain IDs autorisés.
Maintenir l'invite iOS Enregistrer le mot de passe#
Sur iOS, ASWebAuthenticationSession se ferme dès qu'il voit l'URL de callback de l'application, ce qui ferme l'invite système "Enregistrer le mot de passe" juste après une connexion avec mot de passe.
Passez le nouveau paramètre de connexion confirm_redirect_policy=password pour afficher une page "Continuer" après que l'utilisateur ait saisi un mot de passe. La page ne retourne vers l'appli que lorsque l'utilisateur sélectionne "Continuer", maintenant ainsi l'invite à l'écran. Sans ce paramètre, Logto redirige comme avant immédiatement.
Quand les tokens d'accès personnels sont activés dans le Centre de Compte, les utilisateurs peuvent créer, renommer et révoquer leurs propres tokens dans la page Sécurité du Centre de Compte. Chaque token n'est affiché qu'une seule fois à la création et expire dans les 365 jours.
Les mêmes opérations sont disponibles via l’API de Compte sous /api/my-account/personal-access-tokens, avec le nouveau scope urn:logto:scope:personal_access_tokens.
GeeTest CAPTCHA : GeeTest CAPTCHA v4 est maintenant disponible sous Console > Sécurité > CAPTCHA. Il convient aux expériences de connexion visant la Chine continentale, où Google reCAPTCHA est souvent inatteignable.
Exiger la configuration MFA pour un utilisateur : Activez Exiger la configuration MFA sur la page de détails de l'utilisateur, ou définissez mfa.required via l’API de gestion. L'utilisateur doit configurer la MFA à sa prochaine connexion, indépendamment de la politique MFA au niveau de l'organisation.
Débloquer un utilisateur : Une nouvelle action de déblocage sur la page détails utilisateur lève les verrous de connexion et de vérification de sécurité pour l'ID de l'utilisateur, son e-mail principal, son téléphone principal et son nom d'utilisateur simultanément.
Importation de mot de passe SHA-crypt : Importez des utilisateurs avec des hachages de mot de passe SHA-crypt ($5$ et $6$) utilisant l'algorithme de mot de passe Legacy.
access_denied lors de l'annulation de la connexion : Annuler la page de consentement, ou un échec de connexion directe, renvoie désormais l'utilisateur à l'application cliente avec access_denied. Les expériences de connexion personnalisées peuvent aussi finir une interaction de cette manière avec POST /api/experience/abort.
login_hint pour le Centre de Compte : Ajoutez login_hint à n'importe quelle URL du Centre de Compte pour préremplir l'identifiant lorsque l'utilisateur doit se connecter.
Attributs statiques SAML : Envoyez des valeurs d'attribut fixes, telles qu'un ID de compte ou de site, dans chaque assertion SAML. Configurez-les dans la section Attributs statiques de l’onglet de mappage des attributs de l’application SAML ou via staticAttributes dans l'API de gestion.
Cross-Origin-Opener-Policy pour Apporte ton UI : Choisissez same-origin-allow-popups ou same-origin dans Console > Expérience de connexion > Branding > Apporte ton UI. Par défaut, aucun en-tête n’est envoyé, donc les applis qui ouvrent la connexion dans une popup continuent de fonctionner.
Recherche d'utilisateurs par données personnalisées : GET /api/users accepte un paramètre de requête répétable customData, par exemple customData={"customId":114514}.
Trouver les organisations par domaine de provisionnement just-in-time : GET /api/organizations accepte un paramètre de requête jitEmailDomain qui retourne les organisations dans lesquelles un utilisateur avec ce domaine email serait provisionné.
hasPassword pour les membres d’organisation : GET /api/organizations/:id/users indique désormais si chaque membre a défini un mot de passe.
Webhook deliveryId : Chaque charge utile webhook inclut désormais un deliveryId qui reste identique lors des réessais, permettant aux récepteurs de traiter chaque livraison une seule fois. C’est aussi l’ID de l’entrée de log d’audit de la livraison.
Cette version inclut des correctifs de sécurité sur la MFA, la connexion sociale et d'entreprise, l'API de Compte, et Logto Tunnel.
Action requise : synchronisation email pour les connecteurs OAuth 2.0 et Azure AD : Le connecteur social OAuth 2.0 standard ajoute un interrupteur Désactiver la synchronisation email aligné sur le connecteur Microsoft Azure AD. La mise à niveau seule ne modifie pas le comportement des connecteurs existants, donc vérifiez chaque connecteur social OAuth 2.0 et Azure AD et activez l’interrupteur lorsque le fournisseur ne vérifie pas la propriété des adresses email renvoyées.
Connexion avec Apple : Le connecteur Apple prend maintenant l’email utilisateur seulement depuis le token ID Apple, et ne renvoie aucun email quand Apple le marque comme non vérifié.
Authentification multi-facteurs : Les exigences MFA au niveau utilisateur et organisation prévalent désormais sur les paramètres de compte qui désactivent ou contournent la MFA, et les vérifications MFA sont liées au compte pour lequel elles ont été créées.
SSO d'entreprise : Les connecteurs SAML n’acceptent désormais une assertion que si son audience correspond exactement à l’URI Audience (SP Entity ID) du connecteur. Un nouveau paramètre contrôle si les noms et logos des connecteurs SSO apparaissent sur la page de connexion avant qu’un domaine de messagerie ne corresponde.
API de Compte et applis tierces : La récupération de tokens de fournisseurs SSO sociaux ou d’entreprise stockés, et la lecture des codes de secours, sessions, autorisations et appareils de confiance, requièrent désormais une application interne.
Davantage de renforcement : Les codes d’autorisation, codes d’appareil, requêtes d’autorisation poussées et tokens uniques sont à usage strictement unique. Les erreurs de requête connecteur sont réduites à leur nom, code et message avant d’être enregistrées ou renvoyées. Les requêtes SAML mal formées sont rejetées avec un 400. Logto Tunnel résout les symlinks et limite les requêtes Range lors de la diffusion de fichiers statiques.
Safari et iOS plus anciens : La page de connexion ne charge plus page blanche sur iOS et Safari versions inférieures à 16.4.
Erreurs de connexion sociale plus claires : Un fournisseur inatteignable renvoie désormais 502 connector.social_provider_unreachable, une autorisation refusée renvoie 401 connector.authorization_failed et les erreurs de connecteurs affichent le vrai message du fournisseur au lieu de {}.
Valeurs scope avec espace : Les requêtes de refresh token envoyant un scope débutant par un espace, comme OpenAI Codex, ne tombent plus en erreur avec invalid_scope, permettant à l’utilisateur de rester connecté.
Validation des métadonnées d’application : La création ou la mise à jour d’une application rejette désormais les clés customClientMetadata inconnues, évitant que des erreurs telles que refreshTokenTtlInDay passent discrètement.
Liens de pagination : Les liens de pagination sur les endpoints de liste conservent désormais chaque valeur d’un paramètre de requête répété.
Espaces réservés d'attribut SAML : Les attributs mappés comme o365role transportent maintenant la vraie valeur utilisateur et non un espace réservé littéral.
Corrections de connecteurs : Les connecteurs OAuth 2.0 et OIDC standards acceptent expires_in comme chaîne et scope comme tableau dans la réponse au token, et le connecteur Patreon passe à l'API Patreon v2 pour refaire fonctionner la connexion avec Patreon.
Console et Centre de Compte : La recherche d'organisation fonctionne dans les règles de contrôle d'accès aux applications, les noms de ressources API sont affichés en intégralité à l’attribution des permissions, et le Centre de Compte n’affiche plus "Propulsé par Logto" au chargement quand le branding est caché.
Guide d’intégration Swift : Les exemples de code utilisent désormais un nom de client cohérent, résolvant l’erreur Cannot find 'client' in scope. (Merci à @timokoethe).
Vérifiez avant de mettre à jour : Consultez la synchronisation email OAuth 2.0 et Azure AD, l’audience d’assertion SAML, et les changements d’API de Compte tierces sous Renforcement de la sécurité.
Node.js 26 : L’image Docker officielle s’appuie désormais sur Node.js 26. Logto supporte Node.js 22, 24 et 26, avec des versions minimum 22.23.4, 24.22.1 et 26.12.1.
Migration base de données requise : Exécutez la commande de modification de base (logto db alteration deploy) après la mise à jour et avant de démarrer la nouvelle version.
Démarrage plus résistant : Les commandes Core et CLI pour la base retentent désormais la connexion sur échec DNS au lieu de quitter immédiatement.
Avertissement endpoint admin : Logto journalise désormais un avertissement lorsqu’une requête /console ne correspond à aucun endpoint admin configuré, ce qui aide à repérer une mauvaise configuration ADMIN_ENDPOINT.
Merci aux membres de la communauté dont le travail a été inclus dans cette version :
@nicolaj0: webhook deliveryId (#9882), hasPassword pour les membres d'organisation (#9883), filtre organisation par domaine de provisionnement just-in-time (#9912), validation des clés customClientMetadata (#9931), erreurs de connexion sociale plus claires (#9879, #9880), retries de connexion base de données (#9881, #9928), et gestion des erreurs de requête connecteurs (#9849)
@RaphaelFakhri: paramètres de requête répétés dans les liens de pagination (#9811) (première contribution)