Verificación de la dirección de correo electrónico

La API de Email Verification es una propuesta que permite que el navegador se comunique directamente con el proveedor de correo electrónico para verificar que el usuario sea el propietario de la dirección de correo electrónico. Los usuarios ingresan su correo electrónico, envían el formulario y el sitio verifica el token de verificación de correo electrónico firmado del navegador con el proveedor sin enviar un correo electrónico ni interrumpir el flujo del usuario.

Cuando se recopila una dirección de correo electrónico durante el registro, el acceso, la confirmación de compra, la suscripción al boletín informativo o la recuperación de la cuenta, los sitios suelen confirmar que la persona que envía el formulario controla la dirección. Los métodos de verificación existentes requieren que los usuarios abandonen tu sitio, cambien de app para revisar su bandeja de entrada, copien un OTP o hagan clic en un vínculo de verificación. Esta interrupción aumenta el abandono de la sesión y la tasa de deserción tanto para los usuarios humanos como para los agentes automatizados. Los usuarios suelen tener problemas con los métodos de verificación existentes, como correos electrónicos demorados, vínculos vencidos o códigos no reconocidos.

Demostración de la instrucción del usuario para la verificación por correo electrónico
Demostración de la instrucción del usuario para la verificación por correo electrónico

La verificación por correo electrónico actúa como una mejora progresiva de tu flujo existente:

  • Sin interrupciones: La verificación se realiza en segundo plano mientras el usuario completa el formulario.
  • No se requiere detección de funciones: Los sitios agregan una entrada de correo electrónico y una entrada de token oculta a sus formularios. Si el navegador o el proveedor no admiten la verificación por correo electrónico, o si esta falla, el sitio recurre a su flujo predeterminado de confirmación por correo electrónico.
  • Minimiza los riesgos de phishing: No hay código para copiar ni oportunidad de enviar al usuario a un sitio falso.

Puedes probar el flujo en la demostración:

Consideraciones sobre las pruebas de origen

Las pruebas de origen son experimentos para recopilar comentarios, por lo que tu opinión es fundamental si participas como parte dependiente o proveedor de identidad. Para informar problemas, usa los siguientes repositorios de GitHub:

Si encuentras errores en la implementación de Chrome, informa el problema en el siguiente componente:

Puedes controlar la funcionalidad de la prueba de origen por respuesta si incluyes el token de prueba de origen. Esto te permite restringir la función a un segmento específico de tus usuarios, como una población de pruebas A/B. Como alternativa, si tienes un grupo de usuarios para pruebas beta o vistas previas anticipadas, es posible que desees o necesites habilitar la función para ellos. En este caso, verifica la dirección de correo electrónico proporcionada antes de emitir o validar el token.

Las pruebas de origen también tienen límites de tráfico para minimizar la cantidad de sitios que dependen de la función antes del lanzamiento. La API del emisor está en desarrollo, por lo que es probable que haya cambios incompatibles con versiones anteriores junto con actualizaciones de la UX de Chrome.

Mantente al tanto de las actualizaciones en el blog y en la lista de distribución de correos electrónicos evp-announce@chromium.org a medida que avance el desarrollo.

Flujo de verificación por correo electrónico

En las siguientes secciones, se explican los términos clave y los pasos del protocolo cuando se usa la API de Email Verification.

Términos clave

Estos son los términos clave de la API de Email Verification:

  • Verificador: Es el sitio que recopila la dirección de correo electrónico y desea verificarla. El verificador también se denomina parte confiante.
  • Proveedor de correo electrónico: Es el servicio que proporciona la dirección de correo electrónico del usuario, por ejemplo, gmail.com.
  • Emisor: Es el servicio que administra la cuenta de correo electrónico del usuario, por ejemplo, accounts.google.com. La entidad emisora también se denomina proveedor de identidad.

En algunos casos, el proveedor de correo electrónico y la entidad emisora operan desde el mismo dominio. Sin embargo, es importante distinguirlos porque la API de Email Verification usa la sesión activa en el navegador con el proveedor de identidad como método de verificación. Por ejemplo, para verificar example@gmail.com, el usuario debe acceder a google.com con esa cuenta en el mismo navegador.

Flujo del protocolo

