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

La API de verificación por correo electrónico 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, el proceso de finalización de la 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 aplicación para revisar su bandeja de entrada, copien una OTP o hagan clic en un vínculo de verificación. Esta interrupción aumenta la tasa de abandono y de sesiones tanto para los usuarios humanos como para los agentes automatizados. Los usuarios suelen experimentar problemas con los métodos de verificación existentes, como correos electrónicos demorados, vínculos vencidos o códigos no reconocidos.

Demostración del mensaje para el usuario de la verificación por correo electrónico
Demostración de la solicitud del usuario de 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 falla la verificación, el sitio vuelve a su flujo de confirmación de correo electrónico predeterminado.
  • Minimiza los riesgos de phishing: No hay ningún código para copiar ni la oportunidad de enviar al usuario a un sitio falso.

Puedes probar el flujo en la demostración:

Consideraciones sobre la prueba 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, registra un problema en el siguiente componente:

Puedes controlar la funcionalidad de la prueba de origen por respuesta incluyendo el token de la 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 de pruebas beta o de versión preliminar anticipada, es posible que quieras 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 los sitios que dependen de la función antes del lanzamiento. La API de la entidad emisora está en desarrollo, y debes esperar cambios incompatibles con versiones anteriores junto con actualizaciones de la UX de Chrome.

A medida que avance el desarrollo, consulta más actualizaciones en el blog aquí y en la evp-announce@chromium.org lista de distribución.

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 verificación por correo electrónico.

Términos clave

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

  • Verificador: Es el sitio que recopila la dirección de correo electrónico y quiere verificar la. El verificador también se denomina parte dependiente.
  • Proveedor de correo electrónico: Es el servicio que proporciona la dirección de correo electrónico del usuario, por ejemplo gmail.com.
  • Entidad emisora: Es el servicio que administra la cuenta del 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 de 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 dependiente entrega 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 autocompletado o escribiendo, pegando y saliendo del campo (blur)), el navegador activa la verificación en segundo plano.
  3. Detección y sesión: El navegador consulta el registro TXT de DNS para _email-verification.<email-domain> para descubrir el origen de la entidad emisora autorizada del proveedor y, luego, verifica si el usuario tiene una sesión activa con la configuración .well-known/web-identity de la entidad emisora 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 lo haga.
  4. Emisión de tokens: El navegador descubre el issuance_endpoint del proveedor desde .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 de la entidad emisora y la dirección de correo electrónico de destino para recibir un token de verificación por correo electrónico (EVT) firmado.
  5. Vinculación de claves y envío: El navegador vincula el EVT firmado al origen de la parte dependiente y al nonce del formulario dentro de un JWT de vinculación de claves (KB-JWT) y muestra una pequeña notificación que informa al usuario que su proveedor de correo electrónico verificó su dirección. Cuando el usuario envía el formulario, Chrome propaga la entrada oculta con el token combinado (<EVT>~<KB-JWT>).
  6. Validación de reclamaciones y KB: El servidor de la parte dependiente analiza el token <EVT>~<KB-JWT>, valida las reclamaciones esperadas (email, email_verified, aud, nonce, iat, y exp) y verifica la firma de vinculación de claves con la clave pública efímera en cnf.jwk.
  7. DNS y claves públicas: La parte dependiente consulta el registro TXT de DNS _email-verification.<email-domain> para confirmar que coincida con la reclamación iss del token y, luego, recupera los metadatos .well-known/email-verification y las claves públicas de la entidad emisora de jwks_uri.
  8. Verificación de EVT y finalización: La parte dependiente verifica la EVT firma 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 vuelve a su proceso de confirmación de correo electrónico existente.

La primera vez que un usuario verifica una dirección de correo electrónico, Chrome muestra una solicitud de permiso (un diálogo en la computadora 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 los sitios participantes.

Configuración de Chrome

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

  • En computadoras, en 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 los casos 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 accesos, registros de boletines informativos, creación de cuentas y recuperación de contraseñas. La EVP se activa solo si el navegador la admite. Si no se recibe ningún código en el envío o falla alguno de los pasos de validación, puedes volver a tu flujo de confirmación de correo electrónico predeterminado. Esto también significa que no hay detección de funciones para la API; el sitio 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 quieras enviar correos electrónicos de bienvenida o incorporación existentes, y que quieras o necesites solicitarle al usuario que revise su configuración de spam.