Aggiornamenti di prodotto Logto
Logto v1.40.0 introduce una selezione di intervallo temporale per i log di audit, payload webhook più ricchi per la membership delle organizzazioni, grandi miglioramenti delle prestazioni per le organizzazioni di grandi dimensioni e diversi miglioramenti di qualità della vita per l'hosting autonomo.
Logto v1.40.0 è una release che rafforza la piattaforma. Rende i log di audit pratici su larga scala, ti dice esattamente cosa è cambiato nei webhook della membership delle organizzazioni, accelera le query sulle organizzazioni per tenant molto grandi e rimuove alcuni punti di frizione di lunga data per i deployment self-hosted. Arrivano anche tre nuovi connettori. Ecco cosa c'è di nuovo.
Log di audit che puoi realmente circoscrivere
I log di audit sono più utili quando qualcosa è appena successo — ma fino ad ora la Console recuperava una finestra illimitata, il che diventava lento per i tenant con volumi di log molto grandi.
Questa release aggiunge un selettore di intervallo temporale alla pagina dei log di audit, impostato di default sugli ultimi 7 giorni. Sono disponibili finestre predefinite (Ultima ora, Ultime 24 ore, Ultimi 7 giorni, Ultimi 30 giorni) e si può selezionare un intervallo personalizzato; i log più vecchi restano raggiungibili semplicemente ampliando la finestra (#8810).
Sotto il cofano, la Management API guadagna i parametri di query start_time e end_time su GET /api/logs e GET /api/hooks/{id}/recent-logs (limiti esclusivi in millisecondi unix), così puoi circoscrivere anche le query sui log in modo programmatico (#8806). Per i tenant molto grandi, un nuovo parametro enableCap=true interrompe la query di conteggio a circa 10.000 righe e restituisce un header Total-Number-Is-Capped: true, scambiando un totale esatto con una risposta che non rischia il timeout della query; la Console passa a una visualizzazione Prev/Next quando viene raggiunto il limite (#8796, #8802). Il comportamento di default senza il parametro resta invariato.
I webhook della membership delle organizzazioni ora dicono cosa è cambiato
Il webhook Organization.Membership.Updated indicava che la membership era cambiata, ma non cosa fosse cambiato. Ora fornisce campi delta espliciti — addedUserIds / removedUserIds e addedApplicationIds / removedApplicationIds — su tutti i punti di accesso della membership, oltre a addedUserIds all'accettazione di un invito e nell'approvvigionamento just-in-time (email-domain e provisioning JIT aziendale SSO) (#8840).
Questa modifica è completamente aggiuntiva e non rompe la compatibilità: i delta vuoti vengono omessi e ogni array è limitato a 5000 elementi per le operazioni bulk (riconcilia tramite GET /organizations/:id/users o .../applications quando superi questo limite). Consulta la webhook reference per tutti i dettagli del contratto. Questo lavoro sostituisce una precedente proposta della community — merito a @chiche84 (#8752).
Mentre eravamo sul codice delle sessioni, anche GET /api/my-account/sessions ha guadagnato un flag isCurrent su ogni voce, così le UI di gestione delle sessioni possono evidenziare la riga "Questo dispositivo" ed evitare di revocare la sessione dell'utente attuale (#8731).
Organizzazioni che restano veloci mentre crescono
Diverse modifiche mirano ai tenant con organizzazioni molto grandi:
GET /organizations/:id/usersora aggrega i ruoli tramite una sottoqueryLATERAL, così il comandoLIMITlimita il set di utenti prima che vengano analizzati i ruoli — invece di materializzare l'intera joinmembri × ruoliad ogni richiesta paginata (#8826).- Due nuovi indici secondari accelerano le ricerche inverse: uno su
organization_user_relations (tenant_id, user_id), usato a ogni accesso e dal middleware della membership (#8818), e uno suorganization_role_user_relations (tenant_id, organization_id, user_id), utilizzato dagetUserScopese dalle join ruolo per utente (#8819). PUT /organizations/:id/userspassa a una nuova query basata su delta che scrive solo le righe effettivamente modificate, invece di riscrivere ogni riga di membership a ogni chiamata — e mantiene le assegnazioni dei ruoli per i membri che restano dopo l'aggiornamento (#8820).
Correzioni su Account Center e sulla procedura di autenticazione
- Termini su accesso-alla-registrazione. Quando la policy dell'accordo è "richiedi accettazione della checkbox solo in fase di registrazione", accedere con una email o telefono non registrati e scegliere "crea un nuovo account" ora mostra il consenso ai termini prima della creazione dell'account — corrispondendo alle flow di registrazione diretta e social/SSO (#8835).
- Impostazione iniziale della password. Gli utenti senza password, email o telefono ora possono impostare la loro prima password tramite l'Account API senza una registrazione di verifica (#8746).
- Autenticazione silenziosa. In caso di errore user-info — ad esempio un access token scaduto dopo il cambio utente nello stesso browser — Account Center si ri-autentica con
prompt=noneinvece di reindirizzare alla schermata di login, grazie a @taka-guevara (#8785). - Scadenza sessione e callback social più puliti. Le sessioni scadute dell'Account Center reindirizzano senza mostrare l'errore di login manuale (#8830), il callback per la connessione social ora legge correttamente
connectorId(#8758) e l'etichetta del toggle per la verifica in 2 step è più chiara (#8792). - i18n. Corretto il termine cinese per "Passkey" nelle frasi MFA, grazie a @rotempasharel1 (#8870).
Nuovi e migliorati connettori
Questa release aggiunge tre connettori e ne migliora molti altri — diversi dei quali dalla community:
- Connettore email MailJunky per email di autenticazione transazionale, contributo di @devadarshh (#8638).
- Connettore SMSBao per SMS domestici di verifica, contributo di @wintbiit (#8871).
- Servizio di autenticazione SMS Aliyun come connettore, contributo di @CertStone (#8385).
- Aliyun Direct Mail ora permette la configurazione della regione Direct Mail (#8892).
- WeCom recupera dettagli più ricchi del profilo utente via chiamate API aggiuntive, contributo di @liyujun-dev (#8191).
- SMTP
authora può omettereuserepass, quindi i relay che autorizzano per sorgente (es. IP/VLAN) funzionano senza dover creare credenziali (#8888). - Connector Kit ha rafforzato il rilevamento delle URL branding nelle email per evitare falsi positivi su abbreviazioni puntate, grazie a @aayushbaluni (#8747).
Per gli utenti self-hosted
Alcuni cambiamenti sono pensati per semplificare i deployment OSS:
Configurazione admin air-gapped. I comandi
installedb seedora accettano il flag--dapc(alias--disable-admin-pwned-password-check). La politica per la password seed dell’admin di default impone il controllo delle password violate tramite Have I Been Pwned, che chiamaapi.pwnedpasswords.comad ogni inserimento di password admin — e blocca il primo accesso admin quando quell’endpoint non è raggiungibile. Usando--dapcla politica è seedata disabilitando il controllo violazione, così la creazione dell’admin non dipende più dall’accesso alla rete esterna. (Credit @darcyYe, #8859)
Chiavi di firma admin dal database. I deployment OSS ora leggono le chiavi di firma dell’amministratore direttamente dal database, eliminando la necessità di configurare mapping host/DNS extra che precedentemente permettevano al container Logto di recuperare la propria configurazione OIDC del tenant admin tramite endpoint esterno (#8869).
Migrazione richiesta. La v1.40.0 include modifiche allo schema del database (i nuovi indici sulle relazioni delle organizzazioni e colonne interne aggiuntive). Dopo aver scaricato la nuova versione, eseguire la modifica del database prima di avviare il server. Consulta la guida di aggiornamento.
Inizia subito
Pronto ad aggiornare? Consulta la nostra guida di aggiornamento per istruzioni passo-passo.
Per la lista completa delle modifiche, vedi la pagina delle release su GitHub.
Hai domande o feedback? Unisciti a noi su Discord o apri una issue su GitHub.