Arquitectura del flujo de verificación por correo electrónico
Arquitectura del flujo de verificación por correo electrónico
  1. Presentación del formulario: La parte que confía en la identidad presenta un formulario HTML que contiene un <input type="email"> y una entrada oculta marcada con autocomplete="email-verification-token" y un nonce único por instancia.
  2. Entrada de correo electrónico: Cuando el usuario ingresa una dirección de correo electrónico, ya sea seleccionando una sugerencia de autocompletar o escribiendo o pegando y saliendo del campo (blur), el navegador activa la verificación en segundo plano.
  3. Descubrimiento y sesión: El navegador consulta el registro TXT del DNS para _email-verification.<email-domain> para descubrir el origen del emisor autorizado del proveedor y, luego, verifica si el usuario tiene una sesión activa con la configuración de .well-known/web-identity del emisor y los extremos de las cuentas de FedCM. Si el dominio no publica un registro de EVP o no existe una sesión activa, el navegador detiene la verificación sin solicitarle al usuario que realice ninguna acción.
  4. Emisión de tokens: El navegador descubre el issuance_endpoint del proveedor en .well-known/email-verification, crea un par de claves efímeras y envía una solicitud POST HTTP con firmas de mensajes HTTP (RFC 9421) con las cookies de sesión de origen del emisor y la dirección de correo electrónico de destino para recibir un token de verificación de correo electrónico firmado (EVT).
  5. Vinculación de claves y envío: El navegador vincula el EVT firmado al origen de la parte que confía y al formulario nonce dentro de un JWT de vinculación de claves (KB-JWT). Cuando el usuario envía el formulario, Chrome completa la entrada oculta con el token combinado (<EVT>~<KB-JWT>) y muestra una pequeña notificación que le informa al usuario que su proveedor de correo electrónico verificó su dirección.
  6. Validar las reclamaciones y la KB: El servidor de la parte que confía analiza el token de <EVT>~<KB-JWT>, valida las reclamaciones esperadas (email, email_verified, aud, nonce, iat y exp) y verifica la firma de vinculación de la clave con la clave pública efímera en cnf.jwk.
  7. DNS y claves públicas: La parte que confía consulta el registro TXT de DNS _email-verification.<email-domain> para confirmar que coincide con la declaración iss del token y, luego, recupera los metadatos .well-known/email-verification y las claves públicas del emisor de jwks_uri.
  8. Verificar EVT y completar: La parte que confía verifica la firma EVT de la entidad emisora con el JWKS público del proveedor. Si no se recibe ningún token o falla algún paso de validación, el sitio recurre a su proceso de confirmación por correo electrónico existente.

La primera vez que un usuario verifica una dirección de correo electrónico, Chrome muestra un mensaje de permiso (un diálogo en computadoras o una hoja inferior en Android) antes de solicitar un token. Si se otorga, este permiso se recuerda por dirección de correo electrónico en todos los sitios participantes.

Configuración de Chrome

Los usuarios pueden administrar sus correos electrónicos verificados de la siguiente manera:

  • En computadoras, ve a Configuración > Autocompletar y contraseñas > Información de contacto > Correo electrónico verificado (o abre chrome://settings/contactInfo).
  • En Android, en Configuración > Direcciones y más > Correo electrónico verificado

Los usuarios pueden inhabilitar la función por completo o administrar direcciones de correo electrónico verificadas individuales.

Consideraciones sobre el caso de uso

La verificación por correo electrónico es una mejora progresiva de tu flujo existente que elimina la necesidad de que un usuario abandone tu sitio para recuperar una OTP o hacer clic en un vínculo. Los sitios pueden agregar los campos de verificación por correo electrónico a todos los formularios pertinentes, como los de acceso, registro a boletines informativos, creación de cuentas y recuperación de contraseñas. El EVP se activa solo si el navegador lo admite. Si no se recibe ningún código en el envío o falla alguno de los pasos de validación, puedes recurrir a tu flujo de confirmación por correo electrónico predeterminado. Esto también significa que no hay detección de funciones para la API; el sitio del verificador trata el EVT como opcional y lo procesa si está presente en la solicitud.

La verificación por correo electrónico confirma que el usuario tiene una sesión activa con el proveedor de su dirección de correo electrónico. No verifica que tu correo electrónico haya llegado al usuario. Es posible que aún quieras enviar correos electrónicos de bienvenida o incorporación existentes, y que quieras o necesites pedirle al usuario que revise su configuración de spam.