Email Verification API – это предложение, которое позволяет браузеру напрямую связываться с поставщиком услуг электронной почты, чтобы подтвердить, что пользователь является владельцем адреса электронной почты. Пользователь вводит адрес электронной почты и отправляет форму. Сайт проверяет токен подтверждения, подписанный поставщиком услуг электронной почты, в браузере, не отправляя письмо и не прерывая работу пользователя.
Когда при регистрации, входе в аккаунт, оформлении заказа, подписке на новостную рассылку или восстановлении доступа к аккаунту пользователь указывает адрес электронной почты, сайты обычно подтверждают, что он имеет к нему доступ. При использовании существующих методов проверки пользователям приходится покидать ваш сайт, переключаться между приложениями, чтобы проверить почту, скопировать одноразовый пароль или нажать на ссылку для подтверждения. Из-за этого увеличивается количество отказов и прерванных сеансов как для пользователей, так и для автоматизированных агентов. Существующие способы подтверждения, такие как письма с задержкой, ссылки с истекшим сроком действия или коды, которые не распознаются, часто вызывают у пользователей трудности.
Подтверждение адреса электронной почты – это прогрессивное улучшение существующего процесса:
- Не мешает пользователю. Проверка выполняется в фоновом режиме, пока пользователь заполняет форму.
- Не требуется определять функции. Сайты добавляют в свои формы поле для ввода адреса электронной почты и скрытое поле для ввода токена. Если браузер или поставщик услуг не поддерживает подтверждение адреса электронной почты или оно не проходит, сайт возвращается к стандартному процессу подтверждения адреса электронной почты.
- Снижение риска фишинга. Нет кода, который можно скопировать, и возможности перенаправить пользователя на поддельный сайт.
Полезные ссылки
- Email Verification API на GitHub
- Протокол подтверждения адреса электронной почты на 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. Эмитент также называется поставщиком идентификационной информации.
В некоторых случаях поставщик услуг электронной почты и эмитент работают в одном домене.
Однако важно различать эти два API, поскольку Email Verification API использует активный сеанс в браузере с поставщиком идентификационной информации в качестве способа подтверждения. Например, чтобы подтвердить example@gmail.com, пользователь должен войти в google.com с этим аккаунтом в том же браузере.
Поток протокола
- Представление формы. Сторонняя организация предоставляет HTML-форму, содержащую элемент
<input type="email">и скрытый элемент input, отмеченный атрибутом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 как необязательный параметр и обрабатывает его, если он присутствует в запросе.
Подтверждение адреса электронной почты позволяет убедиться, что у пользователя есть активный сеанс с поставщиком услуг электронной почты. Он не подтверждает, что письмо дошло до пользователя. Вы можете отправлять существующие приветственные письма или письма с инструкциями по началу работы, а также предлагать пользователям проверить настройки спама.