Маша Ловыгина — Личный блог
Создано: 05.02.23, 17:45:01
Скидка на «Полуэльфа»! Не пропустите!
Дорогие друзья, прекрасного вам воскресного вечера! Сегодня случился приятный неожиданный сюрприз в виде скидки — 20% на книгу МАРИИ ЕРОВОЙ “Полуэльф для полупринцессы” Должна сказать, Читать далее
Создано: 03.02.23, 19:19:23
Царевичи и царевны, а для вас — Скидка!
Прекрасного вечера пятницы, дорогие мои! Накануне выходных рекомендую вам заглянуть в книгу МАРИИ ЕРОВОЙ ЦАРЕВИЧ НЕСМЕЯН, ИЛИ ЩУЧКА С РУЧКОЙ ведь на нее сегодня действует скидка — 25% История невероятная Читать далее
Создано: 01.02.23, 18:11:45
Скидка на «Нить» и приятность!
О море-море! Оно может быть тихим, спокойным, а может рассвирепеть, словно живое. Сначала обласкать, а потом напугать своей мощью… Так и в любви! Это чувство поглощает и дарит головокружительную радость, Читать далее
Создано: 29. 01.23, 17:10:47
Евгения Бергер приглашает! Скидка и новинка!
Доброго воскресного вечерочка, мои дорогие! ЕВГЕНИЯ БЕРГЕР известна многим любителям исторического детектива, исторического фэнтези и современного любовного романа. Автор не боится трудностей и не ищет Читать далее
Создано: 28.01.23, 11:00:51
«Наследник Медвежьего лога» — Скидка -25%!
Дорогие читатели! Сегодня действует скидка -25% на мой роман Наследник Медвежьего лога …Когда Хансен вернулся в дом, то сразу же взлетел на второй этаж в комнату девушки. С замиранием сердца смотрел на ее застывшее, Читать далее
Создано: 25.01.23, 18:52:44
«Дева для властелина» — Скидка!
Прекрасного вечера, мои дорогие! Мои поздравления всем Татьянам в день их именин, а также всем студентам в их профессиональный (да-да!) праздник! Сегодня нас радует НАДЕЖДА ЧЕРПИНСКАЯ На ее великолепную, Читать далее
Создано: 23. 01.23, 19:06:32
«Полюбить тень» и Скидка!
Доброго вечера, мои дорогие! Очень хочется разбавить понедельник приятностями, и вот они! Встречайте! НОВИНКА от Надежды Черпинской “ПОЛЮБИТЬ ТЕНЬ” АННОТАЦИЯ: Говорят, прежде мир был единым целым. Свет Читать далее
Создано: 22.01.23, 12:30:36
«Сладкий» — скидка!
Доброго воскресного дня, мои дорогие! Этот день много лет назад стал для меня одним из самых значимых в жизни — в этот день родилась моя семья. И я очень рада, что именно сегодня я могу предложить вам скидку -10% на Читать далее
Создано: 21.01.23, 18:38:08
«В объятиях Темного города» — новинка!
Доброго субботнего вечера, дорогие читатели! Сегодня я представляю вашему вниманию новинку в жанре фэнтези от моих талантливых коллег Анны Рейнер и Юлии Герман В объятиях Темного Города Жанр: Читать далее
Создано: 11. 01.23, 20:11:10
Скидка на «Незабудки для Эйлин»!
Друзья мои, сегодняшний зимний вечер я посвящаю прекрасной книге, на которую действует скидка — 25% Это роман Надежды Черпинской “НЕЗАБУДКИ ДЛЯ ЭЙЛИН” Об этой истории только стихами: Вот лес шумит, Читать далее
Создано: 10.01.23, 18:54:01
Лучик Надежды. Тайное Желание
Доброго вечера, мои хорошие! Надеюсь, рабочая неделя не сильно утомляет вас после долгих праздников, и вы полны сил, бодрости и отличного настроения! В любом случае, зимние вечера созданы только для вашего Читать далее
Создано: 09.01.23, 20:01:18
Серебряная стрела для оборотня — скидка!
Дорогие мои, любимые и замечательные! Сегодня действует скидка на подписку 10% “СЕРЕБРЯНАЯ СТРЕЛА ДЛЯ ОБОРОТНЯ” Книги Марии Еровой стали для меня проводником в удивительный мир фэнтези, в котором есть Читать далее
Создано: 08. 01.23, 16:13:57
Новости Автора
Дорогие друзья, от всего сердца благодарю вас за поддержку моей зимней истории, на которую сегодня открылась подписка! СЛАДКИЙ Как и все мои книги, эта история будет непростой. Детектив подразумевает опасность Читать далее
Создано: 07.01.23, 19:52:40
Макар Файтцев «Долг из прошлого»!
Но сантименты, эти сантименты — Химический дефект, ведущий в никуда, Незабываемы становятся моменты, Когда считаешь пульс… закончилась игра… Денисов Андрей Дорогие друзья, разрешите вам представить авантюрный Читать далее
Создано: 07.01.23, 01:04:23
С Рождеством! «Наследник Медвежьего лога» — 30%
Дорогие друзья! Поздравляю всех нас с прекрасным и любимым праздником, с Рождеством! С 3-8 января Литнет радует нас новогодними скидками! И сегодня такая скидка — 30% действует на роман Наследник Медвежьего Читать далее
Создано: 06. 01.23, 20:39:30
Новогодняя новинка от Ирмы Голд!
Дорогие мои читатели, в новогодние праздники хочу представить вашему вниманию новинку от молодого автора Ирмы Голд “Неожиданная семья для миллиардера” Аннотация к книге «Неожиданная Читать далее
Создано: 05.01.23, 12:05:51
«Не в сети» от Татьяны Лайт. Новинка!
Дорогие читатели! С Наступившим Новым Годом и Наступающим Рождеством! Каникулы уже начались, и появилось свободное время. Так приятно провести его за прочтением интересного романа. Специально для Читать далее
Создано: 27.12.22, 20:41:42
Новости автора. «Сладкий» — уже на сайте.
Прекрасного вечера, мои дорогие! Кое-как собрав себя по частям, выпив неимоверное количество клюквенного морса и жаропонижающих, я все же решила начать новую историю. Да, ваш автор точно заболел, раз решился на такой Читать далее
Создано: 26. 12.22, 18:38:07
Новинка от Надежды Черпинской и Новости!
Друзья мои, всем доброго вечера! Позвольте представить вам сказочную, новогоднюю, сНежную НОВИНКУ Надежды Черпинской Чужая невеста для снежного волка Новый год уже на носу. Корпоративы, праздники, Читать далее
Создано: 25.12.22, 17:48:06
Серебряная стрела для оборотня!
Здравствуйте, дорогие мои читатели! От всего сердца поздравляю вас с началом рождественских праздников. Как говорится, от нашего стола вашему столу! С католическим Рождеством! Сегодня для вас у меня припасены интересные Читать далее
📚 Маша Ловыгина блог автора
новые
популярные
обсуждаемые
Доброго вечера, дорогие!Остался час до завершения «Черной пятницы».Скидка 50% на два романа:ЩУЧКА и ТА, КОТОРОЙ НЕТскоро растает!Желаю всем крепкого здоровья и отличной продуктивной недели!Ваша Маша.
12 сентября — именины Макара!Макар – старинное редкое мужское имя. Образовано и заимствовано оно от древнегреческого слова «макариос» и обозначает «блаженный», «счастливый», «благословенный».Тайна имени Макар заключается в самолюбии, практичности, не…
9-10-11 сентября скидка -30% на книгу ЩУЧКАЖанр: женский детектив»»Маша вбежала на второй этаж и постучала в дверь Костиной комнаты.- Где ты была? – обиженно произнёс Цапельский и шмыгнул носом.- Плохо тебе? – Маша подошла к сидящему на кровати Косте…
В день рождения моего Друга и КоллегиНадежды Черпинской
позвольте сказать несколько теплых слов в ее адрес, а также порекомендовать книгу, которая является, на мой взгляд, одним из лучших образцов сказочного фэнтези.
Да, Надежда Черпинская — Автор,…
Напоминаю, что каждый день с 1 по 7 сентября объявляется днем Татьяны ГрачевойЛюбая моя платная книга уйдет к вам бесплатно за посильный взнос в виде награды, которую вы отправите на любую ее книгу или переведете на карту:
Сбербанк на имя Татьяна Але…
Каждый день с 1 по 7 сентября объявляется днем Татьяны ГрачевойЛюбая моя платная книга уйдет к вам бесплатно за посильный взнос в виде награды, которую вы отправите на любую ее книгу или переведете на карту:сбер на имя Татьяна Александровна Г. 22022…
31 августа, в преддверии Дня знаний, скидка -30% на три книги:Седьмой гномТа, которой нетЩучка
26 августа скидка -30% на книгу ТА, КОТОРОЙ НЕТПо календарю лунных дней сегодняшний день называют «День зеркала». Этот день выступает в роли зеркала, где отражается истинная природа вашего «Я». Если вы кому-то искренне и бескорыстно помогали, то в эт…
24 августа скидка 25% на книгу «Тупик для Дамы Пик»ТУПИК ДЛЯ ДАМЫ ПИКПо солнечному календарю сегодняшний день называют «День Отмеченности». Один из самых странных дней, когда может произойти что угодно. Не рекомендуется жить по плану, он может реализ…
Все (18)
- Писатели — новости (14)
- Розыгрыши, скидки и реклама (4)
Все
- (6)
- детектив (6)
- женский детектив (3)
- тайны прошлого (2)
- любовный треугольник (2)
- триллер (2)
- мистика (2)
- настоящая любовь (2)
- книги о любви (2)
- молодежная проза (2)
- скидка 30% (2)
- любовь (2)
- помощь (1)
- интересное (1)
- подарок (1)
- любовный роман (1)
- рекомендация (1)
- адекватные герои (1)
- ребенок и настоящий мужчина (1)
- мистика и любовь (1)
- остросюжетный любовный роман (1)
- лето (1)
- случайная беременность (1)
- встреча через годы (1)
- женский роман (1)
- тайны и загадки (1)
- любовь вопреки (1)
- приключения и тайны (1)
Facebook Войти Блог Статьи | Meta for Developers
Создание приложений с вариантами использования приложений
С целью упростить процесс создания приложений Meta для разработчиков, чтобы они могли создавать и настраивать свои приложения, мы объявляем о развертывании обновленного процесса с использованием вариантов использования приложений вместо прежний процесс, ориентированный на продукт. Сценарии использования приложений позволят разработчикам быстро создавать приложения, выбирая вариант использования, который лучше всего отражает их цель…
7 декабря 2022 г.
Представляем новый курс по внедрению входа через Facebook для разработчиков
Вход через Facebook позволяет разработчикам удобно аутентифицировать пользователей для легкого доступа к приложениям и веб-сайтам. Разработчики также могут использовать вход через Facebook для создания более персонализированных пользовательских интерфейсов в своих приложениях и на веб-сайтах, чтобы повысить вовлеченность и удержание пользователей. Сегодня мы объявляем о запуске онлайн-курса, который поможет нашим…
23 июня 2022 г.
Войти Подключиться к Messenger теперь общедоступно для проверенных компаний
Мы в Facebook увлечены созданием решений, которые позволяют компаниям развивать более тесные и личные отношения со своими клиентами. Вот почему мы были так рады поделиться предварительным просмотром последней функции Facebook Login, Login Connect with Messenger, на нашей конференции разработчиков F8 Refresh в июне. …
15 сентября 2021 г.
Прекращение поддержки аутентификации при входе через FB во встроенных браузерах Android
Обновлено 27 августа 2021 г.: Мы продолжим поддерживать аутентификацию при входе через FB во встроенных браузерах Android до 5 октября 2021 г. Основываясь на отзывах разработчиков, мы предоставляем разработчикам дополнительное время, чтобы спланировать отказ от аутентификации FB Login во встроенных браузерах Android. Также обратите внимание, что описанный ниже поток без пароля…
28 июня 2021 г.
Объявление о расширении функциональности ограниченного входа
Обновление от 10.06.21. Мы расширили функциональность ограниченного входа, включив в нее разрешения user_hometown, user_location, user_gender и user_link, которые в настоящее время находятся в бета-версии. Кроме того, профиль при ограниченном входе был обновлен и теперь включает имя, отчество и фамилию в виде отдельных полей. Текущая версия Limited Login с поддержкой. ..
12 апреля 2021 г.
Объявляем о предстоящей поддержке user_friends, user_birthday и user_age_range в ограниченном входе
Сегодня мы объявляем, что активно работаем над добавлением user_friends, user_birthday и user_age_range в ограниченный вход в начале весны 2021 года. Ограниченный вход основан на OpenID Connect Standard, и при использовании этой ограниченной версии входа через Facebook тот факт, что человек использовал вход через Facebook с этим приложением iOS, не будет использоваться для персонализации…
23 марта 2021 г.
Обновления входа через Facebook: новый режим ограниченного доступа к данным
Вход через Facebook теперь предлагает режим ограниченного входа. При использовании ограниченной версии входа через Facebook тот факт, что человек использовал вход через Facebook с этим приложением для iOS, не будет использоваться для персонализации или измерения эффективности рекламы. Чтобы внедрить текущую версию ограниченного входа, обновите свой Facebook SDK для iOS до версии 9. 2+ или Facebook SDK для Unity…
19 января 2021 г.
Подготовка наших партнеров к iOS 14: действия для рекламодателей и разработчиков приложений
Обновлено 26 апреля 2021 г.: Во вторник, 27 апреля 2021 г., Facebook начнет развертывание новых протоколов измерения рекламы — API SKAdNetwork от Apple и измерения совокупных событий Facebook — после выпуска iOS 14.5. После этого рекламодатели и партнеры начнут испытывать изменения, описанные в этом сообщении блога. Для получения последних обновлений посетите…
19 января 2021 г.
Упрощение доступа к приложениям по мере роста спроса
По мере того, как все больше людей укрываются и выходят в Интернет, упрощение входа в систему оказывается полезным По мере того, как все больше людей адаптируются к новым мерам общественного здравоохранения и безопасности они все чаще обращаются к приложениям для общения, связи и сообщества — от текстовых и видеочатов до игр и развлечений, а также для общественного блага. Мы наблюдаем всплески использования…
14 мая 2020 г.
USL — единый стек регистрации и входа в систему Uber
Uber работает в более чем 10 000 городов по всему миру, и его услуги включают в себя совместное использование поездок, доставку еды, доставку посылок, курьеров, грузовые перевозки, аренду электрических велосипедов и мотороллеров. и паромный транспорт.
Каждый год миллионы пользователей проходят регистрацию и авторизацию в наших различных приложениях. За прошедшие годы мы создали независимые процедуры регистрации и входа в систему для каждого из направлений нашей деятельности, что позволило нам вводить новшества и продвигаться вперед намного быстрее. Однако по мере того, как мы масштабировались и добавляли дополнительные направления бизнеса, наш опыт начал расходиться, что привело к усилению некоторых из этих несоответствий. USL (унифицированная регистрация и вход в систему) обеспечивает концепцию «Единой учетной записи Uber» за счет единой регистрации и входа во всех приложениях Uber .
Исходные данные и существующие проблемы
На приведенных ниже снимках экрана показаны растущие несоответствия в процессах регистрации и входа в систему для пользователей с течением времени, что привело к трудностям в их поддержке с точки зрения продукта и технических аспектов.
Рис. 1. Различные способы регистрации и входа в Uber до USL. Мобильные клиенты : Регистрация / вход в систему Rider, регистрация / вход в Uber Eats, регистрация водителя, вход в систему водителя. Веб-клиенты : Вход в систему Rider, вход в Uber Eats, вход в U4B, регистрация Rider
Вот некоторые проблемы, с которыми сталкиваются наши пользователи и внутренние заинтересованные стороны: приложения приводят к ненужным когнитивным издержкам для пользователей, взаимодействующих с несколькими приложениями Uber, что, в свою очередь, вызывает разочарование и отказы. Эти несоответствия также вынуждали пользователей создавать дубликаты учетных записей. Например, в прошлом Rides позволял пользователям создавать свои учетные записи с социальными идентификаторами, однако опыт входа в Uber Eats не позволял пользователям входить в систему с использованием социального идентификатора. Такая несовместимость между процессами адаптации приводит к тому, что миллионы пользователей блокируются при входе в систему или вынуждены создавать дубликаты учетных записей, что приводит к большому количеству обращений в службу поддержки.
Решение (USL) Рис. 2. Процессы регистрации и входа в систему USL
Как упоминалось ранее, проект USL (унифицированная регистрация и вход) все приложения Убер. Наша структура разработана с учетом нескольких целей:
- Максимальная поддержка для всех клиентов: Мы хотим, чтобы USL поддерживал все варианты использования регистрации и входа в Uber. Чтобы максимизировать поддержку, мы приняли решение перейти на веб-интерфейс, чтобы USL поддерживался всеми клиентами, которые могут открывать веб-браузер.
- Простота обслуживания и скорость разработки : Переход на веб-интерфейс также гарантирует, что мы можем почти мгновенно внедрять любые изменения в потоки или экраны для всех клиентов. Только подмножество функций, требующих изменения мобильного кода (например, встроенная функция автоматического чтения SMS), потребует от пользователей обновления версии мобильного приложения.
- Хорошая производительность : Uber работает по всему миру, включая регионы с неоптимальной сетью. Пользователи с плохой сетью и медленными телефонами должны иметь возможность быстро загрузить процесс регистрации и входа в систему. Мы понимаем, что по сравнению с веб-решением нативный интерфейс будет быстрее, поэтому мы постоянно ищем способы сократить этот разрыв в производительности до уровня, когда он будет незаметен для наших клиентов.
- Увеличьте рост и безопасность всей платформы : В прошлом, когда мы хотели продвигать функции безопасности или роста, более 15 продуктовых групп должны были вносить необходимые изменения, чтобы закрыть эти возможности. Это был не масштабируемый подход, который требовал огромного количества времени и усилий для координации с этими командами. С USL мы просто создаем и развертываем один раз, чтобы за короткое время внедрять исправления безопасности и функции расширения во все приложения.
Использование веб-регистрации и входа в систему , которое встроено в мобильные приложения и одновременно служит приложением для входа в систему на рабочем столе, позволило нам достичь всех этих целей. Мы максимально упростили интеграцию для всех клиентов. Благодаря веб-интерфейсу любое обновление безопасности или функция расширения мгновенно развертывались для всех пользователей и не требовали обновлений мобильных приложений, что увеличивало скорость разработки.
Многие продукты имеют отдельные точки входа для входа и регистрации. Это заставляет пользователя переключаться между ними, если он не помнит, есть ли у него существующая учетная запись или нет. С USL у нас объединил потоки регистрации и входа в систему , чтобы пользователям не приходилось переключаться между ними. В качестве первого шага пользователь предоставляет уникальный идентификатор своей учетной записи Uber, который может быть адресом электронной почты, номером телефона или идентификатором входа в социальную сеть. На основе этого идентификатора учетной записи мы определяем, есть ли у пользователя уже учетная запись Uber, и соответствующим образом направляем его к процессу входа или регистрации. Это также избавляет пользователя от необходимости помнить, какой идентификатор он использовал для регистрации в Uber.
У нас также есть встроенная дедупликация и связывание потоков. Возьмем, к примеру, пользователя, который зарегистрировался, указав номер мобильного телефона, адрес электронной почты и пароль. Если тот же пользователь пытается снова войти в систему с помощью Facebook, мы находим его учетную запись Uber, используя адрес электронной почты и номер телефона, предоставленные Facebook, и направляем пользователя к процессу входа. Как только пользователь войдет в систему, мы легко свяжем Facebook с его учетной записью Uber, поэтому в следующий раз они смогут выполнить одноэтапный вход с помощью Facebook, что также .0081 предотвращает создание дубликатов учетных записей .
Большинство новых функций внедряются поэтапно в качестве экспериментов. Мы внимательно следим за первичными (коэффициент регистрации/входа) и вторичными (коэффициент первой поездки/заказа, общий коэффициент поездки/заказа, общее количество обращений в службу поддержки и т. д.) во время любого развертывания. Типичный план развертывания начинается с 2% (инженерная проверка), который увеличивается до 20%, 50% и 100%, в зависимости от того, как обстоят дела с показателями.
Мы есть не только во многих городах мира. У Uber также есть разнообразная клиентская база, включая водителей, курьеров, потребителей, водителей, рестораны, сети ресторанов и т. д. Поскольку мы стремимся улучшить возможность наших клиентов регистрироваться и входить в систему, наша платформа развивается, чтобы поддерживать различные предпочтения клиентов, сохраняя при этом наши кодовая база чистая и ремонтопригодная. Кроме того, мы также заботимся о том, чтобы не перегружать клиентов, сохраняя наш опыт чистым и оптимизированным.
Архитектура
Веб-приложение USL встроено в мобильные приложения и открывается с использованием технологий конкретной платформы на iOS и Android. Затем пользователь проходит через веб-поток с помощью серверного API и, наконец, входит в приложение. Давайте углубимся в клиентские (мобильные и веб-) и серверные аспекты.
Рис. 3. Архитектура высокого уровня для USLMobile
Наши клиенты Android открывают USL, используя доверенную веб-активность. Надежные веб-действия (TWA) расширяют пользовательские вкладки Chrome (CCT), которые помогают сделать переходы между собственным и веб-контентом более плавным, не прибегая к WebView. Помимо обмена преимуществами использования CCT (такими как совместное использование файлов cookie, возможность использования новейших веб-API и т. д.), TWA открывают вкладку браузера без какого-либо пользовательского интерфейса браузера и рекомендуются для мобильных приложений, которые хотят отображать веб-приложения в полноэкранном режиме. На клиентах Android, на которых не установлен браузер Chrome, мы возвращаемся к загрузке USL в WebView.
Наши клиенты iOS открывают USL в WKWebView, который представляет собой собственное представление платформы, которое вы используете для беспрепятственного включения веб-контента в пользовательский интерфейс вашего приложения.
Web
USL представляет собой одностраничное веб-приложение, созданное с использованием FusionJS: веб-платформы на основе подключаемых модулей для создания универсальных приложений React. Мы предполагаем, что читатель знаком с некоторыми концепциями FusionJS и не будет углубляться в структуру в этом посте (пожалуйста, обратитесь к этому посту в блоге).
Когда пользователь открывает регистрацию и вход в систему, ядро Fusion (т. е. часть кода FusionJS, работающего на сервере Node) получает HTTP-запрос, который обрабатывает запрос, пропуская его через каждое промежуточное ПО в цепочке промежуточного ПО плагина. . Промежуточное ПО FusionJS построено поверх промежуточного ПО Koa.js и использует его нисходящую и восходящую абстракцию.
У нас есть несколько серверных плагинов, которые работают на промежуточном программном обеспечении FusionJS:
- Включение Redux: FusionJS предоставляет нам плагин для интеграции с Redux, который мы широко используем для управления состоянием
- Включение единого входа для наших приложений: У нас есть промежуточное программное обеспечение для проверки того, вошел ли пользователь уже на какой-либо из сайтов Uber, и войти в него напрямую
- Индивидуальные потоки: USL поддерживает некоторые настраиваемые потоки, реализованные с помощью подключаемых модулей
- Получение значений динамических свойств и значений эксперимента: У нас есть набор подключаемых модулей, связанных с получением (динамических) значений свойств и конфигураций эксперимента, которые запускаются, когда любой запрос поступает на наши серверы
После запуска всех подключаемых модулей HTML-контент генерируется и отправляется в браузер. JS и CSS загружаются из CDN, а приложение React загружается в браузере.
USL содержит кучу кода, который не нужно включать в начальную загрузку страницы. Например, есть некоторые компоненты экрана, которые пользователи редко видят, и которые могут загружаться лениво. Мы используем разделение пакетов JS, чтобы убедиться, что мы загружаем часть всего кода JS при начальной загрузке страницы. Поскольку приложение используется в различных областях с низкой пропускной способностью, очень важно, чтобы веб-приложение загружалось в разумные сроки в более медленных сетях и на старых устройствах, а разделение пакетов имеет решающее значение для достижения этой цели.
Рис. 4. Архитектура внешнего интерфейса для USL
Вся логика, связанная с потоками (т. е. какие экраны/факторы должны видеть пользователи), находится на внутреннем уровне. Клиентское приложение отвечает только за представление текущего состояния. Он содержит основной компонент
- Пользователь (не прошедший проверку подлинности) открывает приложение Uber, которое, в свою очередь, открывает USL в браузере
- Запрос направляется на сервер узла USL, который проходит через все подключаемые модули и отправляет обработанный HTML-код обратно в браузер
- Пользователь ожидает загрузки клиентского приложения в браузере
- Пользователь вводит данные на экране и отправляет форму, которая отправляет запрос в наш серверный API
- Ответ внутреннего API обновляет хранилище Redux
- Компонент Controller (который подписывается на обновления в магазине Redux), в свою очередь, монтирует компонент для следующего экрана
Серверная часть
Поскольку мы создавали собственные потоки для каждого приложения Uber, используя собственные потоки, это означало, что мы никогда не могли отказаться от старого потока. Бэкэнд-системы стали очень сложными и тормозили нас при разработке новых функций. Поскольку USL находится в Интернете, нам не нужно поддерживать обратную совместимость для какого-либо старого потока, что значительно снижает сложность серверной части. Количество узлов в графе сократилось на 75%, а количество переходов — на 85%. Теперь мы можем быстро добавлять новые функции роста и безопасности во все приложения.
Из-за сложных требований к продукту, которые также оптимизированы для регионов, мы должны поддерживать более 100 процессов регистрации и входа в систему, которые контролируются серверной частью. На бэкэнде путь входа и регистрации пользователя представлен в виде графа, который проходит конечный автомат. Узел на графике — это экран, который видит пользователь. Узел может предложить пользователю одну или несколько задач. Ребра графа — это функции, которые возвращают логическое значение.
На основе данных, введенных пользователем для данной задачи, эта задача подтверждается. В результате правила выполняются и принимается решение об определении следующего узла (экрана) пользователя.
Задача — это многоразовый строительный блок, похожий на Lego ™ , который можно размещать в разных узлах. Это интерфейс с методами ShowChallenge, который возвращает данный вызов, и HandleAnswer, который проверяет ответ на вызов.
Ниже приведен пример конфигурации. Здесь пользователь начинает с ввода своего номера телефона, а серверная часть бросает вызов VerifyPassword. Если пользователь вводит неправильный пароль, состояние не изменяется, и пользователю снова предлагается ввести пароль. Как только пользователь отвечает правильным паролем, выполняются правила, которые определяют, должен ли пользователь выполнять двухфакторную аутентификацию или нет. Если пользователю не нужна двухфакторная аутентификация, он входит в систему. В противном случае пользователю предлагается пройти двухфакторную аутентификацию.
Рисунок 5. Пример графа конфигурации конечного автомата
Ниже представлена высокоуровневая архитектура службы регистрации и входа в систему:
Рисунок 6
Давайте рассмотрим архитектуру на примере процесса входа. Как только пользователь вводит номер телефона, уровень представления преобразует его во внутренний запрос и перенаправляет запрос в конечный автомат. Поскольку это первый запрос, конечный автомат создает новый сеанс, а затем выполняет вызов — в данном случае это вызов идентификатора. Если есть ошибка (скажем, номер телефона недействителен), возвращается ошибка. Конечный автомат использует граф конфигурации для продолжения обхода графа пути пользователя и возвращает следующее состояние пользователя (экран). Следующий вызов возвращается пользователю.
Таким образом, пользователь продолжает решать задачи, а серверная часть продолжает предлагать пользователю следующую задачу до тех пор, пока пользователь не решит достаточно задач для аутентификации или не предоставит достаточно информации для регистрации. В последнем запросе серверная часть возвращает пользователю токены авторизации.
Надежность
Более 100 потоков в USL отслеживаются в различных измерениях, таких как мобильное приложение, веб-сайт, ОС устройства и т. д. Это экспоненциально увеличивает количество комбинаций потоков, которые нам необходимо отслеживать. Мы создали специальный инструмент, который генерирует такие оповещения (сотнями). Он внутри использует инструмент обнаружения аномалий Uber для автоматического определения пороговых значений на основе исторических данных. У нас есть интеграционные тесты для всех потоков и тесты черного ящика для критических потоков, которые дают нам уверенность в развертывании серверного/веб-кода несколько раз в день.
Предстоящая дорожная карта
В течение последних двух лет команда усердно работала над внедрением USL в Uber Rides, Uber Eats и Uber Driver. В настоящее время более 78% трафика используют USL, а учитывая, что всего год назад мы начали с 0%, это огромная веха. Вот краткий график внедрения USL во всем мире (в 2021 г.):
0092 USL (зеленый)
Это только начало, впереди у нас еще много интересных задач:
- устройства. Одной из основных областей будет оптимизация производительности, которая поможет загружать USL еще быстрее.
2. Мы планируем несколько функций роста на USL, направленных на увеличение количества регистраций и входов в систему:
- Мы изучаем API браузера webauthn , который позволяет нам проходить аутентификацию с помощью встроенных аутентификаторов, таких как Windows Hello или Touch ID от Apple. Большинство новых устройств поставляются со встроенными в них средствами аутентификации платформы, и мы видим, что это имеет огромный потенциал для беспрепятственной адаптации пользователей.
- Мы рассматривали возможность использования QR-кодов для передачи уже аутентифицированных сеансов между мобильными и настольными устройствами.
- Мы планируем провести эксперименты по настройке потоков с учетом различных региональные различия (например, у SMS OTP есть проблемы с доставкой в некоторых регионах, и мы рассматривали WhatsApp OTP с кодом в качестве резервного фактора).
3. Мы также планируем рассмотреть возможность платформизации других аспектов нашего стека удостоверений в рамках всей компании. В конечном итоге USL можно будет использовать в качестве подключаемой инфраструктуры повторной аутентификации для любых действий, требующих явной повторной аутентификации. В качестве примера можно попросить пользователя повторно пройти аутентификацию непосредственно перед оплатой или обновлением своего профиля. Точно так же, как мы создали стек аутентификации для приложений в Uber по принципу plug-and-play, мы хотели бы сделать что-то подобное с управление идентификацией/профилем стек. Это пользовательский интерфейс, используемый для обновления вашего профиля, изменения паролей, включения/отключения двухфакторной аутентификации и т. д., который может быть встроен в мобильные приложения или использоваться как отдельное настольное приложение.
4. С разнообразным набором продуктов Uber, от точки зрения клиента, вход в эти приложения происходит изолированно и с большим трудом.