E-posta Doğrulama

E-posta Doğrulama API'si, kullanıcının e-posta adresinin sahibi olduğunu doğrulamak için tarayıcının doğrudan e-posta sağlayıcıyla iletişim kurmasını sağlayan bir öneridir. Kullanıcılar e-posta adreslerini girer ve formu gönderir. Site, e-posta göndermeden veya kullanıcının akışını kesintiye uğratmadan tarayıcıdan alınan imzalı e-posta doğrulama jetonunu sağlayıcıyla doğrular.

Kayıt, oturum açma, ödeme, bülten aboneliği veya hesap kurtarma sırasında bir e-posta adresi toplarken siteler genellikle formu gönderen kişinin adresi kontrol ettiğini onaylar. Mevcut doğrulama yöntemleri, kullanıcıların sitenizden ayrılmasını, gelen kutularını kontrol etmek için uygulamalar arasında geçiş yapmasını, tek kullanımlık şifre kopyalamasını veya doğrulama bağlantısını tıklamasını gerektirir. Bu kesinti, hem kullanıcıların hem de otomatik aracıların oturumdan ayrılma ve oturumu terk etme oranını artırır. Kullanıcılar genellikle mevcut doğrulama yöntemleriyle ilgili sorunlar yaşar. Örneğin, e-postaların gecikmesi, bağlantıların süresinin dolması veya kodların tanınmaması gibi.

E-posta doğrulama kullanıcı istemi demosu
E-posta doğrulama kullanıcı istemi demosu

E-posta doğrulama, mevcut akışınızda aşamalı bir iyileştirme olarak işlev görür:

  • Kesinti yok: Doğrulama, kullanıcı formu doldururken arka planda gerçekleşir.
  • Özellik algılama gerekmez: Siteler, formlarına bir e-posta girişi ve gizli bir jeton girişi ekler. Tarayıcı veya sağlayıcı e-posta doğrulamayı desteklemiyorsa ya da doğrulama başarısız olursa site, varsayılan e-posta onay akışına geri döner.
  • Kimlik avı risklerini en aza indirin: Kopyalanacak kod yok veya kullanıcıyı sahte bir siteye yönlendirme fırsatı yoktur.

Akışı demoda test edebilirsiniz:

Kaynak denemesiyle ilgili dikkat edilmesi gerekenler

Kaynak denemeleri, geri bildirim toplamak için yapılan denemelerdir. Bu nedenle, güvenen taraf veya kimlik sağlayıcı olarak katılırsanız geri bildiriminiz çok önemlidir. Sorunları bildirmek için aşağıdaki GitHub depolarını kullanın:

Chrome uygulamasında hatalarla karşılaşırsanız aşağıdaki bileşende sorun bildiriminde bulunun:

Kaynak denemesi jetonunu ekleyerek kaynak denemesi işlevini yanıt bazında kontrol edebilirsiniz. Bu sayede, özelliği kullanıcılarınızın belirli bir segmentiyle (ör. A/B testi popülasyonu) sınırlayabilirsiniz. Alternatif olarak, beta testi veya erken erişim kullanıcı grubunuz varsa bu özellik için erken erişimi etkinleştirmeniz gerekebilir. Bu durumda, jetonu yayınlamadan veya doğrulamadan önce sağlanan e-posta adresini kontrol edin.

Kaynak denemelerinde, özellik kullanıma sunulmadan önce bu özelliğe güvenen sitelerin sayısını en aza indirmek için trafik sınırları da vardır. Veren API'si geliştirme aşamasındadır. Chrome kullanıcı deneyiminde yapılan güncellemelerin yanı sıra geriye dönük uyumlu olmayan değişiklikler de bekleyebilirsiniz.

Geliştirme süreci ilerledikçe blogda ve evp-announce@chromium.org posta listesinde daha fazla güncelleme paylaşacağız.

E-posta doğrulama akışı

Aşağıdaki bölümlerde, E-posta Doğrulama API'si kullanılırken önemli terimler ve protokol adımları açıklanmaktadır.

Anahtar terimler

E-posta Doğrulama API'si ile ilgili önemli terimler şunlardır:

  • Doğrulayıcı: E-posta adresini toplayan ve doğrulamak isteyen site. Doğrulayıcıya Güvenilir Taraf da denir.
  • E-posta Sağlayıcı: Kullanıcının e-posta adresini sağlayan hizmettir (ör. gmail.com).
  • Veren: Kullanıcının e-posta hesabını yöneten hizmet (ör. accounts.google.com). Düzenleyen kuruluş, Kimlik Sağlayıcı olarak da adlandırılır.

Bazı durumlarda, e-posta sağlayıcı ve veren kuruluş aynı alan adından çalışır. Ancak, Email Verification API'nin doğrulama yöntemi olarak kimlik sağlayıcı ile tarayıcıdaki etkin oturumu kullandığından bu iki kavramı birbirinden ayırmak önemlidir. Örneğin, example@gmail.com doğrulaması için kullanıcının aynı tarayıcıda google.com hesabıyla oturum açmış olması gerekir.

Protokol akışı

