Studia przypadków

Jak Uber zmniejsza liczbę ręcznych logowań o 4 miliony rocznie dzięki interfejsowi Restore Credentials API

Czas czytania: 5 minut
Niharika Arora
Inżynier ds. relacji z deweloperami

Uber to największa na świecie firma oferująca przejazdy, która przewozi miliony osób z miejsca na miejsce, a także zajmuje się dostawą jedzenia, transportem medycznym i logistyką towarów. Prostota dostępu ma kluczowe znaczenie dla sukcesu tej funkcji. Gdy użytkownicy przechodzą na nowe urządzenie, oczekują płynnego przejścia bez konieczności ponownego logowania się w aplikacji Uber lub przechodzenia przez uwierzytelnianie za pomocą hasła jednorazowego wysyłanego SMS-em. Częsta wymiana urządzeń stanowi wyzwanie, ale też szansę na utrzymanie użytkowników. 

Aby zapewnić ciągłość działania usługi, inżynierowie Ubera skorzystali z funkcji Przywracanie danych logowania, która jest niezbędnym narzędziem w czasach, gdy 40% osób w Stanach Zjednoczonych wymienia smartfona co roku. Po ocenie popytu użytkowników i stworzeniu prototypu kodu zespół wprowadził obsługę przywracania danych logowania w aplikacji Uber dla pasażerów. Aby sprawdzić, czy przywracanie danych logowania pomaga zmniejszyć trudności związane z ponownym logowaniem, zespół Ubera przeprowadził udany 5-tygodniowy eksperyment A/B. Integracja doprowadziła do zmniejszenia liczby ręcznych logowań, co w przypadku ogromnej bazy użytkowników Ubera szacuje się na 4 miliony rocznie.

Eliminowanie problemów z logowaniem dzięki funkcji przywracania danych logowania

restore-credentials.gif

W przeszłości podejmowano próby przywracania kont na nowych urządzeniach za pomocą rozwiązań takich jak zwykła kopia zapasowa danych i BlockStore, ale oba te rozwiązania wymagały bezpośredniego udostępniania tokenów uwierzytelniających z urządzenia źródłowego na urządzenie docelowe. Informacje o tokenie są bardzo poufne, dlatego te rozwiązania są używane tylko w pewnym zakresie, aby wstępnie wypełnić pola logowania na urządzeniu docelowym i zmniejszyć pewne trudności podczas procesu logowania. Klucze dostępu są też używane jako bezpieczna i szybka metoda logowania, ale ich inicjowanie przez użytkownika ogranicza ich wpływ na płynne przełączanie się między urządzeniami.

„Niektórzy użytkownicy nie korzystają z aplikacji Ubera codziennie, ale oczekują, że będzie działać, gdy jej potrzebują” – mówi Thomás Oliveira Horta, inżynier Androida w Uberze. „Odkrycie, że wylogowano Cię z aplikacji tuż po jej otwarciu na nowym telefonie z Androidem, aby zamówić przejazd, może być nieprzyjemne i zniechęcające”.

Dzięki funkcji Przywróć dane logowania inżynierom udało się rozwiązać ten problem. Interfejs API generuje na starym urządzeniu unikalny token, który jest bezproblemowo i bezgłośnie przenoszony na nowe urządzenie, gdy użytkownik przywraca dane aplikacji podczas standardowego procesu wprowadzającego. Ten proces wykorzystuje natywny mechanizm tworzenia i przywracania kopii zapasowych systemu operacyjnego Android, co zapewnia bezpieczne przeniesienie klucza przywracania wraz z danymi aplikacji. Uproszczone podejście gwarantuje prosty i bezpieczny transfer konta, spełniając wymagania Ubera dotyczące bezpieczeństwa bez konieczności dodatkowych danych wejściowych użytkownika ani nakładów na programowanie.

Uwaga: klucze przywracania i klucze dostępu korzystają z tej samej implementacji serwera. Gdy jednak zapisujesz je w bazie danych, musisz je rozróżniać. To rozróżnienie jest kluczowe, ponieważ kluczami dostępu utworzonymi przez użytkownika może on zarządzać bezpośrednio, a klucze przywracania są zarządzane przez system i ukryte w interfejsie.

