Пробный запуск Origin: мгновенное посредничество WebAuthn для беспроблемного входа

Опубликовано: 19 августа 2025 г.

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

Фон

Аутентификация в интернете часто вызывает сложности, затрудняя вход пользователей в систему. Существующие методы WebAuthn, несмотря на свою эффективность, не всегда работают с кнопками «Войти», особенно если учётные данные недоступны сразу, что приводит к необходимости использовать стандартные формы.

Пример немедленного посреднического потока

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

Как это работает

Немедленное посредничество WebAuthn обеспечивает более прямой и эффективный процесс входа. Оно позволяет браузеру мгновенно предлагать доступные учётные данные или немедленно сообщать об их отсутствии, не запрашивая кросс-устройственную аутентификацию или аутентификацию по ключу безопасности, что упрощает реализацию для разработчиков.

Тип immediate посредничества

Мы вводим тип immediate посредничества для запросов navigator.credentials.get() . При установке этого параметра обещание отклоняется с NotAllowedError , если локально доступные учётные данные не найдены. Если учётные данные присутствуют, браузер обрабатывает процесс аутентификации как обычно.

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

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

Обнаружение особенностей

Проверить доступность немедленного посредничества можно с помощью PublicKeyCredential.getClientCapabilities() . Разработчики могут проверить наличие возможности immediateGet в возвращаемом объекте capabilities .

async function checkImmediateMediationAvailability() {
  try {
    const capabilities = await PublicKeyCredential.getClientCapabilities();
    if (capabilities.immediateGet && window.PasswordCredential) {
      console.log("Immediate Mediation with passwords supported.");
    } else if (capabilities.immediateGet) {
      console.log("Immediate Mediation without passwords supported.");
    } else { console.log("Immediate Mediation unsupported."); }
  } catch (error) {
    console.error("Error getting client capabilities:", error);
  }
}

Примечание: для обеспечения более широкой поддержки браузеров полифилл для getClientCapabilities() доступен в репозитории WebAuthn Polyfills GitHub .

Пример реализации

Чтобы использовать API, вызовите navigator.credentials.get() с mediation: 'immediate' . Мы рекомендуем включить в запрос password: true , так как большинство пользователей, вероятно, уже сохранили пароль и могут сразу воспользоваться этой возможностью.

button.addEventListener('click', async (event) => {
  event.preventDefault();
  event.stopPropagation();
  const cred = await navigator.credentials.get({
    password: true,
    publicKey: {
      challenge, // Your server-generated challenge
      rpId: 'example.com' // Your Relying Party ID
    },
    mediation: 'immediate',
  });
});

Разработчикам следует обрабатывать NotAllowedError в блоке catch , чтобы обеспечить корректный резервный процесс входа.

Пошаговый процесс немедленного посредничества

Немедленное посредничество WebAuthn поддерживает два основных варианта использования для упрощения входа пользователей: включение специальной кнопки «Войти с паролем», которая подавляет нежелательные резервные варианты, и упрощение динамического процесса входа, который заранее предлагает учетные данные перед критически важным для пользователя действием.

Вариант использования 1: явный вход с помощью кнопки входа

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

Поток, показывающий, как Chrome предлагает уже сохраненные учетные данные, когда пользователь нажимает кнопку входа.
  1. Пользователь инициирует вход: пользователь нажимает кнопку «Войти». Затем проверяющая сторона вызывает navigator.credentials.get() с mediation: "immediate" .
  2. Браузер запрашивает выбор учётных данных (если доступно): Браузер проверяет наличие локально доступных ключей доступа или запрошенных паролей. Если таковые найдены, сразу же отображается модальное окно, позволяющее пользователю выбрать учётную запись. Учётные записи сортируются по времени последнего использования, а затем в алфавитном порядке. Примечание : если для одной и той же учётной записи найдены как пароли, так и ключи доступа из нескольких менеджеров паролей, браузер отдаёт приоритет ключам доступа. Если для одной и той же учётной записи существует несколько ключей доступа от разных поставщиков, приоритет отдаётся последнему использованному ключу доступа.
  3. Успешный вход: пользователь выбирает ключ доступа в интерфейсе браузера. Если браузер требует верификации, он предлагает пользователю подтвердить свою личность, используя ранее настроенный метод (например, PIN-код, биометрические данные или графический ключ). Вход завершается успешно.
  4. Резервный вариант: отсутствие ключа доступа или закрытие страницы пользователем. Если для сайта недоступны локальные ключи доступа или запрошенные пароли, или если пользователь закрывает пользовательский интерфейс браузера, браузер выдаёт ошибку NotAllowedError проверяющей стороне и не отображает пользовательский интерфейс для кросс-устройства или параметров ключа безопасности. Проверяющая сторона может продолжить работу со своей стандартной страницей входа или предложить альтернативные механизмы аутентификации.

Вариант использования 2: Неявный процесс входа в систему перед действием пользователя

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

