Vai al contenuto
Torna alla documentazione di Launch

Scarica MarkdownDocumento originale su GitHub

Correzioni della disconnessione degli account e delle istanze multiple nell'SDK Launch e test di integrazione tra i due sistemi

Data: 2026-10-24. Completate le correzioni di competenza dell'SDK Launch nelle attività 1 e 3 autorizzate dall'utente, corrispondenti alla persistenza degli account di AUTH-08 e ad AUTH-10. Integrati gli aggiornamenti forniti da Licentivo e completati i test di integrazione locali. Questa attività non è stata messa in produzione, non ha pubblicato SDK e non ha eseguito commit o push Git.

Risultati della correzione

Le attività di disconnessione degli account in sospeso e l'accesso attualmente ripristinabile usano chiavi diverse nell'archivio sicuro. Se la scrittura del marcatore di disconnessione fallisce, viene eliminato soltanto il vecchio accesso appartenente a quell'istanza, senza eliminare altre sessioni. L'intenzione aggiuntiva di disconnessione locale dell'account viene registrata usando un digest dell'ambito e delle credenziali di sessione; viene verificata prima di ripristinare l'account, anche negli scenari di errori di scrittura/eliminazione dell'archivio sicuro e di riavvio dopo un timeout del mutex. Non conserva bearer, attestazioni di identità o licenze e non decide i permessi delle funzionalità.

Le operazioni del ciclo di vita degli account dello stesso utente del sistema operativo e dispositivo usano coordinamento tra istanze e processi. Le disconnessioni tardive delle vecchie istanze, le pulizie dopo HTTP 401, i reinvii dopo errori e le nuove disconnessioni dopo il successo non possono sovrascrivere o eliminare accessi nuovi salvati successivamente. Le attività in sospeso delle vecchie sessioni possono reinviare indipendentemente la revoca dell'account, senza ricreare il runtime di autorizzazione delle altre sessioni correnti.

Sono stati aggiornati i punti di ingresso del ciclo di vita Application per Go, JavaScript, Python, C#, Java, Ruby, Rust e C/C++, gli esempi nativi e le istruzioni di integrazione. Le firme dei metodi pubblici dello Store sicuro rimangono invariate; devono supportare correttamente più chiavi opache e il salvataggio atomico. Le credenziali degli account del MemoryStore predefinito continuano a essere conservate soltanto in memoria. Se né lo Store sicuro né il marcatore locale di disconnessione possono essere salvati in modo persistente, l'SDK segnala esplicitamente un errore e arresta questa istanza, senza dichiarare completata una disconnessione che sopravviva al riavvio.

Aggiornamenti Licentivo

I test effettivi di esecuzione di questa sessione hanno usato l'SDK ufficiale 0.11.1, con identificativo dello snapshot fissato a local-20261024-5d74ba5ea131. La sincronizzazione ha usato lo script di importazione già presente nel repository. Il manifest comprende 115 file: 23 effettivamente modificati, 92 invariati, nessun nuovo file. Le modifiche corrispondono a 17 file sorgente a monte; il nucleo C è incluso più volte nei pacchetti nativo, Ruby e Rust. Al completamento dei test sono stati verificati gli hash dei file di destinazione e dello snapshot a monte di questa importazione sottoposta a test.

Il codice sorgente del server Licentivo non è stato modificato da questa attività; l'implementazione delle autorizzazioni dell'SDK usa la versione fornita dall'altra parte. I test locali sono stati adeguati al contratto aggiornato: la disconnessione conserva le credenziali e i file dei permessi condivisi della macchina e il registro di disconnessione dell'SDK blocca le vecchie sessioni; la seconda ricevuta di uno scollegamento duplicato può essere stale. Continuano a essere verificati il rifiuto effettivo dell'esecuzione, il ripristino della nuova associazione e la quota di rilascio autonomo; questi requisiti applicativi non sono stati allentati.

