Yayın tarihi: 19 Ağustos 2025
WebAuthn anında arabuluculuk, kullanıcı oturum açma akışlarını kolaylaştırmak için tasarlanmış yeni bir web özelliğidir. Bu kaynak denemesi, özelliğe, avantajlarına ve uygulama ayrıntılarına genel bir bakış sunarak sizi katılmaya ve web kimlik doğrulamanın geleceğini şekillendirmeye davet ediyor.
Arka plan
Web'de kimlik doğrulama genellikle sürtünmeye neden olarak kullanıcı oturum açma işlemini zorlaştırır. Mevcut WebAuthn akışları güçlü olsa da "Oturum açma" düğmeleriyle ilgili sorunlar yaşanır. Bu durum, özellikle kimlik bilgileri anında kullanılamadığında standart form geri dönüşlerine yol açar.
Bu yeni özellik, mobil cihazlardaki preferImmediatelyAvailableCredentials
API'lerine benzer şekilde kolay bir oturum açma akışı sunar. Kullanıcı deneyimini iyileştirip sorunları azaltarak genellikle standart giriş formlarından önce giriş işlemini basitleştirir.
İşleyiş şekli
WebAuthn'de anında arabuluculuk, daha doğrudan ve verimli bir oturum açma deneyimi sağlar. Bu özellik, tarayıcının kullanılabilir kimlik bilgilerini anında sunmasına veya cihazlar arası ya da güvenlik anahtarı kimlik doğrulaması istemeden bunların olmadığını hemen bildirmesine olanak tanır. Böylece geliştiriciler için uygulama süreci basitleştirilir.
immediate
uyumlulaştırma türü
immediate
istekleri için navigator.credentials.get()
uyumlulaştırma türünü kullanıma sunuyoruz. Bu seçenek ayarlandığında, yerel olarak kullanılabilen kimlik bilgileri bulunamazsa söz reddedilir ve NotAllowedError
döndürülür. Kimlik bilgileri varsa tarayıcı, kimlik doğrulama sürecini normal şekilde yürütür.
Bu esneklik sayesinde siteler, oturum açma akışlarını uyarlayabilir ve anında kimlik bilgileri kullanılamadığında alternatif yöntemler sunabilir.
Daha da önemlisi, tarayıcılar kullanıcı gizliliğini ve güvenliğini korumak için NotAllowedError
döndürmeye devam edebilir. Böylece parmak izi oluşturma veya izleme gibi sorunlar önlenir.
Özellik algılama
Anında aracılığın kullanılabilir olup olmadığını PublicKeyCredential.getClientCapabilities()
kullanarak tespit edebilirsiniz. Geliştiriciler, döndürülen capabilities
nesnesinde immediateGet
özelliğinin olup olmadığını kontrol edebilir.
async function checkImmediateMediationAvailability() {
try {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.immediateGet && window.PasswordCredential) {
console.log("Immediate Mediation with passwords supported.");
} else if (capabilities.immediateGet) {
console.log("Immediate Mediation without passwords supported.");
} else { console.log("Immediate Mediation unsupported."); }
} catch (error) {
console.error("Error getting client capabilities:", error);
}
}
Not: Daha geniş tarayıcı desteği için getClientCapabilities()
ile ilgili bir polyfill, WebAuthn Polyfills GitHub deposunda mevcuttur.
Örnek uygulama
API'yi kullanmak için navigator.credentials.get()
ile mediation:
'immediate'
çağrısı yapın. Çoğu kullanıcının bugün kayıtlı bir şifresi olduğu ve bu deneyimden hemen yararlanabileceği için isteğe password: true
'ı eklemenizi öneririz.
button.addEventListener('click', async (event) => {
event.preventDefault();
event.stopPropagation();
const cred = await navigator.credentials.get({
password: true,
publicKey: {
challenge, // Your server-generated challenge
rpId: 'example.com' // Your Relying Party ID
},
mediation: 'immediate',
});
});
Geliştiriciler, sorunsuz bir yedek oturum açma deneyimi sağlamak için NotAllowedError
öğesini bir catch
blokunda işlemelidir.
Anında uyumlulaştırma için adım adım iş akışı
WebAuthn anında aracılığı, kullanıcı oturum açma işlemlerini kolaylaştırmak için iki temel kullanım alanını destekler: İstenmeyen yedek seçenekleri bastıran özel bir "Geçiş anahtarıyla oturum aç" düğmesini etkinleştirme ve kullanıcı için kritik bir işlemden önce kimlik bilgilerini proaktif olarak sunan dinamik bir oturum açma akışını kolaylaştırma.
1. kullanım alanı: Oturum açma düğmesiyle açık oturum açma
Bu senaryo, özel bir oturum açma düğmesi sağlamaya odaklanır. Böylece, beklenmedik istemler olmadan veya oturum açma sayfasından geçmeden temiz bir kullanıcı deneyimi sağlanır.
- Kullanıcı oturum açma işlemini başlatır: Kullanıcı bir "Oturum aç" düğmesini tıklar. Daha sonra güvenen taraf,
mediation: "immediate"
ilenavigator.credentials.get()
'yı çağırır. - Kimlik bilgisi seçimi için tarayıcı istemleri (varsa): Tarayıcı, yerel olarak kullanılabilen geçiş anahtarlarını veya istenen şifreleri kontrol eder. Bulursa kullanıcının bir hesap seçmesi için hemen bir modal kullanıcı arayüzü gösterir. Hesaplar, son kullanılma zaman damgasına ve ardından alfabetik olarak sıralanır. Not: Aynı hesap için birden fazla şifre yöneticisinden hem şifre hem de geçiş anahtarı bulunursa tarayıcı geçiş anahtarlarına öncelik verir. Aynı hesap için farklı sağlayıcılardan birden fazla geçiş anahtarı varsa en son kullanılan geçiş anahtarına öncelik verilir.
- Başarılı oturum açma: Kullanıcı, tarayıcı kullanıcı arayüzünden geçiş anahtarını seçer. Tarayıcı doğrulama gerektiriyorsa kullanıcıdan daha önce ayarladığı yöntemi (ör. PIN, biyometrik giriş veya desen) kullanarak kimliğini doğrulaması istenir. Oturum açma işlemi başarıyla tamamlanır.
- Yedek yol: geçiş anahtarı yok veya kullanıcı kapatma: Site için yerel geçiş anahtarı veya istenen şifre yoksa ya da kullanıcı tarayıcı kullanıcı arayüzünü kapatırsa tarayıcı, güvenen tarafa
NotAllowedError
gönderir ve tarayıcı, cihazlar arası veya güvenlik anahtarı seçenekleri için herhangi bir kullanıcı arayüzü göstermez. Daha sonra güvenen taraf, standart oturum açma sayfasına devam edebilir veya alternatif kimlik doğrulama mekanizmaları sunabilir.
2. kullanım alanı: Kullanıcı işleminden önce örtülü oturum açma akışı
Bu senaryo, kullanıcıların kimliği doğrulanmış bir durum gerektiren bir işlem (ör. ödeme) yapmasından önce geçiş anahtarları ve şifreler sunarak proaktif bir oturum açma deneyimi sağlar.
- Kullanıcı, oturum açmayı gerektiren bir işlem başlatır: Kullanıcı, oturum açmasını gerektiren bir işlem için bir düğmeyi (örneğin, "Ödeme" düğmesi) tıklar. Güvenen taraf daha sonra
navigator.credentials.get()
ilemediation: "immediate"
'yi çağırır. Tarayıcı, kimlik bilgisi seçimi için istemler gösterir (varsa): Tarayıcı, yerel olarak kullanılabilen geçiş anahtarlarını veya şifreleri kontrol eder. Bu durumda, kullanıcıya hemen bir hesap seçmesi için modal kullanıcı arayüzü gösterilir. Hesaplar, son kullanılan zaman damgasına göre sıralanır, ardından alfabetik olarak sıralanır ve hesap başına tek bir giriş göstermek için yinelenenler kaldırılır. Not: Aynı hesap için birden fazla şifre yöneticisinden hem şifre hem de geçiş anahtarı bulunursa tarayıcı, geçiş anahtarlarına öncelik verir. Aynı hesap için farklı sağlayıcılardan birden fazla geçiş anahtarı varsa en son kullanılan geçiş anahtarına öncelik verilir.
Başarılı oturum açma: Kullanıcı, tarayıcı kullanıcı arayüzünden bir kimlik bilgisi seçer. Tarayıcı doğrulama gerektiriyorsa kullanıcıdan daha önce ayarladığı yöntemi (ör. PIN, biyometrik giriş veya desen) kullanarak kimliğini doğrulaması istenir. Oturum açma işlemi başarıyla tamamlanır.
Yedek yol: kimlik bilgisi yok veya kullanıcı kapatma: Site için yerel kimlik bilgisi yoksa ya da kullanıcı tarayıcı kullanıcı arayüzünü kapatırsa tarayıcı, güvenen tarafa
NotAllowedError
gönderir ve tarayıcı herhangi bir kullanıcı arayüzü göstermez. Kullanıcının oturum açma deneyimi bugünden itibaren değişmeden kalır. Daha sonra güvenen taraf, kullanıcıdan daha fazla ayrıntı (ör. e-posta adresi) isteyebilir veya cihazlar arası kimlik doğrulayıcıları destekleyen bir WebAuthn modal isteği, SMS doğrulaması ya da şifre formu gibi alternatif kimlik doğrulama mekanizmalarını gösterebilir.
Avantajları
WebAuthn'in anında aracılık özelliği, geliştiriciler ve kullanıcılar için çeşitli önemli avantajlar sunar:
- Sorunsuz oturum açma: Tarayıcılarında veya şifre yöneticilerinde kayıtlı, hemen kullanılabilir geçiş anahtarları ya da şifreleri olan kullanıcılar için daha sorunsuz ve kolay bir oturum açma deneyimi sağlar.
- Akıllı oturum açma: API, kullanıcının oturum açmasını gerektiren işlemler yapmak istediğinde oturum açma akışını etkinleştirir. Bunlar, kullanıcının kimlik bilgisi durumuna göre akıllıca uyarlanır. Mümkün olduğunda anında kimlik doğrulama sunarak gereksiz yönlendirmeleri önler ve akışı kolaylaştırır.
- Geliştirilmiş kimlik bilgisi yönetimi: Birden fazla şifre yöneticisi aynı hesap için kimlik bilgileri sunduğunda tarayıcı, en uygun seçeneği akıllıca belirleyerek kullanıcıların kimlik bilgisi yönetimini kolaylaştırır.
- Kullanıcıların kafasının karışmasını önleme: Bilinen kimlik bilgilerini doğrudan sunan bu özellik, genellikle birden fazla oturum açma seçeneği veya standart formlarla ilişkili olan kullanıcı kafa karışıklığını en aza indirir.
- Sorunsuz yedekleme: Anında kimlik bilgileri olmayan kullanıcılar için standart giriş sayfalarına sorunsuz bir şekilde geri dönülmesini sağlar. Bu sayede, kullanıcıların deneyimi mevcut akışlardan değişmez.
Gizlilik ve güvenlik
WebAuthn anında aracılığı, sitelerin bir kullanıcı açıkça oturum açma girişimine izin vermeden önce anında kullanılabilir kimlik bilgilerinin varlığını belirlemesini sağlar. Kullanıcı gizliliğini korumak ve olası kötüye kullanımları önlemek için çeşitli önemli önlemler uygularız:
- Kullanıcı hareketi şartı: API çağrısı için kullanıcı hareketi (herhangi bir geçici kullanıcı etkinleştirme) gerekir. Bu durum, sitelerin sessiz yoklama ve parmak izi alma işlemlerini zorlaştırır.
- Gizli ve özel oturumlar: Gizli veya özel oturumlarda, tüm anlık arabuluculuk istekleri
NotAllowedError
hatası verir. allowCredentials
listeleriyle ilgili kısıtlamalar:allowCredentials
listelerini kullanan isteklerNotAllowedError
hatası verir. Bu, sitelerin kullanıcı etkileşim geçmişini tahmin etmesini veya kullanıcıları oturumlar arasında izlemesini engeller.- İptal: Anında aracılık içeren bir istekte
signal
parametresinin ayarlanması geçersizdir. Bu, sitelerin tarayıcı kullanıcı arayüzünü programatik olarak kapatmasını engeller.
Deneyin
WebAuthn anında aracılık özelliğini denemenizi öneririz.
Chrome'da durum
Bu özellik, Chromium geliştirme döngüsünde ilerleme kaydediyor:
- Masaüstü: Chrome 136'da geliştirici denemesi, Chrome 139'dan 141'e kadar kaynak denemesiyle.
- Android: Chrome 140'ta geliştirici denemesi.
Yerel test için
WebAuthn anında uyumlulaştırmayı yerel olarak test etmek için:
- Chrome 139'u indirin: Masaüstünüzde Chrome'un en yeni sürümünü edinin ve açın.
- Anında aracılık bayrağını etkinleştirin: Adres çubuğunda
chrome://flags/#web-authentication-immediate-get
bölümüne gidin ve "Web Authentication Immediate Get" bayrağını etkinleştirin. - Kimlik bilgilerini hazırlayın: Kullanılabilir geçiş anahtarlarınızın ve şifrelerinizin kaydedildiğinden emin olun:
- Google Şifre Yöneticisi'ne kaydedilen şifreler
- Google Şifre Yöneticisi'ne kaydedilen geçiş anahtarları (Chrome'da oturum açıp Chrome'u bir Google Hesabı ile senkronize etmeniz gerekir), Windows Hello veya iCloud anahtar zinciri.
Herkese açık test için (kaynak denemesi)
Herkese açık bir ortamda kaynak denemesiyle WebAuthn anında uyumlulaştırmayı test etmek için:
- Kaydolma: Chrome Kaynak Denemeleri sayfasını ziyaret edin ve "WebAuthn immediate mediation" denemesine kaydolun.
- HTTP üstbilgilerine jeton ekleme: Sağlanan deneme jetonunu sitenizin HTTP üstbilgilerine ekleyin:
HTML Origin-Trial: [YOUR_TRIAL_TOKEN]
Not: JavaScript ile jetonlarınızı programatik olarak da sağlayabilirsiniz.
Test senaryoları
Referans uygulama sunuyoruz ve çeşitli senaryoları test etmek için kendi prototipinizi oluşturmanızı öneriyoruz.
- Referans demosu: Referans uygulamayı
https://deephand.github.io/webauthn-immediate-demo/
adresinde deneyebilirsiniz.- Prototip uygulayın: Sitenizde bir prototip uygularken kullanıcı tıkladıktan sonra (ör. "Oturum Aç" düğmesi veya kullanıcının oturum açmasını gerektiren herhangi bir etkileşim)
navigator.credentials.get()
çağrısınımediation: 'immediate'
ile yaptığınızdan emin olun.
- Prototip uygulayın: Sitenizde bir prototip uygularken kullanıcı tıkladıktan sonra (ör. "Oturum Aç" düğmesi veya kullanıcının oturum açmasını gerektiren herhangi bir etkileşim)
- 1. akış: Şifre veya geçiş anahtarı olmadan oturum açma: Site için geçiş anahtarınız veya şifreniz yoksa "Oturum Aç"ı tıkladığınızda doğrudan standart oturum açma sayfanıza yönlendirilirsiniz ve tarayıcı kullanıcı arayüzü görünmez.
- 2. akış: Anında kullanılabilen yerel geçiş anahtarıyla oturum açma: Site için kaydedilmiş bir geçiş anahtarınız varsa "Oturum Aç"ı tıkladığınızda geçiş anahtarını seçmenizi isteyen Anında Aracılık kullanıcı arayüzü tetiklenir.
- 3. akış: Yerel geçiş anahtarı veya şifreyle oturum açma: Hem geçiş anahtarlarınız hem de şifreleriniz kaydedilmişse "Şifre iste" seçeneğini etkinleştirin (kodunuzda
password: true
olarak ayarlayarak). "Oturum aç"ı tıkladığınızda, Anında Aracılık kullanıcı arayüzünde hem geçiş anahtarı hem de şifre seçenekleri sunulmalıdır.