Email Verification API – это предложение, которое позволяет браузеру напрямую связываться с поставщиком услуг электронной почты, чтобы подтвердить, что пользователь является владельцем адреса электронной почты. Пользователь вводит адрес электронной почты и отправляет форму. Сайт проверяет подписанный токен подтверждения адреса электронной почты из браузера с помощью поставщика, не отправляя письмо и не прерывая работу пользователя.
При сборе адресов электронной почты во время регистрации, входа в аккаунт, оформления заказа, подписки на новостную рассылку или восстановления доступа к аккаунту сайты обычно подтверждают, что пользователь, отправляющий форму, контролирует указанный адрес. Существующие способы подтверждения требуют от пользователей покинуть ваш сайт, переключиться на другое приложение, чтобы проверить почту, скопировать одноразовый код или нажать на ссылку для подтверждения. Из-за этого увеличивается количество отказов и прерванных сеансов как для пользователей, так и для автоматизированных агентов. Пользователи часто сталкиваются с проблемами при использовании существующих способов подтверждения, таких как задержка писем, истечение срока действия ссылок или нераспознанные коды.
Подтверждение адреса электронной почты – это прогрессивное улучшение существующего процесса.
- Не мешает пользователю. Проверка выполняется в фоновом режиме, пока пользователь заполняет форму.
- Не требуется определять функции. Сайты добавляют в свои формы поле для ввода адреса электронной почты и скрытое поле для ввода токена. Если браузер или поставщик не поддерживает подтверждение адреса электронной почты или оно не удалось, сайт использует стандартный процесс подтверждения.
- Минимизация риска фишинга. Нет кода, который можно скопировать, и возможности перенаправить пользователя на поддельный сайт.
Полезные ссылки
- Спецификация API подтверждения адреса электронной почты (WICG) (репозиторий GitHub)
- Проект протокола проверки электронной почты (IETF) (репозиторий GitHub)
- Подтверждение адреса электронной почты на сайте Chrome Platform Status
- Регистрация в эксперименте с источником для подтверждения адреса электронной почты
Вы можете протестировать процесс в демоверсии:
- Демоверсия для эмитента. Предоставляет фиктивный аккаунт электронной почты и сеанс входа.
- Демонстрация проверки. Проверьте демонстрационный адрес электронной почты или адрес любого участвующего поставщика.
Особенности экспериментов с источником
Эксперименты с источником проводятся для сбора отзывов, поэтому ваше мнение очень важно, если вы участвуете в качестве доверяющей стороны или поставщика идентификационной информации. Чтобы сообщить о проблемах, используйте следующие репозитории GitHub:
- Browser Email Verification API: WICG/email-verification
- Протокол подтверждения адреса электронной почты: dickhardt/email-verification
Если вы обнаружите ошибки в реализации 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 с этим аккаунтом в том же браузере.
Процесс протокола
- Представление формы. Полагающаяся сторона предоставляет HTML-форму, содержащую
<input type="email">и скрытые входные данные, помеченныеautocomplete="email-verification-token"и уникальным для каждого экземпляраnonce. - Ввод адреса электронной почты. Когда пользователь вводит адрес электронной почты (выбирает
вариант автозаполнения, вводит или вставляет текст и покидает поле
blur), браузер запускает проверку в фоновом режиме. - Обнаружение и сеанс. Браузер запрашивает запись DNS TXT для
_email-verification.<email-domain>, чтобы обнаружить авторизованный источник издателя, а затем проверяет, есть ли у пользователя активный сеанс, используя конфигурацию.well-known/web-identityиздателя и конечные точки аккаунтов FedCM. Если домен не публикует запись EVP или активный сеанс отсутствует, браузер прекращает проверку, не запрашивая подтверждения пользователя. - Выпуск токена. Браузер обнаруживает
issuance_endpointпоставщика из.well-known/email-verification, создает эфемерную пару ключей и отправляет HTTP-запросPOST, используя подписи сообщений HTTP (RFC 9421) с собственными файлами cookie сеанса эмитента и целевым адресом электронной почты, чтобы получить подписанный токен подтверждения адреса электронной почты (EVT). - Привязка ключа и отправка. Браузер привязывает подписанный токен
EVTк источнику полагающейся стороны и формеnonceв JWT привязки ключа (KB-JWT) и показывает небольшое уведомление о том, что поставщик услуг электронной почты подтвердил адрес пользователя. Когда пользователь отправляет форму, Chrome заполняет скрытое поле ввода комбинированным токеном (<EVT>~<KB-JWT>). - Проверка утверждений и привязки ключа. Сервер проверяющей стороны анализирует токен
<EVT>~<KB-JWT>, проверяет ожидаемые утверждения (email,email_verified,aud,nonce,iatиexp) и сравнивает подпись привязки ключа с временным открытым ключом вcnf.jwk. - DNS и открытые ключи. Доверяющая сторона запрашивает запись TXT DNS
_email-verification.<email-domain>, чтобы убедиться, что она соответствует утверждениюissтокена, а затем получает метаданные и открытые ключи издателя.well-known/email-verificationизjwks_uri. - Проверка EVT и завершение. Доверяющая сторона проверяет подпись издателя
EVTс помощью открытого ключа поставщикаJWKS. Если токен не получен или не прошел проверку, сайт использует существующий процесс подтверждения адреса электронной почты.
Когда пользователь впервые подтверждает адрес электронной почты, Chrome показывает запрос на разрешение (диалоговое окно на компьютере или нижний экран на Android), прежде чем запрашивать токен. Если вы предоставите разрешение, оно будет сохранено для вашего адреса электронной почты на всех участвующих сайтах.
Настройки Chrome
Пользователи могут управлять подтвержденными адресами электронной почты:
- На компьютере: Настройки > Автозаполнение и пароли > Контактная информация > Подтвержденный адрес электронной почты (или откройте
chrome://settings/contactInfo). - На устройстве Android выберите Настройки > Адреса и другие данные > Подтвержденный адрес электронной почты.
Пользователи могут полностью отключить эту функцию или управлять отдельными подтвержденными адресами электронной почты.
Рекомендации по использованию
Подтверждение адреса электронной почты – это дополнительная функция, которая позволяет пользователям не покидать ваш сайт, чтобы получить одноразовый пароль или перейти по ссылке. Сайты могут добавить поля для подтверждения адреса электронной почты во все подходящие формы, например для входа в аккаунт, подписки на новостную рассылку, создания аккаунта и восстановления пароля. EVP срабатывает, только если браузер поддерживает эту функцию. Если при отправке код не получен или какой-либо из этапов проверки не пройден, вы можете вернуться к стандартному процессу подтверждения по электронной почте. Это также означает, что для API не предусмотрено обнаружение функций. Сайт, выполняющий проверку, обрабатывает EVT как необязательный параметр, если он присутствует в запросе.
Подтверждение адреса электронной почты означает, что у пользователя есть активный сеанс с поставщиком адреса электронной почты. Оно не подтверждает, что письмо дошло до пользователя. Вы можете отправлять существующие приветственные письма или письма с инструкциями по началу работы, а также предлагать пользователям проверить настройки спама.