Примеры из практики

Как Uber сокращает количество ручных входов в систему на 4 миллиона в год благодаря API восстановления учетных данных

5 минут чтения
Niharika Arora
Инженер по связям с разработчиками

Uber — крупнейшая в мире компания по предоставлению услуг совместных поездок, которая перевозит миллионы людей из одного места в другое, а также занимается доставкой еды, медицинскими перевозками и грузовой логистикой. Простота доступа имеет решающее значение для ее успеха; когда пользователи переходят на новое устройство, они ожидают плавного перехода без необходимости повторного входа в приложение Uber или аутентификации с помощью одноразового пароля через SMS. Частая смена устройств представляет собой как проблему, так и возможность для эффективного удержания пользователей.

Для обеспечения непрерывности работы пользователей инженеры Uber обратились к функции восстановления учетных данных — незаменимому инструменту в условиях, когда 40% жителей США ежегодно меняют свои смартфоны. После оценки потребностей пользователей и прототипирования кода они внедрили поддержку восстановления учетных данных в приложение Uber для пассажиров . Чтобы подтвердить, что восстановление учетных данных помогает упростить повторный вход в систему, команда Uber провела успешный A/B-эксперимент в течение пяти недель. Интеграция привела к сокращению количества ручных входов в систему, что, по оценкам, в масштабах всей огромной пользовательской базы Uber, позволит сократить количество ручных входов в систему на 4 миллиона в год.

Устранение проблем со входом в систему с помощью функции восстановления учетных данных.

restore-credentials.gif

Ранее предпринимались попытки восстановления учетных записей на новых устройствах с использованием таких решений, как обычное резервное копирование данных и BlockStore , хотя оба решения требовали прямой передачи токенов аутентификации с исходного устройства на целевое. Поскольку информация о токенах является крайне конфиденциальной, эти решения используются лишь в некоторой степени, для предварительного заполнения полей входа на целевом устройстве и уменьшения сложностей в процессе авторизации. Пароли также используются для обеспечения безопасного и быстрого входа в систему, но их инициируемый пользователем характер ограничивает их влияние на плавный переход между устройствами.

«Некоторые пользователи не пользуются приложением Uber ежедневно, но ожидают, что оно будет работать, когда им это понадобится», — говорит Томас Оливейра Хорта, Android-разработчик в Uber. «Обнаружить, что вы вышли из системы как раз в тот момент, когда открываете приложение, чтобы заказать поездку на своем новом Android-смартфоне, может быть неприятным и отталкивающим опытом».

Благодаря функции восстановления учетных данных инженеры смогли устранить этот пробел. API генерирует уникальный токен на старом устройстве, который незаметно и бесшумно переносится на новое устройство, когда пользователь восстанавливает данные приложения в ходе стандартного процесса регистрации. Этот процесс использует встроенный механизм резервного копирования и восстановления ОС Android, обеспечивая безопасную передачу ключа восстановления вместе с данными приложения. Упрощенный подход гарантирует простой и безопасный перенос учетной записи, соответствующий требованиям безопасности Uber, без дополнительного участия пользователя или дополнительных затрат на разработку.

Примечание: Ключи восстановления и пароли используют одну и ту же базовую серверную реализацию. Однако при сохранении в базе данных необходимо различать их. Это различие крайне важно, поскольку ключи, созданные пользователем, могут управляться непосредственно пользователем, в то время как ключи восстановления управляются системой и скрыты от пользовательского интерфейса.

«С внедрением функции восстановления учетных данных в приложение Uber для пассажиров мы начали наблюдать стабильное использование», — сказал Томас. «В среднем 10 000 уникальных пользователей ежедневно входят в систему с помощью функции восстановления учетных данных на текущем этапе внедрения, и они получают беспроблемный опыт при первом открытии приложения на новом устройстве. Мы ожидаем, что это число удвоится , как только мы распространим внедрение на всю нашу пользовательскую базу».

image_thomas2.png

Вопросы реализации

«Интеграция прошла довольно легко, потребовались лишь незначительные корректировки на стороне Android, следуя примерам кода и документации », — сказал Томас. «В нашем приложении уже использовался Credential Manager для ключей доступа, и бэкэнду потребовалось всего несколько небольших изменений. Поэтому нам просто нужно было обновить зависимость Credential Manager до последней версии, чтобы получить доступ к новому API восстановления учетных данных. Мы создали ключ восстановления с помощью того же процесса создания ключа доступа , и при запуске нашего приложения на новом устройстве приложение автоматически проверяет наличие этого ключа, пытаясь получить ключ доступа в фоновом режиме. Если ключ восстановления найден, он немедленно используется для автоматического входа пользователя в систему, минуя ручной вход».

В процессе разработки инженеры Uber столкнулись с рядом трудностей на этапе внедрения — от выбора правильной точки входа до управления жизненным циклом учетных данных на бэкэнде.

Выбор точки входа «Восстановить учетные данные».

При выборе точки входа для восстановления учетных данных инженеры тщательно взвесили компромиссы между идеально удобным пользовательским интерфейсом и простотой реализации. В конечном итоге они отдали приоритет решению, обеспечивающему идеальный баланс.

