Case study

In che modo Uber riesce a evitare 4 milioni di login manuali all'anno con l'API Restore Credentials

Lettura di 5 minuti
Niharika Arora
Developer Relations Engineer

Uber è la più grande società di ridesharing al mondo, che trasporta milioni di persone da un luogo all'altro e supporta anche la consegna di cibo, il trasporto sanitario e la logistica delle merci. La semplicità di accesso è fondamentale per il suo successo: quando gli utenti passano a un nuovo dispositivo, si aspettano una transizione senza interruzioni, senza dover accedere di nuovo all'app Uber o eseguire l'autenticazione con password monouso basata su SMS. Questo frequente ricambio di dispositivi rappresenta una sfida, nonché un'opportunità per una forte fidelizzazione degli utenti. 

Per mantenere la continuità degli utenti, gli ingegneri di Uber si sono rivolti alla funzionalità Restore Credentials, uno strumento essenziale in un'epoca in cui il 40% delle persone negli Stati Uniti sostituisce il proprio smartphone ogni anno. A seguito di una valutazione della domanda degli utenti e della prototipazione del codice, hanno introdotto il supporto di Restore Credentials nell'app Uber per i passeggeri. Per verificare che il ripristino delle credenziali contribuisca a eliminare i problemi relativi ai nuovi accessi, il team Uber ha condotto un esperimento A/B riuscito per un periodo di cinque settimane. L'integrazione ha portato a una riduzione degli accessi manuali che, se proiettata sull'enorme base utenti di Uber, dovrebbe eliminare 4 milioni di accessi manuali all'anno.

Eliminare gli attriti di accesso con Ripristina credenziali

restore-credentials.gif

In passato sono stati effettuati tentativi di ripristino dell'account su nuovi dispositivi utilizzando soluzioni come il backup regolare dei dati e BlockStore, anche se entrambe le soluzioni richiedevano la condivisione diretta dei token di autenticazione dal dispositivo di origine a quello di destinazione. Poiché le informazioni sui token sono altamente sensibili, queste soluzioni vengono utilizzate solo in parte, per precompilare i campi di accesso sul dispositivo di destinazione e ridurre alcuni problemi durante i flussi di accesso. Le passkey vengono utilizzate anche per fornire un metodo di accesso sicuro e veloce, ma la loro natura avviata dall'utente ne limita l'impatto sulle transizioni fluide tra i dispositivi.

"Alcuni utenti non usano l'app Uber tutti i giorni, ma si aspettano che funzioni quando ne hanno bisogno", ha dichiarato Thomás Oliveira Horta, ingegnere Android di Uber. Scoprire di aver eseguito la disconnessione proprio mentre apri l'app per richiedere una corsa sul tuo nuovo smartphone Android può essere un'esperienza spiacevole e scoraggiante.

Con Ripristina credenziali, i tecnici sono riusciti a colmare questo divario. L'API genera un token univoco sul vecchio dispositivo, che viene spostato in modo semplice e silenzioso sul nuovo dispositivo quando l'utente ripristina i dati dell'app durante la procedura di onboarding standard. Questo processo sfrutta il meccanismo di backup e ripristino nativo del sistema operativo Android, garantendo il trasferimento sicuro della chiave di ripristino insieme ai dati dell'app. L'approccio semplificato garantisce un trasferimento dell'account semplice e sicuro, soddisfacendo i requisiti di sicurezza di Uber senza ulteriori input utente o overhead di sviluppo.

Nota:le chiavi di recupero e le passkey utilizzano la stessa implementazione del server sottostante. Tuttavia, quando li salvi nel database, devi distinguerli. Questa distinzione è fondamentale perché le passkey create dall'utente possono essere gestite direttamente dall'utente, mentre le chiavi di ripristino sono gestite dal sistema e nascoste all'interfaccia utente.

