Case Studies

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 zajmująca się przewozami, która przewozi miliony ludzi z miejsca na miejsce, a także obsługuje dostawy jedzenia, transport medyczny i logistykę towarów. Kluczem do jej sukcesu jest prostota dostępu. 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 zmiana urządzeń stanowi wyzwanie, ale też szansę na utrzymanie użytkowników. 

Aby zapewnić ciągłość korzystania z usługi, inżynierowie Ubera skorzystali z funkcji Restore Credentials, która jest niezbędnym narzędziem w czasach, gdy 40% osób w Stanach Zjednoczonych wymienia smartfona co roku. Po ocenie zapotrzebowania użytkowników i prototypowaniu kodu wprowadzili obsługę funkcji Restore Credentials 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 test A/B trwający 5 tygodni. Integracja spowodowała zmniejszenie liczby ręcznych logowań, co w przypadku ogromnej bazy użytkowników Ubera ma wyeliminować 4 miliony ręcznych logowań rocznie.

Eliminowanie trudności związanych z logowaniem dzięki funkcji Restore Credentials

restore-credentials.gif

W przeszłości podejmowano próby przywracania kont na nowych urządzeniach za pomocą rozwiązań takich jak regularne tworzenie kopii zapasowych 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. Ponieważ informacje o tokenach są bardzo poufne, te rozwiązania są używane tylko w pewnym stopniu, aby wstępnie wypełnić pola logowania na urządzeniu docelowym i zmniejszyć trudności podczas 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 przejście na nowe urządzenie.

„Niektórzy użytkownicy nie korzystają z aplikacji Uber codziennie, ale oczekują, że będzie ona działać, gdy będą jej potrzebować” – mówi Thomás Oliveira Horta, inżynier Androida w Uberze. „Odkrycie, że jesteś wylogowany, gdy otwierasz aplikację, aby zamówić przejazd na nowym telefonie z Androidem, może być nieprzyjemne i zniechęcające”.

Dzięki funkcji Restore Credentials inżynierowie mogli rozwiązać ten problem. Interfejs API generuje unikalny token na starym urządzeniu, który jest bezproblemowo i dyskretnie przenoszony na nowe urządzenie, gdy użytkownik przywraca dane aplikacji podczas standardowego procesu wdrażania. Ten proces wykorzystuje natywny mechanizm tworzenia i przywracania kopii zapasowych systemu Android, co zapewnia bezpieczne przeniesienie klucza przywracania wraz z danymi aplikacji. Usprawnione podejście gwarantuje prosty i bezpieczny transfer konta, spełniając wymagania bezpieczeństwa Ubera bez konieczności dodatkowych danych wejściowych użytkownika ani dodatkowych prac programistycznych.

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

„Po wprowadzeniu funkcji Restore Credentials w aplikacji Uber dla pasażerów zaczęliśmy obserwować stałe korzystanie z niej” – mówi Thomás. „W obecnej fazie wdrażania średnio 10 tys. unikalnych użytkowników dziennie loguje się za pomocą funkcji Restore Credentials. Cieszą się oni płynnym działaniem aplikacji podczas pierwszego otwarcia na nowym urządzeniu. Spodziewamy się, że ta liczba podwoi się , gdy udostępnimy tę funkcję wszystkim użytkownikom”.

image_thomas2.png

Uwagi o wdrażaniu

„Integracja była dość łatwa dzięki niewielkim zmianom po stronie Androida, które wprowadziliśmy na podstawie przykładowego kodu i dokumentacji” – mówi Thomás. „Nasza aplikacja używała już Menedżera danych logowania do obsługi kluczy dostępu, a backend wymagał tylko kilku drobnych zmian. Dlatego wystarczyło zaktualizować zależność Credential Manager do najnowszej wersji, aby uzyskać dostęp do nowego interfejsu Restore Credentials API. Utworzyliśmy klucz przywracania za pomocą tego samego procesu tworzenia klucza dostępu. Gdy nasza aplikacja jest uruchamiana na nowym urządzeniu, aktywnie sprawdza ten klucz, próbując go pobrać w sposób dyskretny. Jeśli klucz przywracania zostanie znaleziony, jest natychmiast używany do automatycznego zalogowania użytkownika, co eliminuje konieczność ręcznego logowania”.

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

Wybór punktu wejścia funkcji Restore Credentials

