Logto v1.46.0 è arrivato. Porta l'autenticazione step-up OIDC, l’accesso con Ethereum, un modo per mantenere il prompt Salva Password di iOS, token di accesso personale self-service e una serie di rafforzamenti della sicurezza.
SimengDeveloper
Smetti di sprecare settimane sull'autenticazione degli utenti
Lancia app sicure più velocemente con Logto. Integra l'autenticazione degli utenti in pochi minuti e concentrati sul tuo prodotto principale.
Logto v1.46.0 introduce l'autenticazione step-up OIDC per azioni sensibili, Sign-In con Ethereum, un modo per mantenere il prompt "Salva Password" su iOS e token di accesso personale self-service nel Centro Account, insieme al CAPTCHA GeeTest, attributi statici SAML e una serie di rafforzamenti della sicurezza. Ecco cosa c'è di nuovo.
Ora le app possono richiedere un accesso recente o più forte prima di azioni sensibili, usando i parametri standard OIDC.
Richiedi e verifica: Passa acr_values e max_age nella richiesta di autorizzazione, quindi leggi acr, amr e auth_time dai token ID, token di accesso e risposte di introspezione. I valori ACR supportati sono segnalati nel documento di discovery.
Integrato nel Centro Account: Ora il Centro Account autorizza le operazioni sensibili delle API Account con un token di accesso first-party fresco. Quando l'accesso non è abbastanza recente, l'API Account risponde con una challenge step-up RFC 9470.
Finestra configurabile: Imposta quanto deve essere recente l’accesso in Console > Esperienza di accesso > Centro account > Autenticazione recente (10 minuti di default). Un client può comunque richiedere una finestra più breve tramite max_age.
Compatibile all'indietro: Le app che chiamano direttamente l'API Account possono continuare a usare un ID di verifica per le operazioni sensibili.
Il nuovo connector sociale Ethereum Wallet (@logto/connector-siwe) permette agli utenti di accedere con un wallet EVM. Gli utenti con un wallet browser (provider EIP-1193 iniettato) firmano un messaggio Sign-In with Ethereum (EIP-4361) una tantum senza lasciare la pagina di accesso. Un indirizzo funziona su tutte le chain EVM supportate e gli amministratori possono limitare gli ID chain consentiti.
Su iOS, ASWebAuthenticationSession si chiude appena vede la callback URL dell’app, il che fa scomparire subito il prompt di sistema "Salva Password" dopo un accesso con password.
Passa il nuovo parametro di accesso confirm_redirect_policy=password per mostrare una pagina "Continua" dopo che l’utente inserisce la password. La pagina torna all’app solo quando l’utente seleziona "Continua", quindi il prompt resta visibile. Senza parametro, Logto reindirizza subito come prima.
Quando i token di accesso personale sono attivi nel Centro Account, gli utenti possono creare, rinominare e revocare i propri token nella pagina Sicurezza del Centro Account. Ogni token viene mostrato solo una volta alla creazione e scade entro 365 giorni.
Le stesse operazioni sono disponibili tramite l’API Account sotto /api/my-account/personal-access-tokens, con il nuovo scope urn:logto:scope:personal_access_tokens.
GeeTest CAPTCHA: GeeTest CAPTCHA v4 è ora disponibile in Console > Sicurezza > CAPTCHA. È pensato per esperienze di accesso rivolte alla Cina continentale, dove Google reCAPTCHA spesso non è raggiungibile.
Richiedi MFA per un utente: Attiva Richiedi configurazione MFA nella pagina dei dettagli utente, oppure imposta mfa.required tramite la Management API. L’utente deve configurare MFA al prossimo accesso, a prescindere dalla politica MFA a livello di organizzazione.
Sblocca utente: Una nuova azione nella pagina dettagli utente rimuove i blocchi di accesso e verifica sicurezza per l’ID utente, email principale, telefono principale e nome utente in una volta sola.
Importazione password SHA-crypt: Importa utenti con hash password SHA-crypt ($5$ e $6$) usando l’algoritmo password Legacy.
access_denied se l'accesso viene annullato: L’annullamento della pagina di consenso o un accesso diretto fallito ora riporta l’utente all’app client con access_denied. Esperienze di accesso personalizzate possono terminare una interazione allo stesso modo con POST /api/experience/abort.
login_hint per il Centro Account: Aggiungi login_hint a qualsiasi URL del Centro Account per precompilare l’identificativo quando l’utente deve accedere.
Attributi statici SAML: Invia valori di attributo fissi, come un account o ID sito, in ogni asserzione SAML. Configurali nella sezione Attributi statici della tab di mappatura attributi dell’app SAML, oppure tramite staticAttributes nella Management API.
Cross-Origin-Opener-Policy per Porta la tua UI: Scegli same-origin-allow-popups oppure same-origin in Console > Esperienza di accesso > Branding > Porta la tua UI. L’impostazione predefinita non invia header, così le app che aprono l’accesso in popup continuano a funzionare.
Cerca utenti per dati personalizzati: GET /api/users accetta un parametro query customData ripetibile, es. customData={"customId":114514}.
Trova organizzazioni per dominio provisioning just-in-time: GET /api/organizations accetta il parametro query jitEmailDomain che restituisce le organizzazioni in cui verrebbe provisionato un utente con quel dominio email.
hasPassword per membri di organizzazione: GET /api/organizations/:id/users ora mostra se ciascun membro ha impostato una password.
Webhook deliveryId: Ogni payload webhook ora include un deliveryId che resta uguale nei retry, così i destinatari possono processare ogni consegna una sola volta. È anche l’ID della voce nel log di audit della consegna.
Questa release include fix di sicurezza su MFA, accesso social ed enterprise, API Account e Logto Tunnel.
Azione richiesta: sincronizzazione email per connector OAuth 2.0 e Azure AD: Il connector sociale OAuth 2.0 aggiunge un interruttore Disabilita sincronizzazione email, come il connector Microsoft Azure AD. Solo l’aggiornamento non cambia il comportamento dei connector già esistenti, quindi rivedi ogni connector OAuth 2.0 e Azure AD e attiva l’interruttore quando il provider non verifica che gli utenti siano proprietari delle email che restituisce.
Accesso con Apple: Il connector Apple ora prende l’email utente solo dall’Apple ID token e non restituisce email se Apple la segna come non verificata.
Autenticazione multi-fattore: I requisiti MFA a livello utente e organizzazione ora hanno la precedenza sulle impostazioni account che disattivano o saltano la MFA e le verifiche MFA sono legate all’account per cui sono state create.
SSO Enterprise: I connector SAML ora accettano una asserzione solo se il suo audience corrisponde esattamente all’Audience URI (SP Entity ID) del connector. Una nuova impostazione controlla se nomi e loghi dei connector SSO appaiono nella pagina di accesso prima che corrisponda un dominio email.
Account API e app di terze parti: Recuperare token provider social o SSO enterprise memorizzati, e leggere codici di backup, sessioni, autorizzazioni e dispositivi affidati ora richiede un’applicazione first-party.
Altri rafforzamenti: Codici di autorizzazione, codici dispositivo, richieste di autorizzazione push e token monouso sono ora rigorosamente a uso singolo. Gli errori delle richieste dei connector sono limitati a nome, codice e messaggio prima di essere registrati o restituiti. Le richieste SAML malformate sono respinte con 400. Logto Tunnel risolve i symlink e limita le richieste Range quando serve file statici.
Safari e iOS vecchi: La pagina di accesso non appare più vuota su iOS e Safari precedenti alla versione 16.4.
Errori accesso sociale più chiari: Un provider irraggiungibile restituisce ora 502 connector.social_provider_unreachable, un’autorizzazione negata restituisce 401 connector.authorization_failed, e gli errori dei connector mostrano il vero messaggio del provider invece di {}.
Valori scope con spazio all’inizio: Le richieste di refresh token da client come OpenAI Codex che inviano uno scope con uno spazio iniziale non falliscono più con invalid_scope, così l’utente rimane connesso.
Validazione metadata applicazione: Creare o aggiornare un'applicazione ora rifiuta chiavi customClientMetadata sconosciute, così refusi come refreshTokenTtlInDay non passano inosservati.
Link di paginazione: I link di paginazione sugli endpoint di lista ora mantengono ogni valore di un parametro query ripetuto.
Segnaposto attributi SAML: Gli attributi mappati con nomi come o365role ora trasportano il valore effettivo dell’utente invece di un segnaposto letterale.
Correzioni connector: I connector OAuth 2.0 standard e OIDC accettano expires_in come stringa e scope come array nelle risposte dei token, e il connector Patreon passa all’API Patreon v2 così l’accesso con Patreon funziona di nuovo.
Console e Centro Account: La ricerca organizzazione funziona nelle regole di controllo accesso delle applicazioni, i nomi delle risorse API sono mostrati per intero quando si assegnano permessi, e il Centro Account non mostra più "Powered by Logto" durante il caricamento quando il branding è nascosto.
Guida integrazione Swift: Gli esempi di codice ora usano un nome client coerente, risolvendo l’errore Cannot find 'client' in scope. (Grazie a @timokoethe).
Rivedi prima di aggiornare: Controlla l’email sync per OAuth 2.0 e Azure AD, l’audience delle asserzioni SAML e i cambiamenti sull’API Account di terze parti nella sezione Rafforzamenti della sicurezza.
Node.js 26: L’immagine Docker ufficiale ora gira su Node.js 26. Logto supporta Node.js 22, 24 e 26, con versioni minime 22.23.4, 24.22.1 e 26.12.1.
Richiesta migrazione database: Esegui il comando di alterazione database (logto db alteration deploy) dopo l'aggiornamento e prima di avviare la nuova versione.
Avvio più resiliente: Il core e i comandi CLI per il database ora ritentano la connessione al database in caso di errore DNS invece di uscire subito.
Avviso su endpoint admin: Logto ora logga un avviso quando una richiesta /console non corrisponde a nessun endpoint admin configurato, aiutando a individuare un ADMIN_ENDPOINT errato.