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


Начиная с Chrome 137, Auth Tab может напрямую заменять существующие интеграции аутентификации Custom Tabs. Для пользователей, чьи устройства не поддерживают Auth Tab, возврат к Custom Tabs происходит автоматически. Переход с Custom Tabs на Auth Tab можно выполнить, изменив несколько строк кода.
Как это работает
С помощью Auth Tab клиентское приложение запускает специализированную пользовательскую вкладку, которая представляет собой окно браузера, загружающее URL с ожидаемой страницей аутентификации. После завершения Auth Tab возвращает результат аутентификации с помощью обратного вызова.
После аутентификации, при переходе по ранее предоставленному URI обратного вызова, перенаправление фиксируется и возвращается клиентскому приложению с помощью обратного вызова. При перенаправлениях по схеме https браузер проверяет, принадлежат ли домен перенаправления и клиентское приложение одному и тому же издателю, используя ссылки на цифровые ресурсы .
Клиент получает навигируемый URI со схемой перенаправления (или, для HTTPS, хост и путь перенаправления) с помощью предоставленного обратного вызова. Эти данные включают код результата, а также любые другие данные, предоставленные интерфейсом аутентификации. Вы можете использовать эти данные для проверки аутентификации или обработки неуспешных сценариев.
Почему вкладка «Аутентификация»?
До появления Auth Tab для управления процессами аутентификации можно было использовать стандартное намерение Custom Tabs. Auth Tab предпочтительнее, поскольку он обеспечивает повышенную безопасность, оптимизированный интерфейс и абстрагирует некоторые внутренние компоненты аутентификации от клиентского кода. По этим причинам вы обнаружите, что Auth Tab обеспечивает более удобный интерфейс.
Повышенная безопасность
В типичной реализации Custom Tab требуется намерение для получения данных из окна браузера, обрабатывающего аутентификацию. Это требует написания дополнительного кода и подвергает ваше приложение потенциальному вмешательству в ваше намерение. При использовании Auth Tab данные получаются с помощью обратного вызова с прямой передачей данных между API Android и клиентским приложением.
Оптимизированный опыт
Настраиваемая вкладка предоставляет пользователю доступ к дополнительным функциям браузера, которые могут быть нежелательны при аутентификации. Вкладка аутентификации предоставляет упрощённый интерфейс, в котором отсутствует большинство настроек, доступных в стандартной настраиваемой вкладке. В браузерах Chrome к ним относятся кнопка сворачивания, контекстное меню, вызываемое при длительном нажатии, поиск по касанию, а также пункты меню « Открыть в Chrome» , «Добавить в закладки», «Загрузить и поделиться» и «Добавить на главный экран» .
Вкладки авторизации по-прежнему сохраняют функции браузера для автоматического заполнения ранее сохраненных паролей и платежей, навигации назад или вперед, обновления, отображения информации о странице, запроса версии страницы для настольного компьютера и предоставления перевода.
Абстракция данных
Реализация только лишь вкладки «Auth Tab» устраняет необходимость в намерении получать данные из браузера, а также в фильтрах намерений в AndroidManifest.xml
которые ранее требовались для корректной работы аутентификации. Это снижает сложность на стороне клиента. Некоторые из этих функций по-прежнему можно включить в клиентский код для обеспечения обратной совместимости с пользовательскими вкладками в ситуациях, когда вкладка «Auth Tab» недоступна на пользовательских устройствах.
Реализовать вкладку аутентификации
Для вкладки «Auth» требуется библиотека аутентификации AndroidX для браузера. Библиотеку AndroidX для браузера можно добавить в раздел зависимостей файла build.gradle
проекта. API доступны в альфа-версии сборки. Добавьте в файл сборки следующее:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
Перед запуском вкладки аутентификации объявите ActivityResultLauncher
, который принимает ActivityResultCaller
и ActivityResultCallback
. Это делается до создания активности или фрагмента:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
Затем используйте AuthTabIntent.Builder
для создания AuthTabIntent
и вызовите метод launch
. Методы запуска принимают один из двух наборов параметров в зависимости от требуемой схемы:
redirectScheme : для пользовательской схемы перенаправления браузер перенаправляет и возвращает URI с предоставленной схемой.
redirectHost, redirectPath : для схем перенаправления по протоколу https API требует отдельный хост и путь, чтобы браузер мог определить перенаправление и вернуть URI. При использовании протокола https требуется проверка ссылки на цифровой актив.
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
Переход с пользовательских вкладок на вкладку аутентификации
Обновите существующую реализацию аутентификации Custom Tabs, изменив намерение Custom Tabs на новое намерение Auth Tab. После добавления кода найдите намерение Custom Tabs и измените его на новое намерение Auth Tab.
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
Возврат к пользовательским вкладкам
В некоторых реализациях может потребоваться аутентификация, если устройство пользователя не поддерживает функцию Auth Tab. Например, это может произойти, если браузер по умолчанию не поддерживает Auth Tab или его версия не соответствует требуемому уровню. В таких случаях намерение Auth Tab автоматически запускает пользовательскую вкладку (Custom Tab) для браузеров, поддерживающих пользовательские вкладки.
Вы можете проверить, поддерживается ли браузером Auth Tab, с помощью метода CustomTabsClient#isAuthTabSupported()
. Этот метод позволяет приложению динамически выбирать между запуском Auth Tab или потока Custom Tabs в зависимости от возможностей браузера. Чтобы корректно обрабатывать ситуации, когда Auth Tab не поддерживается, добавьте реализацию Auth Tab, сохранив существующий код Custom Tabs, обрабатывающий потоки аутентификации, в качестве резервного варианта.
Будьте внимательны при обработке данных, которые могут поступать как в ваш ActivityResultCallback
, так и в ваше Activity Intent. Обратите внимание: если AuthTabIntent
используется для запуска резервного варианта, а Auth Tab не поддерживается текущим браузером, ваше приложение получит результат Activity.RESULT_CANCELED
при закрытии пользовательской вкладки.
Пример реализации Auth Tab с откатом к Custom Tabs можно найти в библиотеке Android Browser Helper .