Al termine, lo spazio di lavoro era stato ulteriormente aggiornato all'SDK Licentivo 0.11.2 (licentivo-sdk-v0.11.2-release-20261024). Gli hash dei 115 file di destinazione correnti corrispondono al manifest e ai file sorgente a monte. Rispetto allo snapshot testato in questa sessione, nei sorgenti a monte sono cambiati soltanto VERSION, la costante VERSION di Ruby e il numero di versione CMake; l'implementazione delle autorizzazioni è identica. Lo script di importazione corrente aggiunge anche la ricerca delle librerie native nella directory delle estensioni della gem Ruby. I record dei test di esecuzione precedenti si riferiscono allo snapshot fisso 0.11.1; questo report non costituisce un registro di collaudo dei pacchetti della release 0.11.2.

Verifica

Ambito Risultato
HTTP degli account Go Launch, DPAPI, errori di archiviazione della disconnessione e blocchi tra processi 26 record superati, inclusi i sottocasi; nessun errore né test saltato
Regressione degli account Go e dell'SDK firmato dopo la sincronizzazione dell'SDK ufficiale 21 verifiche superate; saltati due test HTTP che richiedono database indipendenti, già verificati nella riga precedente e nei test di integrazione effettivi tra i due sistemi
Regressione delle autorizzazioni HTTP Licentivo correnti e controlli specifici Unendo due esecuzioni per caso di test, 62 record finali superati; inclusa la nuova verifica dopo la correzione delle asserzioni sulle ricevute duplicate
SDK Go ufficiale corrente 67 record superati, nessun errore
JavaScript / Python 14 / 12 verifiche superate, incluso il runtime con firme reali
C# / Java Ciclo di vita e runtime ufficiale verificati; 9 gruppi di test Java su account/sicurezza superati
Ruby / Rust 17 verifiche Ruby superate per il wrapper e l'SDK nativo effettivo; 16 verifiche Rust superate
C / C++ Entrambi i driver del ciclo di vita dell'SDK con firme reali superati, coprendo DPAPI, assenza di rete, errori di archiviazione e disconnessione delle vecchie istanze

I test di integrazione reali tra i due sistemi hanno usato Launch effettivo, Licentivo corrente, MySQL, SDK Go Launch, SDK ufficiale di autorizzazione e DPAPI, ottenendo 18 record di fasi superate (17 fasi di verifica e un record di completamento). Comprendono sincronizzazione della durata degli acquisti, funzionalità protette effettive, ripristino dopo la chiusura ordinaria, errore di scrittura dell'archivio di disconnessione/errori sia di scrittura sia di eliminazione combinati con interruzioni di rete su entrambi i sistemi, rifiuto del ripristino del vecchio account dopo il riavvio, reinvio della revoca dopo il ripristino della rete, nuovo accesso, perdita delle risposte, scollegamento remoto, rinnovi e rimborsi e rifiuto dell'autorizzazione dopo storni.

Le verifiche specifiche con i servizi reali hanno inoltre confermato che: inviare ID di operazione diversi per la stessa generazione di associazione consuma una sola unità della quota di rilascio autonomo; la disconnessione precedente non elimina le credenziali e i permessi della nuova associazione, che può essere ripristinata anche senza rete; un nuovo JWT emesso per lo stesso vecchio sid non può ripristinare un'associazione già disconnessa, mentre un nuovo accesso reale può attivarla; i vecchi ticket di disconnessione non influiscono sulle nuove associazioni; l'esecuzione offline non supera la scadenza firmata già nota.

In questa sessione non sono emersi nuovi problemi applicativi bloccanti. I test di esecuzione sono stati svolti su Windows; la catena applicativa reale tra i due sistemi ha usato Go, mentre gli altri linguaggi hanno completato test locali dell'SDK firmato. I servizi di pagamento e traduzione erano simulazioni isolate, senza addebiti, rimborsi o distribuzioni reali; non è stato effettuato alcun accesso a 192.168.2.177. È stato confermato l'arresto del servizio Licentivo temporaneo e di MySQL, conservando i servizi preesistenti e le altre modifiche dello spazio di lavoro.

I log originali, gli snapshot dei sorgenti sottoposti a test e gli strumenti di verifica si trovano nella directory ignorata .local/account-store-fix-20261024/. Un riepilogo condivisibile è disponibile nelle prove di verifica.