Inżynierowie starannie rozważyli kompromisy między idealnie płynnym działaniem aplikacji a prostotą implementacji, wybierając punkt wejścia funkcji Restore Credentials , który będzie używany do przywracania danych. 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” – mówi Thomás. „Punkt wejścia logowania w tle jest bardziej wygodny dla użytkownika, ale stwarzał problemy z operacjami w tle i wymagał użycia interfejsu BackupAgent API, co zwiększyłoby złożoność kodu źródłowego tak dużego jak kod Ubera”. Zdecydowali się zaimplementować tę funkcję podczas pierwszego uruchomienia aplikacji, co było znacznie szybsze niż ręczne logowanie.

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 zawsze będzie wymagana weryfikacja użytkownika 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 Restore Credentials, którymi nie zarządza użytkownik.

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

Zarządzanie cyklem życia funkcji Restore Credentials

Inżynierowie Ubera napotkali kilka wyzwań związanych z zarządzaniem kluczami danych logowania w backendzie. Pomagał im w tym inżynier backendu Ryan O’Laughlin:

  • Zapobieganie powstawaniu osieroconych kluczy: poważnym wyzwaniem było zdefiniowanie 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 sygnalizuje backendu, na serwerze pozostaje nieużywany klucz.
  • Równoważenie kluczowego okresu ważności: klucze musiały mieć „czas życia danych (TTL)” 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 usunięty z tego urządzenia. Klucz musi jednak pozostać ważny na serwerze, aby nowe urządzenie mogło go używać.
  • Obsługa wielu urządzeń: użytkownik może mieć kilka urządzeń (i może zainicjować tworzenie i przywracanie kopii zapasowej na dowolnym z nich), dlatego backend musi obsługiwać wiele kluczy Restore Credentials 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 2-miesięcznym procesie tworzenia i testowania. Następnie przeprowadzono 5-tygodniowy test A/B (czas na sprawdzenie funkcji przez użytkowników), który przebiegł bezproblemowo i przyniósł niezaprzeczalne wyniki.  

Zapobieganie rezygnacji użytkowników dzięki funkcji Restore Credentials

Eliminując ręczne logowanie na nowych urządzeniach, Uber utrzymał użytkowników, którzy w przeciwnym razie mogliby zrezygnować z procesu logowania na nowym urządzeniu. To zwiększenie wygody klientów znalazło odzwierciedlenie w wielu ulepszeniach, które na pierwszy rzut oka mogą wydawać się niewielkie, ale w skali bazy użytkowników Ubera mają ogromny wpływ: 

  • Spadek liczby ręcznych logowań (hasło jednorazowe SMS-em, hasła, logowanie przez media społecznościowe) o 3,4%.
  • Zmniejszenie wydatków na logowanie wymagające hasła jednorazowego SMS-em o 1,2%.
  • Wzrost współczynnika dostępu do Ubera (odsetek urządzeń, które pomyślnie wyświetliły ekran główny aplikacji) o 0,575%.
  • Wzrost liczby urządzeń, na których zrealizowano przejazdy, o 0,614%.

Obecnie funkcja Restore Credentials jest na dobrej drodze do stania się standardową częścią aplikacji Uber dla pasażerów. Zarejestrowało się w niej ponad 95% użytkowników w grupie eksperymentalnej.

uber-devices.png

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

image_thomas.png

Niewidoczny, ale ogromny wpływ funkcji Restore Credentials

W najbliższych miesiącach Uber planuje rozszerzyć integrację funkcji Restore Credentials. Na podstawie wyników testów szacuje, że ta zmiana wyeliminuje 4 miliony ręcznych logowań rocznie. Upraszczając dostęp do aplikacji i eliminując kluczowy problem, aktywnie buduje bardziej zadowoloną i lojalną bazę klientów.

„Integracja funkcji RestoreCredentials Google pozwoliła nam zapewnić użytkownikom płynne działanie aplikacji, którego oczekują na nowym urządzeniu” – mówi Matt Mueller, główny menedżer produktu (Core Identity) w Uberze. Przełożyło się to bezpośrednio na mierzalny wzrost przychodów, co dowodzi, że zmniejszenie trudności związanych z logowaniem jest kluczem do zaangażowania i utrzymania użytkowników.

Chcesz ułatwić logowanie w swojej aplikacji?

Dowiedz się, jak ułatwić płynne logowanie podczas przechodzenia na nowe urządzenie za pomocą funkcji Restore Credentials, i przeczytaj więcej w tym poście na blogu. W najnowszej wersji Canary Android Studio Otter możesz sprawdzić integrację, ponieważ nowe funkcje pomagają symulować mechanizmy tworzenia i przywracania kopii zapasowych. 

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

Autorzy:

Czytaj dalej