E-posta doğrulama iş akışı mimarisi
E-posta doğrulama akışı mimarisi
  1. Form sunumu: Güvenen taraf, <input type="email"> içeren bir HTML formu ve autocomplete="email-verification-token" ile işaretlenmiş gizli bir giriş ve örnek başına benzersiz bir nonce sunar.
  2. E-posta girişi: Kullanıcı bir e-posta adresi girdiğinde (otomatik doldurma önerisini seçerek veya yazıp yapıştırarak ve alandan çıkarak blur) tarayıcı, arka planda doğrulama işlemini tetikler.
  3. Keşif ve oturum: Tarayıcı, sağlayıcının yetkili veren kaynağını keşfetmek için _email-verification.<email-domain> DNS TXT kaydını sorgular, ardından kullanıcının veren kaynağın .well-known/web-identity yapılandırmasını ve FedCM hesapları uç noktalarını kullanarak etkin bir oturumu olup olmadığını kontrol eder. Alan bir EVP kaydı yayınlamıyorsa veya etkin bir oturum yoksa tarayıcı, kullanıcıya sormadan doğrulamayı durdurur.
  4. Jeton verme: Tarayıcı, sağlayıcının issuance_endpoint değerini .well-known/email-verification konumundan keşfeder, kısa ömürlü bir anahtar çifti oluşturur ve HTTP Mesaj İmzaları (RFC 9421) ile birlikte veren kuruluşun birinci taraf oturum çerezlerini ve hedef e-posta adresini kullanarak bir HTTP POST isteği gönderir. Böylece imzalı bir e-posta doğrulama jetonu (EVT) alır.
  5. Anahtar bağlama ve gönderme: Tarayıcı, imzalı EVT öğesini, anahtar bağlama JWT'si (KB-JWT) içindeki güvenen taraf kaynağına ve forma nonce bağlar. Kullanıcı formu gönderdiğinde Chrome, gizli girişi birleştirilmiş jetonla (<EVT>~<KB-JWT>) doldurur ve kullanıcının e-posta sağlayıcısının adresini doğruladığını bildiren küçük bir bildirim gösterir.
  6. İddiaları ve bilgi tabanını doğrulama: Güvenen taraf sunucusu, <EVT>~<KB-JWT> jetonunu ayrıştırır, beklenen iddiaları (email, email_verified, aud, nonce, iat ve exp) doğrular ve anahtar bağlama imzasını cnf.jwk içindeki kısa ömürlü genel anahtara göre doğrular.
  7. DNS ve ortak anahtarlar: Güvenen taraf, _email-verification.<email-domain> DNS TXT kaydını sorgulayarak jetonun iss talebiyle eşleştiğini onaylar, ardından jwks_uri'tan veren kuruluşun .well-known/email-verification meta verilerini ve ortak anahtarlarını getirir.
  8. EVT'yi doğrulama ve tamamlama: Güvenen taraf, sağlayıcının genel anahtarını kullanarak verenin EVT imzasını doğrular JWKS. Jeton alınmazsa veya herhangi bir doğrulama adımı başarısız olursa site, mevcut e-posta onayı sürecine geri döner.

Bir kullanıcı ilk kez bir e-posta adresini doğruladığında Chrome, jeton istemeden önce bir izin istemi (masaüstünde bir iletişim kutusu, Android'de ise bir alt sayfa) gösterir. Verilirse bu izin, katılımcı sitelerde e-posta adresi başına hatırlanır.

Chrome ayarları

Kullanıcılar, doğrulanmış e-postalarını yönetebilir:

  • Masaüstünde Ayarlar > Otomatik doldurma ve şifreler > İletişim bilgileri > Doğrulanmış e-posta'ya gidin (veya chrome://settings/contactInfo simgesini açın).
  • Android'de Ayarlar > Adresler ve daha fazlası > Doğrulanmış e-posta bölümünde

Kullanıcılar, özelliği tamamen devre dışı bırakabilir veya tek tek doğrulanmış e-posta adreslerini yönetebilir.

Kullanım alanıyla ilgili dikkat edilmesi gerekenler

E-posta doğrulama, mevcut akışınızda progresif geliştirme sağlayan bir özelliktir. Bu özellik sayesinde, kullanıcıların tek kullanımlık şifre almak veya bir bağlantıyı tıklamak için sitenizden ayrılması gerekmez. Siteler, e-posta doğrulama alanlarını girişler, bülten kayıtları, hesap oluşturma ve şifre kurtarma gibi tüm ilgili formlara ekleyebilir. EVP yalnızca tarayıcı destekliyorsa tetiklenir. Gönderim sırasında kod alınmazsa veya doğrulama adımlarından herhangi biri başarısız olursa varsayılan e-posta onay akışınıza geri dönebilirsiniz. Bu, API için özellik algılama olmadığı anlamına da gelir. Doğrulayıcı site, EVT'yi isteğe bağlı olarak değerlendirir ve istekte varsa işler.

E-posta doğrulama, kullanıcının e-posta adresinin sağlayıcısında etkin bir oturumunun olduğunu onaylar. Bu, e-postanızın kullanıcıya ulaştığını doğrulamaz. Mevcut karşılama veya oryantasyon e-postalarını göndermeye devam etmek isteyebilirsiniz. Ayrıca, kullanıcıdan spam ayarlarını kontrol etmesini istemeniz gerekebilir.