„Po wprowadzeniu funkcji przywracania dokumentów tożsamości w aplikacji Uber dla pasażerów zaczęliśmy obserwować stałe korzystanie z niej” – powiedział Thomás. „Na obecnym etapie wdrażania średnio 10 tys. unikalnych użytkowników dziennie loguje się za pomocą funkcji przywracania danych logowania. Zapewnia im to płynne działanie aplikacji podczas pierwszego otwarcia na nowym urządzeniu. Spodziewamy się, że po udostępnieniu tej funkcji wszystkim użytkownikom ta liczba wzrośnie dwukrotnie”.

image_thomas2.png

Uwagi o wdrażaniu

„Integracja była dość prosta. Wystarczyło wprowadzić niewielkie zmiany po stronie Androida, korzystając z przykładowego kodudokumentacji” – powiedział Thomás. „Nasza aplikacja korzystała już z Menedżera danych logowania w przypadku kluczy dostępu, a backend wymagał tylko kilku drobnych zmian. Dlatego wystarczyło nam zaktualizować zależność Credential Manager do najnowszej wersji, aby uzyskać dostęp do nowego interfejsu Restore Credentials API. Klucz przywracania został utworzony w ramach tego samego procesu tworzenia klucza dostępu. Gdy aplikacja jest uruchamiana na nowym urządzeniu, aktywnie sprawdza, czy ten klucz istnieje, próbując go pobrać w sposób niewidoczny dla użytkownika. Jeśli klucz przywracania zostanie znaleziony, zostanie natychmiast użyty do automatycznego zalogowania użytkownika z pominięciem logowania ręcznego”.

Podczas procesu tworzenia inżynierowie Ubera napotkali kilka wyzwań związanych z wdrażaniem, od wyboru odpowiedniego punktu wejścia po zarządzanie cyklem życia danych logowania na backendzie.

Wybieranie punktu wejścia Przywróć dane logowania

Inżynierowie dokładnie rozważyli kompromisy między idealnie płynnym działaniem a prostotą wdrożenia, wybierając punkt wejścia Przywróć dane logowania do odzyskiwania. Ostatecznie wybrali rozwiązanie, które zapewniało idealną równowagę.

„Może to nastąpić podczas uruchamiania aplikacji lub w tle podczas przywracania i konfigurowania urządzenia za pomocą BackupAgent” – powiedział Thomás. „Punkt wejścia logowania w tle jest wygodniejszy dla użytkownika, ale wiąże się z wyzwaniami związanymi z operacjami w tle i wymaga użycia interfejsu BackupAgent API, co zwiększyłoby złożoność bazy kodu w tak dużej aplikacji jak Uber”. Zdecydowali się wdrożyć tę funkcję podczas pierwszego uruchomienia aplikacji, co było znacznie szybsze niż logowanie ręczne.

Rozwiązywanie problemów po stronie serwera

Podczas integracji z interfejsami WebAuthn API po stronie serwera pojawiło się kilka problemów, ponieważ ich projekt zakładał, że weryfikacja użytkownika będzie zawsze wymagana i że wszystkie dane logowania będą wymienione w ustawieniach konta użytkownika. Żadne z tych założeń nie sprawdziło się w przypadku kluczy przywracania danych logowania, którymi nie zarządza użytkownik.

Zespół Ubera rozwiązał ten problem, wprowadzając drobne zmiany w usługach WebAuthn i tworząc nowe typy danych logowania, aby odróżnić klucze dostępu od danych logowania do przywracania i odpowiednio je przetwarzać.

Zarządzanie cyklem życia przywracania danych logowania

Inżynierowie Ubera napotkali kilka problemów z zarządzaniem kluczami danych logowania na backendzie. Pomógł im w tym inżynier backendu Ryan O’Laughlin:

  • Zapobieganie osieroceniu kluczy: dużym wyzwaniem było określenie strategii usuwania zarejestrowanych kluczy publicznych, aby zapobiec ich „osieroceniu”. Na przykład odinstalowanie aplikacji powoduje usunięcie lokalnych danych logowania, ale ponieważ ta czynność nie jest sygnalizowana w backendzie, na serwerze pozostaje nieużywany klucz.
  • Równoważenie kluczowego czasu życia: klucze potrzebowały „czasu życia danych (TTL)”, który byłby wystarczająco długi, aby obsługiwać przypadki brzegowe. Jeśli na przykład użytkownik przywróci kopię zapasową, a następnie ręcznie wyloguje się ze starego urządzenia, klucz zostanie z niego usunięty. Klucz musi jednak pozostać ważny na serwerze, aby nowe urządzenie mogło go nadal używać.
  • Obsługa wielu urządzeń: użytkownik może mieć wiele urządzeń (i może rozpocząć tworzenie kopii zapasowej lub przywracanie danych na dowolnym z nich), więc backend musi obsługiwać wiele danych logowania do przywracania danych na użytkownika (po jednym na każde urządzenie).

