Подтверждение адреса электронной почты

Email Verification API – это предложение, которое позволяет браузеру напрямую связываться с поставщиком услуг электронной почты, чтобы подтвердить, что пользователь является владельцем адреса электронной почты. Пользователь вводит адрес электронной почты и отправляет форму. Сайт проверяет подписанный токен подтверждения адреса электронной почты из браузера с помощью поставщика, не отправляя письмо и не прерывая работу пользователя.

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

Демонстрация запроса на подтверждение адреса электронной почты
Демонстрация запроса на подтверждение адреса электронной почты

Подтверждение адреса электронной почты – это прогрессивное улучшение существующего процесса.

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

Вы можете протестировать процесс в демоверсии:

Особенности экспериментов с источником

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

Если вы обнаружите ошибки в реализации Chrome, сообщите о них в компоненте:

Вы можете управлять функциями эксперимента с источником на уровне отдельных ответов, добавляя токен эксперимента с источником. Это позволяет ограничить доступ к функции определенным сегментом пользователей, например участниками A/B-тестирования. Кроме того, если у вас есть группа пользователей, участвующих в бета-тестировании или предварительной версии, вы можете включить эту функцию для них. В этом случае перед выдачей или проверкой токена сверьте его с указанным адресом электронной почты.

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

Следите за новостями в этом блоге и в списке рассылки evp-announce@chromium.org.

Процедура подтверждения адреса электронной почты

В следующих разделах объясняются основные термины и шаги протокола при использовании Email Verification API.

Основные понятия

Основные термины, связанные с API подтверждения адреса электронной почты:

  • Проверяющая сторона. Сайт, который собирает адреса электронной почты и хочет их подтверждать. Проверяющая сторона также называется доверяющей стороной.
  • Поставщик услуг электронной почты – сервис, предоставляющий адрес электронной почты пользователя, например gmail.com.
  • Издатель – сервис, управляющий аккаунтом электронной почты пользователя, например accounts.google.com. Издатель также называется поставщиком идентификационной информации.

В некоторых случаях поставщик услуг электронной почты и эмитент используют один и тот же домен. Однако важно различать их, поскольку Email Verification API использует активный сеанс в браузере с поставщиком идентификационной информации в качестве метода подтверждения. Например, чтобы подтвердить example@gmail.com, пользователь должен войти в google.com с этим аккаунтом в том же браузере.

Процесс протокола

Архитектура процесса подтверждения адреса электронной почты
Архитектура процесса подтверждения адреса электронной почты
  1. Представление формы. Полагающаяся сторона предоставляет HTML-форму, содержащую <input type="email"> и скрытые входные данные, помеченные autocomplete="email-verification-token" и уникальным для каждого экземпляра nonce.
  2. Ввод адреса электронной почты. Когда пользователь вводит адрес электронной почты (выбирает вариант автозаполнения, вводит или вставляет текст и покидает поле blur), браузер запускает проверку в фоновом режиме.
  3. Обнаружение и сеанс. Браузер запрашивает запись DNS TXT для _email-verification.<email-domain>, чтобы обнаружить авторизованный источник издателя, а затем проверяет, есть ли у пользователя активный сеанс, используя конфигурацию .well-known/web-identity издателя и конечные точки аккаунтов FedCM. Если домен не публикует запись EVP или активный сеанс отсутствует, браузер прекращает проверку, не запрашивая подтверждения пользователя.
  4. Выпуск токена. Браузер обнаруживает issuance_endpoint поставщика из .well-known/email-verification, создает эфемерную пару ключей и отправляет HTTP-запрос POST, используя подписи сообщений HTTP (RFC 9421) с собственными файлами cookie сеанса эмитента и целевым адресом электронной почты, чтобы получить подписанный токен подтверждения адреса электронной почты (EVT).
  5. Привязка ключа и отправка. Браузер привязывает подписанный токен EVT к источнику полагающейся стороны и форме nonce в JWT привязки ключа (KB-JWT) и показывает небольшое уведомление о том, что поставщик услуг электронной почты подтвердил адрес пользователя. Когда пользователь отправляет форму, Chrome заполняет скрытое поле ввода комбинированным токеном (<EVT>~<KB-JWT>).
  6. Проверка утверждений и привязки ключа. Сервер проверяющей стороны анализирует токен <EVT>~<KB-JWT>, проверяет ожидаемые утверждения (email, email_verified, aud, nonce, iat и exp) и сравнивает подпись привязки ключа с временным открытым ключом в cnf.jwk.
  7. DNS и открытые ключи. Доверяющая сторона запрашивает запись TXT DNS _email-verification.<email-domain>, чтобы убедиться, что она соответствует утверждению iss токена, а затем получает метаданные и открытые ключи издателя .well-known/email-verification из jwks_uri.
  8. Проверка EVT и завершение. Доверяющая сторона проверяет подпись издателя EVT с помощью открытого ключа поставщика JWKS. Если токен не получен или не прошел проверку, сайт использует существующий процесс подтверждения адреса электронной почты.

Когда пользователь впервые подтверждает адрес электронной почты, Chrome показывает запрос на разрешение (диалоговое окно на компьютере или нижний экран на Android), прежде чем запрашивать токен. Если вы предоставите разрешение, оно будет сохранено для вашего адреса электронной почты на всех участвующих сайтах.

Настройки Chrome

Пользователи могут управлять подтвержденными адресами электронной почты:

  • На компьютере: Настройки > Автозаполнение и пароли > Контактная информация > Подтвержденный адрес электронной почты (или откройте chrome://settings/contactInfo).
  • На устройстве Android выберите Настройки > Адреса и другие данные > Подтвержденный адрес электронной почты.

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

Рекомендации по использованию

Подтверждение адреса электронной почты – это дополнительная функция, которая позволяет пользователям не покидать ваш сайт, чтобы получить одноразовый пароль или перейти по ссылке. Сайты могут добавить поля для подтверждения адреса электронной почты во все подходящие формы, например для входа в аккаунт, подписки на новостную рассылку, создания аккаунта и восстановления пароля. EVP срабатывает, только если браузер поддерживает эту функцию. Если при отправке код не получен или какой-либо из этапов проверки не пройден, вы можете вернуться к стандартному процессу подтверждения по электронной почте. Это также означает, что для API не предусмотрено обнаружение функций. Сайт, выполняющий проверку, обрабатывает EVT как необязательный параметр, если он присутствует в запросе.

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