E-posta Doğrulaması API'si, tarayıcının kullanıcının e-posta adresinin sahibi olduğunu doğrulamak için doğrudan e-posta sağlayıcıyla iletişim kurmasını sağlayan bir tekliftir. 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.
Siteler; kaydolma, oturum açma, ödeme, bülten aboneliği veya hesap kurtarma sırasında e-posta adresi toplarken genellikle formu gönderen kişinin adresi kontrol ettiğini doğrular. 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ı, OTP kopyalamasını veya doğrulama bağlantısını tıklamasını gerektirir. Bu kesinti, hem kullanıcıların hem de otomatik ajanların oturumdan ayrılma ve oturumu terk etme oranını artırır. Kullanıcılar genellikle mevcut doğrulama yöntemlerinde geciken e-postalar, süresi dolmuş bağlantılar veya tanınmayan kodlar gibi sorunlar yaşar.
E-posta doğrulaması, mevcut akışınızda progresif geliş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ğrulamasını 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 bir kod yok veya kullanıcıyı sahte bir siteye gönderme fırsatı yoktur.
Faydalı bağlantı
- E-posta Doğrulama API spesifikasyonu (WICG) (GitHub deposu)
- E-posta Doğrulama Protokolü İnternet Taslağı (IETF) (GitHub deposu)
- Chrome Platform Durumu'nda e-posta doğrulama
- E-posta Doğrulaması kaynak denemesi kaydı
Akışı demoda test edebilirsiniz:
- Kartı veren kuruluş demosu: Sahte bir e-posta hesabı ve oturum açılmış bir oturum sağlar.
- Doğrulayıcı demosu: Demo e-postasını veya katılımcı sağlayıcı e-postalarını doğrulayın.
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 bildirimleriniz çok önemlidir. Sorunları bildirmek için aşağıdaki GitHub depolarını kullanın:
- Browser Email Verification API: WICG/email-verification
- E-posta Doğrulaması Protokolü: dickhardt/email-verification
Chrome uygulamasında hatalarla karşılaşırsanız aşağıdaki bileşende bir sorun bildirin:
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 test veya erken erişim kullanıcı grubunuz varsa bu özelliği onlar için etkinleştirmek isteyebilir veya 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 siteleri 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ılacak güncellemelerle birlikte geriye dönük uyumsuz değişiklikler olabilir.
Geliştirme süreci devam ederken buradaki blogda ve evp-announce@chromium.org posta listesinde yapılacak diğer güncellemeleri takip edin.
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
Email Verification API 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). Veren, 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ıyla tarayıcıdaki etkin oturumu kullandığı için 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ışı
- Form sunumu: Güvenen taraf,
<input type="email">veautocomplete="email-verification-token"ile işaretlenmiş gizli bir giriş ve her örnek için benzersiz birnonceiçeren bir HTML formu sunar. - E-posta girişi: Kullanıcı bir e-posta adresi girdiğinde (otomatik doldurma önerisini seçerek veya yazarak ya da yapıştırıp alandan çıkarak (
blur)) tarayıcı, arka planda doğrulamayı tetikler. - Keşif ve oturum: Tarayıcı, sağlayıcının yetkili veren kaynağını keşfetmek için
_email-verification.<email-domain>için DNS TXT kaydını sorgular, ardından verenin.well-known/web-identityyapılandırmasını ve FedCM hesapları uç noktalarını kullanarak kullanıcının etkin bir oturumu olup olmadığını kontrol eder. Alan bir EVP kaydı yayınlamıyorsa veya etkin bir oturum yoksa tarayıcı, kullanıcıdan onay istemeden doğrulamayı durdurur. - Jeton verme: Tarayıcı,
.well-known/email-verificationüzerinden sağlayıcınınissuance_endpointadresini bulur, geçici bir anahtar çifti oluşturur ve imzalayanın birinci taraf oturum çerezleri ile hedef e-posta adresini içeren HTTP Mesaj İmzaları'nı (RFC 9421) kullanarak imzalı bir e-posta doğrulama jetonu (EVT) almak için HTTPPOSTisteği gönderir. - Anahtar bağlama ve gönderme: Tarayıcı, imzalı
EVTdeğerini, bağlı taraf kaynağına ve formnoncedeğerine bir Anahtar Bağlama JWT'si (KB-JWT) içinde bağlar ve kullanıcıya e-posta sağlayıcısının adresini doğruladığını bildiren küçük bir bildirim gösterir. Kullanıcı formu gönderdiğinde Chrome, gizli girişi birleştirilmiş jetonla (<EVT>~<KB-JWT>) doldurur. - İddiaları ve KB'yi doğrulama: Güvenen taraf sunucusu,
<EVT>~<KB-JWT>jetonunu ayrıştırır, beklenen iddiaları (email,email_verified,aud,nonce,iatveexp) doğrular ve anahtar bağlama imzasınıcnf.jwkiçindeki geçici ortak anahtara göre doğrular. - DNS ve ortak anahtarlar: Bağlı olan taraf, jetonun
isshak talebiyle eşleştiğini doğrulamak için_email-verification.<email-domain>DNS TXT kaydını sorgular, ardından verenin.well-known/email-verificationmeta verilerini ve ortak anahtarlarınıjwks_uriadresinden getirir. - EVT'yi doğrulama ve tamamlama: Güvenen taraf, sağlayıcının genel anahtarını kullanarak verenin
EVTimzasını doğrularJWKS. Jeton alınmazsa veya doğrulama adımlarından herhangi biri başarısız olursa site, mevcut e-posta onay sürecine geri döner.
Kullanıcı bir e-posta adresini ilk kez doğruladığında Chrome, jeton istemeden önce bir izin istemi (masaüstünde bir iletişim kutusu veya Android'de bir alt sayfa) gösterir. Bu izin verilirse 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/contactInfosimgesini 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 aynı zamanda 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 mevcutsa işler.
E-posta doğrulaması, kullanıcının e-posta adresinin sağlayıcısıyla etkin bir oturumu olduğunu onaylar. E-postanızın kullanıcıya ulaştığını doğrulamaz. Mevcut karşılama veya oryantasyon e-postalarını göndermeye devam etmek isteyebilir ve kullanıcıdan spam ayarlarını kontrol etmesini isteyebilirsiniz.