Поток, показывающий, как Chrome предлагает уже сохраненные учетные данные, когда пользователь совершает действие, требующее входа в систему.
  1. Пользователь инициирует действие, требующее входа в систему: пользователь нажимает кнопку для действия, требующего входа в систему (например, кнопку «Оформить заказ»). Затем проверяющая сторона вызывает navigator.credentials.get() с mediation: "immediate" .
  2. Браузер запрашивает выбор учётных данных (если доступно): Браузер проверяет наличие локально доступных ключей доступа или паролей. Если он их находит, он немедленно отображает модальное окно, позволяющее пользователю выбрать учётную запись. Учётные записи ранжируются по времени последнего использования, затем в алфавитном порядке и дедуплицируются, чтобы отображалась одна запись для каждой учётной записи. Примечание : если для одной учётной записи найдены как пароли, так и ключи доступа из нескольких менеджеров паролей, браузер отдаёт приоритет ключам доступа. Если для одной учётной записи существует несколько ключей доступа от разных поставщиков, приоритет отдаётся последнему использованному ключу доступа.

  3. Успешный вход: пользователь выбирает учётные данные в интерфейсе браузера. Если браузер требует верификации, он предлагает пользователю подтвердить свою личность, используя ранее настроенный метод (например, PIN-код, биометрические данные или графический ключ). Вход завершается успешно.

  4. Резервный вариант: отсутствие учётных данных или закрытие страницы пользователем. Если локальные учётные данные для сайта недоступны или пользователь закрывает пользовательский интерфейс браузера, браузер выдаёт ошибку NotAllowedError проверяющей стороне, и пользовательский интерфейс не отображается. Процесс входа пользователя остался прежним. Проверяющая сторона может запросить у пользователя дополнительные данные (например, адрес электронной почты) или показать альтернативные механизмы аутентификации, такие как форма ввода пароля, подтверждение по SMS или модальный запрос WebAuthn с поддержкой кросс-устройствовой аутентификации.

Преимущества

Немедленное посредничество WebAuthn обеспечивает разработчикам и пользователям ряд ключевых преимуществ:

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

Конфиденциальность и безопасность

Немедленное посредничество WebAuthn позволяет сайтам определять наличие доступных учётных данных до того, как пользователь явно даст разрешение на попытку входа. Для защиты конфиденциальности пользователей и предотвращения возможного злоупотребления мы реализуем несколько важных мер:

  • Требование к жестам пользователя: для вызова API требуется жест пользователя (любая кратковременная активация). Это затрудняет скрытое зондирование и сбор отпечатков для сайтов.
  • Сеансы инкогнито и приватные сеансы: В сеансах инкогнито или приватных сеансах любой немедленный запрос на посредничество выдает NotAllowedError .
  • Ограничения на списки allowCredentials : запросы, использующие списки allowCredentials , возвращают исключение NotAllowedError . Это не позволяет сайтам делать выводы об истории взаимодействия пользователя или отслеживать пользователей между сеансами.
  • Отмена: Установка параметра signal в запросе с немедленной медиацией недопустима. Это не позволяет сайтам программно закрывать любой пользовательский интерфейс браузера.

Попробуйте это

Мы рекомендуем вам поэкспериментировать с немедленным посредничеством WebAuthn.

Статус в Chrome

Эта функция находится на этапе разработки Chromium:

  • Настольный компьютер: пробная версия для разработчиков в Chrome 136, пробная версия Origin для Chrome 139–141.
  • Android: пробная версия для разработчиков в Chrome 140.

Для локального тестирования

Чтобы протестировать немедленное посредничество WebAuthn локально:

  1. Загрузите Chrome 139: получите и откройте последнюю версию Chrome на рабочем столе.
  2. Включите флаг «Немедленная аутентификация»: перейдите по адресу chrome://flags/#web-authentication-immediate-get в адресной строке и включите флаг «Web Authentication Immediate Get».
  3. Подготовьте учетные данные: убедитесь, что у вас сохранены пригодные для использования ключи доступа и пароли:
    • Пароли, сохраненные в Менеджере паролей Google.
    • Пароли, сохраненные в диспетчере паролей Google (требуется вход в систему и синхронизация Chrome с учетной записью Google), Windows Hello или связке ключей iCloud.

Для публичного тестирования (исходное испытание)

Чтобы протестировать немедленное посредничество WebAuthn с пробной версией источника в публичной среде:

  1. Регистрация: посетите страницу пробных версий Chrome Origin и зарегистрируйтесь для участия в пробной версии «WebAuthn immediately mediation» .
  2. Добавьте токен в заголовки HTTP: включите предоставленный токен пробной версии Origin в заголовки HTTP вашего сайта: HTML Origin-Trial: [YOUR_TRIAL_TOKEN]

Примечание: Вы также можете предоставить свои токены программно с помощью JavaScript .

Сценарии тестирования

Мы предоставляем эталонную реализацию и призываем вас создать собственный прототип для тестирования различных сценариев.

  • Демонстрационная версия: Вы можете попробовать эталонную реализацию по адресу https://deephand.github.io/webauthn-immediate-demo/ .
    • Реализуйте прототип: При реализации прототипа на своем сайте убедитесь, что вызов navigator.credentials.get() выполняется с mediation: 'immediate' после щелчка пользователя (например, кнопки «Войти» или любого взаимодействия, требующего входа пользователя в систему).
  • Поток 1: Вход без пароля или ключа доступа. Если у вас нет ключей доступа или паролей для входа на сайт, нажатие кнопки «Войти» приведет вас непосредственно к стандартной странице входа, при этом пользовательский интерфейс браузера не будет отображаться.
  • Поток 2: вход с использованием мгновенно доступного локального ключа доступа. Если у вас сохранен ключ доступа для сайта, нажатие кнопки «Войти» должно вызвать немедленный пользовательский интерфейс посредничества, предлагающий выбрать ключ доступа.
  • Поток 3: Вход с использованием локального ключа доступа или пароля. Если у вас сохранены и ключи доступа, и пароли, включите опцию «Запросить пароль» (установив в коде password: true ). После нажатия кнопки «Войти» в пользовательском интерфейсе немедленного посредничества должны быть доступны варианты ввода ключа доступа и пароля.