Inżynierowie Ubera rozwiązali te problemy, ustanawiając reguły usuwania kluczy po stronie serwera na podstawie rejestracji nowych danych logowania i ich użycia.

Od projektu do wdrożenia funkcja przeszła w szybkim, dwumiesięcznym procesie programowania i testowania. Następnie przeprowadziliśmy 5-tygodniowy eksperyment A/B (czas na sprawdzenie funkcji wśród użytkowników), który przebiegł bezproblemowo i przyniósł jednoznaczne wyniki.  

Zapobieganie rezygnacji użytkowników dzięki funkcji Przywróć dane logowania

Dzięki wyeliminowaniu ręcznego logowania na nowych urządzeniach firma Uber zatrzymała użytkowników, którzy w przeciwnym razie mogliby zrezygnować z procesu logowania na nowym urządzeniu. Wzrost wygody dla klientów znalazł odzwierciedlenie w wielu ulepszeniach, które na pierwszy rzut oka mogą wydawać się niewielkie, ale w skali bazy użytkowników Ubera mają ogromne znaczenie: 

  • Spadek liczby logowań ręcznych (SMS OTP, hasła, logowanie przez media społecznościowe) o 3,4%.
  • Obniżenie wydatków o 1,2% w przypadku logowania wymagającego jednorazowego hasła SMS.
  • Wzrost współczynnika dostępu do aplikacji Uber o 0,575% (odsetek urządzeń, na których udało się otworzyć ekran główny aplikacji).
  • Wzrost liczby urządzeń, na których ukończono przejazdy, o 0,614%. 

Obecnie funkcja Przywróć dane logowania jest na dobrej drodze, aby stać się standardową częścią aplikacji Uber dla pasażerów. W grupie eksperymentalnej zarejestrowało się ponad 95% użytkowników.

uber-devices.png

Podczas konfigurowania nowego urządzenia użytkownicy mogą przywrócić dane aplikacji i dane logowania z kopii zapasowej. Po wybraniu Ubera do przywrócenia i zakończeniu procesu w tle aplikacja automatycznie zaloguje użytkownika przy pierwszym uruchomieniu na nowym urządzeniu.

image_thomas.png

Niewidoczny, ale ogromny wpływ funkcji Przywróć dane logowania

W najbliższych miesiącach Uber planuje rozszerzyć integrację funkcji Przywróć dane logowania. Na podstawie wyników testu szacują, że zmiana ta wyeliminuje 4 miliony ręcznych logowań rocznie. Upraszczając dostęp do aplikacji i eliminując kluczowy problem, aktywnie budują bazę zadowolonych i lojalnych klientów – jeden przejazd po drugim.

„Integracja funkcji RestoreCredentials od Google pozwoliła nam zapewnić bezproblemowe działanie, którego oczekują nasi użytkownicy na nowych urządzeniach” – powiedział Matt Mueller, starszy menedżer produktu (Core Identity) w Uberze. Przełożyło się to bezpośrednio na mierzalny wzrost przychodów, co dowodzi, że ograniczenie trudności związanych z logowaniem jest kluczowe dla zaangażowania i utrzymania użytkowników.

Chcesz ulepszyć proces logowania w aplikacji?

Dowiedz się, jak ułatwić logowanie podczas przełączania urządzeń za pomocą funkcji Przywróć dane logowania. Więcej informacji znajdziesz we wpisie na blogu. W najnowszej wersji Canary Android Studio Otter możesz sprawdzić integrację, ponieważ nowe funkcje pomagają symulować mechanizmy tworzenia kopii zapasowych i przywracania. 

Jeśli dopiero zaczynasz korzystać z Menedżera danych logowania, zapoznaj się z naszą oficjalną dokumentacją, ćwiczeniami z programowaniaprzykładami, które pomogą Ci w integracji.

Autor:

Czytaj dalej