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

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

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

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

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

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

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

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

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

Если вы обнаружите ошибки в реализации 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 с этим аккаунтом в том же браузере.

Поток протокола

Архитектура процесса подтверждения адреса электронной почты
Архитектура процесса подтверждения адреса электронной почты
  1. Представление формы. Сторонняя организация предоставляет HTML-форму, содержащую элемент <input type="email"> и скрытый элемент input, отмеченный атрибутом 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 как необязательный параметр и обрабатывает его, если он присутствует в запросе.

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