"Con l'adozione di Ripristina credenziali nell'app per i passeggeri di Uber, abbiamo iniziato a notare un utilizzo costante", ha affermato Thomás. In media, 10.000 utenti unici giornalieri hanno eseguito l'accesso con Ripristina credenziali nella fase di implementazione attuale e hanno usufruito di un'esperienza fluida quando hanno aperto l'app per la prima volta su un nuovo dispositivo. Prevediamo che questo numero raddoppierà una volta che l'implementazione sarà estesa a tutta la nostra base di utenti".

image_thomas2.png

Considerazioni sull'implementazione

L'integrazione è stata piuttosto semplice con piccoli aggiustamenti sul lato Android seguendo il codice campione e la documentazione La nostra app utilizzava già Gestore delle credenziali per le passkey e il backend richiedeva solo un paio di piccole modifiche. Pertanto, è stato sufficiente aggiornare la dipendenza di Gestore delle credenziali alla versione più recente per ottenere l'accesso alla nuova API Restore Credentials. Abbiamo creato una chiave di ripristino tramite lo stesso flusso di creazione della passkey e, quando la nostra app viene avviata su un nuovo dispositivo, verifica in modo proattivo la presenza di questa chiave tentando un recupero silenzioso della passkey. Se viene trovata la chiave di ripristino, viene utilizzata immediatamente per accedere automaticamente, bypassando qualsiasi accesso manuale."

Durante il processo di sviluppo, gli ingegneri di Uber hanno affrontato alcune sfide durante l'implementazione, dalla scelta del punto di ingresso giusto alla gestione del ciclo di vita delle credenziali nel backend.

Scegliere il punto di accesso Ripristina credenziali

Gli ingegneri hanno valutato attentamente i compromessi tra un'esperienza utente perfettamente fluida e la semplicità di implementazione quando hanno selezionato il punto di accesso di Ripristina credenziali da utilizzare per il recupero. Alla fine, hanno dato la priorità a una soluzione che offrisse un equilibrio ideale.

"Questa operazione può essere eseguita durante l'avvio dell'app o in background durante il ripristino e la configurazione del dispositivo, utilizzando BackupAgent", ha affermato Thomás. "Il punto di accesso per l'accesso in background è più semplice per l'utente, ma ha presentato sfide con le operazioni in background e ha richiesto l'utilizzo dell'API BackupAgent, il che avrebbe portato a una maggiore complessità in una base di codice grande come quella di Uber". Hanno deciso di implementare la funzionalità durante il primo avvio dell'app, che è stato molto più veloce dell'accesso manuale.

Affrontare le sfide lato server 

Durante l'integrazione con le API WebAuthn di backend sono emerse alcune sfide lato server, in quanto la loro progettazione presupponeva che la verifica dell'utente sarebbe sempre stata richiesta e che tutte le credenziali sarebbero state elencate nelle impostazioni dell'account utente. Nessuno di questi presupposti funzionava per le chiavi di ripristino delle credenziali non gestite dall'utente.

Il team di Uber ha risolto il problema apportando piccole modifiche ai servizi WebAuthn, creando nuovi tipi di credenziali per distinguere le passkey da Ripristina credenziali ed elaborarle in modo appropriato.

Gestione del ciclo di vita di Restore Credentials

Gli ingegneri di Uber hanno dovuto affrontare diverse sfide nella gestione delle chiavi delle credenziali sul backend, con il supporto specializzato dell'ingegnere backend Ryan O'Laughlin:

  • Prevenzione delle chiavi orfane: una sfida significativa è stata definire una strategia per eliminare le chiavi pubbliche registrate per evitare che diventino "orfane". Ad esempio, la disinstallazione dell'app elimina la credenziale locale, ma poiché questa azione non segnala il backend, lascia una chiave inutilizzata sul server.
  • Bilanciamento della durata della chiave: le chiavi avevano bisogno di un "tempo di sopravvivenza" sufficientemente lungo per gestire i casi limite. Ad esempio, se un utente esegue un backup e un ripristino, quindi esegue manualmente la disconnessione dal vecchio dispositivo, la chiave viene eliminata da quest'ultimo. Tuttavia, la chiave deve rimanere valida sul server in modo che il nuovo dispositivo possa comunque utilizzarla.
  • Supporto di più dispositivi: poiché un utente potrebbe avere più dispositivi (e potrebbe avviare un backup e un ripristino da uno qualsiasi di questi), il backend doveva supportare più credenziali di ripristino per utente (una per ogni dispositivo).

