@ поделиться опытом настройки OAuth в Android-приложении с использованием библиотеки AppAuth ЦЕЛИ доклада @ в мобильных приложениях требуется интегрировать вход через сторонние сервис @ при обучении мобильной разработке используются открытые API, где для авторизации используется OAuth Статья на Habr iOS-версия
Client Credentials Flow Implicit Flow Код можно перехватить в зловредном приложении Требует введения credentials внутри приложения Авторизация клиента на основе client_id, client_password Небезопасный и устаревший
соцсети использовать такой способ реализации OAuth (обход путём подмены user agent не соответствует H ' WebView выполняет js в процессе вашего приложения. В Android O рендеринг в отдельный процесB ' Хранилище cookie у вебвью и браузера разное не позволяют политике Google выделили Недостатки: ' Можем кастомизировать u~ ' Потенциально экран с WebView будет открыт быстрее страницы в браузер ' Взаимодействие с JS Преимущества: НЕТ
Y Вы не можете настраивать UI браузерa Y Открывая браузер, вы покидаете навигационный стек приложения Y Открыть страницу очень простg Y Повышенная безопасность пользователS Y Браузер сохраняет cookie пользователя ???
CCT позволяет производить в фон Открытый CCT не понижает приоритет процесса вашего приложениi Имеются возможности настройки внешнего вида прогрев ограниченные Повышенная безопасность пользователi Сессия шарится между браузером и CCi JS выполняется во внешнем процессе ДА
и редиректить на нееS R Веб-страница автоматически пытается сделать редирект в приложение.S R Если хром блокирует, пользователь может нажать на кнопку перехода явно. Chrome с использованием CCT после успешной авторизации не редиректит по URL с кастомной схемой ( ) блокирует попадание пользователя в зловредное приложение без его ведома. баг в трекере Обновление НЮАНС Как Обойти:
CCT требуется наличие браузера с поддержко 9 CCT поддерживается в большинстве современных браузера& 9 Если браузера с CCT нет, откроется установленный браузер НЮАНС
E Почистить cookie из приложения не получитс$ E Чтобы разлогиниться, необходимо открыть страницу логаута в CCF E Не все сервисы поддерживают это поведение НЮАНС
возможности добавить сервис, с отсутствующим SDKW Y нет контроля над реализациейW Y индивидуальная реализация для каждого сервиса Y простая реализациy Y возможна авторизация через нативные приложения, если они установлены
b нужно учитывать все нюансы работы oauth b получаем полный контроль над реализациеw b можно реализовать универсальное решение для разных сервисов b отсутствие внешних зависимостей
с любыми сервисамI AppAut' Auth0 простая реализациX универсальное решениe легко использовать для начала нужно убедиться, что Auth Service работает в соответствии со стандартоy реализация библиотеки может быть неудобной для встраивания в ваше приложениe доработки делать сложнее Преимущества: Недостатки:
manifestPlaceholder appAuthRedirectSchem 4 Создаем AuthorizationService, например во ViewMode8 " Авторизуем пользователя в веб r создаем AuthorizationRequest формируем intenY x запускаем активити с CC Меняем код на токе' r получаем TokenExchangeRequest из activity result intent; выполняем TokenExchangeRequest с помощью authService.performTokenRequest; x сохраняем токены в колбеке. Обертка для работы с AppAuth