«Это может происходить во время запуска приложения или в фоновом режиме во время восстановления и настройки устройства с помощью BackupAgent», — сказал Томас. «Вход в систему в фоновом режиме более удобен для пользователя, но он создавал проблемы с фоновыми операциями и требовал использования API BackupAgent , что привело бы к увеличению сложности в кодовой базе такого большого размера, как у Uber». Они решили реализовать эту функцию во время первого запуска приложения , что оказалось значительно быстрее, чем ручной вход в систему.

Решение проблем на стороне сервера

В процессе интеграции с бэкэнд-API WebAuthn возникли некоторые проблемы на стороне сервера, поскольку их конструкция предполагала, что проверка пользователя будет требоваться всегда, и что все учетные данные будут указаны в настройках учетной записи пользователя; ни одно из этих предположений не сработало для ключей восстановления учетных данных, не управляемых пользователем.

Команда Uber решила эту проблему, внеся незначительные изменения в сервисы WebAuthn, создав новые типы учетных данных для различения паролей и восстановленных учетных данных и их соответствующей обработки.

Управление жизненным циклом восстановления учетных данных

Инженеры Uber столкнулись с рядом проблем при управлении ключами учетных данных на бэкэнде, и им оказал специализированную поддержку бэкэнд-инженер Райан О'Лафлин:

  • Предотвращение появления «осиротевших» ключей : Серьезной проблемой стало определение стратегии удаления зарегистрированных открытых ключей, чтобы предотвратить их «осиротство». Например, удаление приложения удаляет локальные учетные данные, но поскольку это действие не посылает сигнал на бэкэнд, на сервере остается неиспользуемый ключ.
  • Балансировка срока службы ключа : Ключи должны иметь достаточно длительный «срок службы», чтобы обрабатывать нестандартные ситуации. Например, если пользователь выполняет резервное копирование и восстановление, а затем вручную выходит из системы на старом устройстве, ключ удаляется с этого старого устройства. Однако ключ должен оставаться действительным на сервере, чтобы новое устройство могло его использовать.
  • Поддержка нескольких устройств : Поскольку у пользователя может быть несколько устройств (и он может инициировать резервное копирование и восстановление с любого из них), серверная часть должна поддерживать несколько учетных данных для восстановления для каждого пользователя (по одной для каждого устройства).

Инженеры Uber решили эти проблемы, разработав правила удаления ключей на стороне сервера на основе регистрации новых учетных данных и их использования.

Разработка и внедрение этой функции заняли всего два месяца и прошли в ускоренном режиме. После этого пятинедельный A/B-эксперимент (время для проверки функции с участием пользователей) прошел гладко и дал неоспоримые результаты.

Предотвращение оттока пользователей с помощью функции восстановления учетных данных.

Устранив необходимость ручного входа в систему на новых устройствах, Uber удержал пользователей, которые в противном случае могли бы отказаться от процесса авторизации на новом устройстве. Это повышение удобства для клиентов отразилось в широком спектре улучшений, и хотя на первый взгляд они могут показаться незначительными, их влияние огромно в масштабах пользовательской базы Uber:

  • Снижение количества входов в систему вручную (SMS OTP, пароли, вход через социальные сети) на 3,4%.
  • Снижение расходов на авторизацию с использованием SMS-кода на 1,2%.
  • Увеличение показателя доступности Uber на 0,575% (% устройств, успешно достигших главного экрана приложения).
  • Увеличение количества устройств с завершенными поездками на 0,614%.

Сегодня функция восстановления учетных данных уверенно движется к тому, чтобы стать стандартной частью приложения Uber для пассажиров: более 95% пользователей в тестовой группе уже зарегистрировались.

uber-devices.png

В процессе настройки нового устройства пользователи могут восстановить данные приложения и учетные данные из резервной копии. После выбора Uber для восстановления и завершения фонового процесса приложение автоматически выполнит вход пользователя при первом запуске нового устройства.

image_thomas.png

Незаметное, но колоссальное влияние функции восстановления учетных данных

В ближайшие месяцы Uber планирует расширить интеграцию функции восстановления учетных данных. По результатам пилотного проекта, это изменение позволит ежегодно сокращать количество ручных входов в систему на 4 миллиона. Упрощая доступ к приложению и устраняя ключевой недостаток, компания активно формирует более удовлетворенную и лояльную клиентскую базу, шаг за шагом, с каждой поездкой.

«Интеграция Google RestoreCredentials позволила нам обеспечить пользователям бесперебойную работу системы на новых устройствах, чего они и ожидают», — сказал Мэтт Мюллер, ведущий менеджер по продуктам (Core Identity) в Uber. «Это напрямую привело к ощутимому увеличению доходов, доказав, что снижение сложностей при входе в систему является ключом к вовлечению и удержанию пользователей».

Готовы улучшить процесс входа в ваше приложение?

Узнайте, как обеспечить бесперебойный вход в систему при переключении устройств с помощью функции восстановления учетных данных , и прочитайте подробнее в статье блога . В последней версии Android Studio Otter вы можете проверить свою интеграцию, поскольку новые функции помогают имитировать механизмы резервного копирования и восстановления.

Если вы новичок в Credential Manager, вы можете обратиться к нашей официальной документации , руководству по использованию кода и примерам для получения помощи по интеграции.

    Автор:

    Продолжить чтение