Gli ingegneri di Uber hanno risolto questi problemi stabilendo regole per l'eliminazione delle chiavi lato server in base alla nuova registrazione delle credenziali e al loro utilizzo.

La funzionalità è stata progettata e implementata in un rapido processo di sviluppo e test di due mesi. Successivamente, un esperimento A/B di cinque settimane (tempo per convalidare la funzionalità con gli utenti) è andato a buon fine e ha prodotto risultati innegabili.  

Evitare l'abbandono degli utenti con Ripristina credenziali

Eliminando gli accessi manuali sui nuovi dispositivi, Uber ha fidelizzato gli utenti che altrimenti avrebbero abbandonato il flusso di accesso su un nuovo dispositivo. Questo miglioramento della facilità d'uso per i clienti si è tradotto in una vasta gamma di miglioramenti e, sebbene possano sembrare lievi a prima vista, l'impatto è enorme su larga scala della base utenti di Uber: 

  • Riduzione del 3,4% degli accessi manuali (OTP via SMS, password, accesso social).
  • Riduzione dell'1,2% delle spese per gli accessi che richiedono l'OTP via SMS.
  • Aumento dello 0,575% del tasso di accesso di Uber (% di dispositivi che hanno raggiunto correttamente la schermata Home dell'app).
  • Aumento dello 0,614% dei dispositivi con viaggi completati. 

Oggi, Ripristina credenziali è in procinto di diventare una funzionalità standard dell'app per i passeggeri di Uber, con oltre il 95% degli utenti del gruppo di prova registrati. 

uber-devices.png

Durante la configurazione di un nuovo dispositivo, gli utenti possono ripristinare i dati delle app e le credenziali da un backup. Dopo aver selezionato Uber per il ripristino e al termine del processo in background, l'app eseguirà automaticamente l'accesso dell'utente al primo avvio del nuovo dispositivo.

image_thomas.png

L'impatto invisibile ma enorme di Ripristina credenziali

Nei prossimi mesi, Uber prevede di espandere l'integrazione di Restore Credentials. Proiettando i risultati della prova, stimano che la modifica eliminerà 4 milioni di accessi manuali all'anno. Semplificando l'accesso all'app e rimuovendo un punto critico chiave, stanno costruendo attivamente una base clienti più soddisfatta e fedele, una corsa alla volta.

"L'integrazione di RestoreCredentials di Google ci ha permesso di offrire l 'esperienza semplice e intuitiva che i nostri utenti si aspettano su un nuovo dispositivo", ha dichiarato Matt Mueller, Lead Product Manager (Core Identity) di Uber. "Ciò si è tradotto direttamente in un aumento misurabile delle entrate, dimostrando che ridurre gli attriti di accesso è fondamentale per il coinvolgimento e la fidelizzazione degli utenti".

Vuoi migliorare l'esperienza di accesso alla tua app?

Scopri come facilitare un'esperienza di accesso senza interruzioni quando cambi dispositivo con Ripristina credenziali e leggi di più nel post del blog. Nell'ultima versione canary di Android Studio Otter puoi convalidare l'integrazione, poiché le nuove funzionalità aiutano a simulare i meccanismi di backup e ripristino. 

Se non hai mai utilizzato Gestore delle credenziali, puoi consultare la nostra documentazione, il codelab e gli esempi ufficiali per assistenza con l'integrazione.

Scritto da:

Continua a leggere