Get your free and exclusive +30-page Authentication Analytics Whitepaper
Back to Overview

WebAuthn İstemci Yetenekleri

Passkey entegrasyonunu iyileştirmek, kullanıcı deneyimini (UX) geliştirmek ve kimlik doğrulama akışlarını kolaylaştırmak için getClientCapabilities() aracılığıyla WebAuthn Seviye 3 istemci yeteneklerini keşfedin.

Vincent Delitz
Vincent Delitz

Created: August 8, 2025

Updated: April 14, 2026

webauthn client capabilities

See the original blog version in English here.

PasskeysCheatsheet Icon

Looking for a dev-focused passkey reference? Download our Passkeys Cheat Sheet. Trusted by dev teams at Ally, Stanford CS & more.

Get Cheat Sheet
Key Facts
  • WebAuthn Seviye 3'teki getClientCapabilities(), tarayıcıların bir özellik kontrol listesi sunmasını sağlar. Böylece geliştiriciler, kimlik doğrulama akışlarını istemci desteğine göre özel olarak ayarlayabilir.
  • Safari 17.4, getClientCapabilities() API'sini sunan ilk tarayıcı oldu. Chrome 133, Edge 133 ve Firefox 135 de o günden bu yana desteği ekledi.
  • conditionalCreate, parola otomatik doldurma sırasında passkey (geçiş anahtarı) oluşturmayı otomatikleştirir ve kullanıcı müdahalesi olmadan benimsenme oranını artırır. Ekim 2024 itibarıyla bunu yalnızca Apple Passwords desteklemektedir.
  • signalAllAcceptedCredentials, tam kimlik bilgisi (credential) listesini relying party (bağlı taraf) ile authenticator (kimlik doğrulayıcı) arasında senkronize eder. Sistemlerin passkey'leri güncel tutmak için her oturum açma işleminde bu metodu düzenli olarak çağırması önerilir.
  • hybridTransport, QR kod ve Bluetooth üzerinden cihazlar arası kimlik doğrulamaya olanak tanır. Kullanıcıların akıllı telefonlarında saklanan bir passkey'i kullanarak masaüstünde oturum açmasını sağlar.

1. Giriş#

WebAuthn, passkey'lerin arkasındaki modern standarttır. Geleneksel parolalara güvenmek yerine açık anahtar (public-key) kriptografisini kullanır. Bu sayede kullanıcılar; parmak izi, yüz tanıma gibi biyometrik verilerle veya fiziksel güvenlik anahtarlarıyla kimliklerini doğrulayabilirler. Bu değişim sadece güvenliği artırmakla kalmaz, aynı zamanda parola yönetimi derdini ortadan kaldırarak kullanıcı deneyimini de harika bir seviyeye taşır.

WebAuthn Seviye 3 standardı, geliştiricilere ve platformlara passkey'leri uygularken daha fazla kontrol ve esneklik sunmayı amaçlayan yeni istemci yetenekleri (tarayıcı API'si getClientCapabilities() aracılığıyla alınabilir) sunuyor. Bu güncellemeler, passkey'leri cihazlar, tarayıcılar ve platformlar arasında entegre etme sürecini basitleştirerek daha akıcı ve tutarlı bir kullanıcı yolculuğu sağlıyor.

Bu yazıda birlikte şu soruların yanıtlarını keşfedeceğiz:

  1. WebAuthn istemci yetenekleri nelerdir?
  2. Hangi WebAuthn istemci yetenekleri mevcut?
  3. WebAuthn istemci yetenekleri passkey uygulamalarını nasıl iyileştirir?
  4. WebAuthn istemci yetenekleri geliştiriciler ve ürün yöneticileri için neden önemlidir?

Yazının sonunda, modern kullanıcı beklentileriyle örtüşen, pürüzsüz ve güvenli kimlik doğrulama akışları oluşturmak için bu özelliklerden nasıl yararlanabileceğinizi tam olarak anlayacaksınız.

2. WebAuthn İstemci Yetenekleri Nelerdir?#

WebAuthn istemci yetenekleri, tarayıcıların ve platformların hangi tür WebAuthn işlevlerini desteklediklerini iletmelerine olanak tanıyan bir dizi özelliktir. Basitçe ifade etmek gerekirse, web sitelerine kullanıcının cihazında hangi kimlik doğrulama yöntemlerinin ve ayarlarının kullanılabileceğini bildiren bir "özellik kontrol listesi" gibi çalışırlar. Bu sayede geliştiriciler, kimlik doğrulama akışlarını istemcinin yeteneklerine göre uyarlayabilir ve daha sorunsuz, güvenli bir deneyim sunabilirler.

Örneğin, bir tarayıcı biyometrik kimlik doğrulamayı (Touch ID gibi) desteklediğini sinyallerse, giriş akışınızı kullanıcılara parmak iziyle giriş yapma seçeneği sunacak şekilde tasarlayabilirsiniz. Tarayıcı belirli özellikleri desteklemiyorsa parola veya SMS OTP gibi alternatif (fallback) seçenekler sunabilirsiniz. Pratikte, desteklenmeyen veya yarıda kesilen yetenek yolları genel tarayıcı hataları olarak görünebileceğinden, ekiplerin bu sonuçları açık bir WebAuthn hata sınıflandırmasıyla eşleştirmesi iyi bir fikirdir.

3. WebAuthn Standart Seviye 3 ile Gelen İstemci Yetenekleri#

WebAuthn Seviye 3 standardı, passkey uygulamalarını çok daha yetenekli ve kullanıcı dostu hale getiren birkaç yeni istemci yeteneği sunar. getClientCapabilities() API çağrısı için ilk destek Safari 17.4'te tanıtıldı.

Tarayıcıdaki desteği tespit etmek için aşağıdaki kod parçacığı işinize yarayabilir:

// PublicKeyCredential nesnesinin mevcut tarayıcıda desteklenip desteklenmediğini kontrol edin if (typeof PublicKeyCredential === "undefined") { console.log("PublicKeyCredential is not supported in this browser."); } // PublicKeyCredential üzerinde getClientCapabilities metodunun var olup olmadığını kontrol edin if (typeof PublicKeyCredential.getClientCapabilities === "function") { try { let capabilities = await PublicKeyCredential.getClientCapabilities(); console.log(capabilities); } catch (error) { console.error("Error getting client capabilities:", error); } } else { console.log("getClientCapabilities is not supported in this browser"); }

4. getClientCapabilities()#

getClientCapabilities(), web sitelerinin ve uygulamaların hangi WebAuthn özelliklerinin desteklendiğini belirlemek için istemciyi (ör. tarayıcı veya cihaz) sorgulamasına olanak tanır. Geliştiriciler istemcinin yeteneklerini anlayarak, biyometrik kimlik doğrulama gibi mevcut özelliklerden yararlanmak için akışları optimize edebilir veya belirli yetenekler eksikse alternatif yöntemler sunabilirler.

Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

İşte WebAuthn istemci yeteneklerine ve passkey entegrasyonunu nasıl etkilediklerine yakından bir bakış:

4.1 conditionalCreate#

conditionalCreate, belirli koşullara bağlı olarak otomatik passkey oluşturulmasını sağlar. Bir uygulama, parola yöneticisinin ilgili desteği varsa, parola otomatik doldurma sırasında passkey'i otomatik olarak oluşturmak için bu yeteneği kullanabilir. Bu özellik, kullanıcıları parolalardan passkey'lere otomatik olarak geçirerek passkey benimsenmesini ve kullanımını artırmaya çok yardımcı olur.

4.2 conditionalGet#

conditionalCreate özelliğine benzer şekilde conditionalGet, passkey ile girişleri otomatik olarak tetikler. Bu, en iyi passkey deneyiminin (UX) sunulması gereken senaryolarda harikadır; girişi sadece parolasız değil, aynı zamanda kullanıcı adı olmadan da (usernameless) yapmanızı sağlar. Kullanıcılar bir modal veya açılır menüdeki (dropdown) passkey'e tıklayıp anında kimlik doğrulayabilir. Geliştiriciler bu yeteneği kullanarak gereksiz istemleri en aza indirir ve passkey kimlik doğrulamasının yalnızca uygun olduğunda gerçekleşmesini sağlarlar.

4.3 hybridTransport#

hybridTransport, passkey'lerin farklı cihazlar arasında kullanılabilmesini sağlayarak cihazlar arası kesintisiz kimlik doğrulamayı (QR kodları ve Bluetooth aracılığıyla) mümkün kılar. Örneğin, bir kullanıcı masaüstündeki bir hizmette oturum açmak için akıllı telefonunda kayıtlı bir passkey kullanabilir. Bu, kullanıcıların passkey'leri manuel olarak aktarmaya veya her cihaz için geleneksel giriş yöntemlerine güvenmeye gerek kalmadan güvenli bir şekilde kimlik doğrulamasına olanak tanır.

4.4 passkeyPlatformAuthenticator#

Windows Hello, Face ID veya Touch ID gibi platform authenticator'ları doğrudan cihazlara entegredir. Kullanıcıların biyometrik verilerle veya cihaza özgü diğer yöntemlerle (ör. PIN) kimlik doğrulamasına izin vererek daha hızlı, pürüzsüz ve çok daha güvenli bir passkey deneyimi sunarlar.

Slack Icon

Become part of our Passkeys Community for updates & support.

Join

4.5 userVerifyingPlatformAuthenticator#

userVerifyingPlatformAuthenticator, passkey doğrulamasının aktif bir parmak izi taraması veya yüz tanıma gibi bir kullanıcı doğrulaması (user verification) içerdiğinden emin olur ve böylece ekstra bir güvenlik katmanı sağlar.

4.6 relatedOrigins#

relatedOrigins yeteneği, aynı organizasyona ait farklı alan adları (örneğin amazon.com ve amazon.de) arasında sorunsuz kimlik doğrulamasına izin verir. Şirketiniz birden fazla alan adını veya farklı alt alan adlarını (subdomains) yönetiyorsa, kullanıcılar bir kez giriş yapıp tüm mülklere her defasında yeniden doğrulama yapmadan erişebilirler. Sürtünmeyi azaltan bu yetenek, özellikle uluslararası ortamlarda veya çoklu hizmet platformlarına sahip işletmeler için çok değerlidir.

4.7 signalAllAcceptedCredentials#

signalAllAcceptedCredentials(options) metodu, belirli bir kullanıcı için tüm WebAuthn kimlik bilgisi (credential) ID'lerinin tam listesini sağlar. Bir gizlilik sızıntısı riski bulunmadığından, kullanıcı kimliği doğrulandığında Relying Party'ler (bağlı taraflar) bu metodu signalUnknownCredential() yerine tercih etmelidir. Bu metot, bağlı olan authenticator'larda henüz güncellenmemiş olabilecek yeni değişiklikler de dahil olmak üzere, kullanıcının açık anahtar kimlik bilgilerine dair kapsamlı bir genel bakış sunar.

Bir örnek üzerinden gidelim: Bir kullanıcının (userId: A), Base64URL ile kodlanmış kimlikleri X ve Y olan 2 passkey'i olsun. Daha sonra kullanıcı, web hizmetinin (example.com) hesap ayarlarından X passkey'ini siler (böylece açık anahtar silinir). Şimdi şu kodu çalıştırın:

PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "A", // WebAuthn User Handle, Base64URL. allAcceptedCredentialIds: ["Y"], });

Yukarıdaki kod çalıştırıldığında authenticator aktif durumdaysa, X passkey'ini gelecekteki kimlik doğrulama süreçlerinden siler veya gizler. Ancak kodun çalıştırıldığı anda authenticator bağlı olmayabilir, bu nedenle bağlı tarafların bu kodu periyodik olarak (örneğin her oturum açılışında) çalıştırmaları önerilir.

allAcceptedCredentialIds içinde bulunmayan passkey'ler geri döndürülemez bir şekilde silinebilir veya gizlenebilir. Bu yüzden bağlı tarafların geçerli WebAuthn kimlik ID'lerini listeden asla çıkarmamaya çok dikkat etmesi gerekir. Geçerli bir kimlik ID'si yanlışlıkla listeden çıkarılırsa, bağlı tarafın passkey'i "görünür" hale getirmek için onu en kısa sürede yeni bir signalAllAcceptedCredentials(options) çağrısına dahil etmesi gerekir. Passkey gizlenmek yerine silindiyse, maalesef durumu düzeltmek için yapılabilecek pek bir şey yoktur.

Debugger Icon

Want to experiment with passkey flows? Try our Passkeys Debugger.

Try for Free

4.8 signalCurrentUserDetails#

signalCurrentUserDetails(options) metodu, kullanıcının mevcut adını ve WebAuthn Görünüm Adını (Display Name) sinyaller. signalCurrentUserDetails(options) çağrıldığında, istemci bu işlemi gerçekleştirmek için tanımlanmış bir dizi adımı izler.

Örneğimize bakalım: WebAuthn User ID'si A olan bir kullanıcı, web sitesinin (example.com) hesap ayarlarında adını günceller. Daha sonra bağlı taraf (relying party) şu kodu çalıştırabilir:

PublicKeyCredential.signalCurrentUserDetails({ rpId: "example.com", userId: "A", // user ID, Base64URL. name: "Yeni kullanici adi", displayName: "Yeni gorunum adi", });

Bunun üzerine authenticator yerel olarak kaydedilmiş passkey'in üst verilerini (metadata) günceller. En büyük avantajı, gelecekteki Conditional UI (Koşullu Kullanıcı Arayüzü) veya passkey otomatik doldurma isteklerinde açılır menünün artık güncellenmiş adı göstermesidir.

4.9 signalUnknownCredential#

signalUnknownCredential(options) metodu, bir WebAuthn kimlik bilgisinin Relying Party tarafından tanınmadığını (örneğin kullanıcı passkey'i sildiyse) bildirir. signalAllAcceptedCredentials(options) metodunun aksine, kabul edilen tam ID listesini ve WebAuthn User Handle'ı (kullanıcı tanıtıcısı) sağlamayı gerektirmez. Bu da kimliği doğrulanmamış çağrıcılara karşı olası gizlilik sızıntılarını önler.

Bunu da bir örnekle açıklayalım: Bir kullanıcı bir web sitesinin (example.com) hesap ayarlarında X kimliğine sahip passkey'i siler (böylece açık anahtar silinir). Ancak özel anahtar kullanıcının cihazında hala mevcuttur. Bu, boş bir allowCredentials listesine sahip gelecekteki bir Conditional UI / passkey otomatik doldurma giriş isteğinde bu passkey'in hala seçilebileceği anlamına gelir. Açık anahtar zaten silinmiş olduğu için giriş denemesi başarısız olacaktır, bu nedenle bağlı taraf şunları çalıştırmalıdır:

PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "X", // kullanıcının az önce denediği ID, Base64URL });

Ardından authenticator, X kimlikli passkey'i gelecekteki denemelerden siler veya gizler.

5. WebAuthn İstemci Yeteneklerinin Kullanılabilirliği#

WebAuthn Seviye 3 standardı henüz taslak aşamasında olduğundan, bu yeni yeteneklerin benimsenmesi henüz tam olarak yaygınlaşmış değil. Çeşitli tarayıcılar bu özellikleri yavaş yavaş uyguluyor ancak destek oranları farklılık gösteriyor. Yukarıda bahsettiğimiz büyük tarayıcılar için güncel destek durumu şöyle:

Tarayıcıİstemci Yeteneklerini Destekleyen SürümNotlar
Chrome133Chrome Platform Status ve Chromium Bug Tracker üzerinde detayları görebilirsiniz.
Safari17.4+getClientCapabilities() API'sini sunan ilk tarayıcı. Ekim 2024 itibarıyla Safari; conditionalCreate, conditionalMediation, hybridTransport, passkeyPlatformAuthenticator ve userVerifyingPlatformAuthenticator'ı desteklemektedir.
Edge133Chromium 133 tabanlıdır. Chromium Bug Tracker üzerinden takip edilebilir.
Firefox135Mozilla, Firefox 135 ve sonrasında WebAuthn Seviye 3 özelliklerini uygulamaya başladı.

Seviye 3 olgunlaştıkça ve daha fazla tarayıcı bu özellikleri sundukça benimseme hızı da artacaktır. Şu anda kaç kullanıcının getClientCapabilities() özelliğinden yararlanabildiğini görmek isterseniz, ücretsiz State of Passkeys verilerini inceleyebilirsiniz. Gelişmeleri daha geniş çaplı planlamak için tarayıcı sürüm notlarına ve ilgili dokümanlara göz atmayı unutmayın.

StateOfPasskeys Icon

Want to find out how many people use passkeys?

View Adoption Data

6. Geliştiriciler İçin Öneriler#

Bir geliştirici olarak bu yeni yeteneklerin sizin için ne anlama geldiğini ve uygulamanızda bunları nasıl kullanmanız gerektiğini merak edebilirsiniz. Aşağıda bunları en verimli şekilde kullanmanız için bazı öneriler derledik.

Ancak, (Kasım 2024 itibarıyla) henüz tüm tarayıcıların getClientCapabilities() API çağrısını desteklemediğini unutmayın. Tüm tarayıcılar destekleyene kadar kullanabileceğiniz bir polyfill paketini GitHub'da bulabilirsiniz.

6.1 getClientCapabilities()'i Erkenden Çağırın#

İstemcinin desteklediği özellikleri sayfa yükleme veya kimlik doğrulama akışının en başında tespit etmek için getClientCapabilities() metodunu kodunuzda erkenden kullanın. Bu, deneyimi dinamik olarak özelleştirmenize imkan tanır. Desteklendiğinde platform tabanlı kimlik doğrulamayı öne çıkarabilir veya desteklenmediğinde SMS OTP ya da donanım güvenlik anahtarları gibi alternatif yöntemler sunabilirsiniz.

6.2 Parola Tabanlı Uygulamalarda conditionalCreate ile Passkey Kullanımını Artırın#

Şu anda parolaları kullanan bir web sitesine veya uygulamaya passkey ekliyorsanız, conditionalCreate özelliği benimsenme oranınızı ciddi şekilde artırabilir. Arka planda, uygun bir kimlik bilgisi yöneticisiyle (Ekim 2024 itibarıyla sadece Apple Passwords) parola otomatik doldurulurken otomatik olarak bir passkey oluşturulur ve gelecekteki oturumlarda öncelikli olarak tercih edilir.

6.3 conditionalGet'i Mümkün Olduğunca Sık Kullanın#

Sadece passkey benimsenmesini değil, aynı zamanda passkey kullanım sıklığını da yüksek tutmak için, cihazın veya tarayıcının conditionalGet özelliğini kontrol ederek Conditional UI / Passkey Otomatik Doldurma desteği olup olmadığına bakın. Bu şekilde, işletim sistemi veya tarayıcı tarafından proaktif olarak önerildiği ve parola doldurmaktan bile daha az çaba gerektirdiği için kullanıcıları girişlerinde passkey kullanmaya daha kolay teşvik etmiş olursunuz.

6.4 CDA (Cihazlar Arası) veya Mobil Öncelikli Sistemlerde hybridTransport Kullanın#

Kullanıcıların masaüstünden hizmetinize erişirken bile akıllı telefonları üzerinden (QR kod ve Bluetooth aracılığıyla) sorunsuzca oturum açmalarını sağlamak için hybridTransport kullanın.

7. Sonuç#

WebAuthn istemci yetenekleri, passkey konusunda şu anda var olan boşlukları gidermede gerçekten çok önemli bir adımdır. Bu blog yazısında şu temel sorulara yanıt verdik:

  1. WebAuthn istemci yetenekleri nelerdir? Bu özelliklerin, tarayıcıların ve platformların desteklerini nasıl sinyallediğini ve böylece geliştiricilere kimlik doğrulama akışları üzerinde nasıl daha fazla kontrol sağladığını açıkladık.
  2. Hangi WebAuthn istemci yetenekleri mevcut? getClientCapabilities, conditionalCreate, hybridTransport ve çok daha fazlası dahil olmak üzere Seviye 3 standardıyla gelen yeni yeteneklere göz attık.
  3. WebAuthn istemci yetenekleri passkey uygulamalarını nasıl iyileştirir? Bu yeteneklerin entegrasyonu nasıl kolaylaştırdığını, cihazlar arası kullanımı nasıl geliştirdiğini ve güvenliği nasıl artırdığını tartıştık.
  4. WebAuthn istemci yetenekleri geliştiriciler için neden önemlidir? Kurulumu daha kolay ve etkili hale getirirken aynı zamanda modern kullanıcı beklentileriyle örtüşen güvenli ve kesintisiz deneyimler yaratmaya yardımcı olurlar.

Sizi yeni WebAuthn Seviye 3 özelliklerini keşfetmeye ve tarayıcılardaki benimsenme durumunu takip etmeye davet ediyoruz. Eğer passkey'leri uygulamak ve bu gelişmiş yeteneklerden yararlanmak istiyorsanız, uzman rehberliği ve destek için bizimle iletişime geçmekten çekinmeyin.

Sıkça Sorulan Sorular#

Passkey giriş akışımı iyileştirmek için getClientCapabilities()'i nasıl kullanabilirim?#

Desteklenen özellikleri dinamik olarak algılamak için sayfa yükleme veya kimlik doğrulama akışınızın başlarında getClientCapabilities()'i çağırın. Bu size, desteklendiğinde platform tabanlı kimlik doğrulama sunma, desteklenmediğinde ise SMS OTP veya donanım güvenlik anahtarları gibi alternatiflere başvurma imkanı sağlar.

WebAuthn'de signalUnknownCredential ve signalAllAcceptedCredentials arasındaki fark nedir?#

signalAllAcceptedCredentials, geçerli kimlik bilgisi (credential) ID'lerinin tam listesini ve WebAuthn User Handle'ı gerektirir. Bu nedenle, gizlilik sızıntılarını önlemek için yalnızca kullanıcının kimliği doğrulandığında çağrılmalıdır. signalUnknownCredential ise tam listeyi gerektirmeden tanınmayan tek bir kimlik ID'sini bildirir; bu da onu başarısız bir giriş denemesinden sonra gibi kimliği doğrulanmamış senaryolarda güvenli hale getirir.

relatedOrigins yeteneği birden fazla alan adı yöneten şirketlere nasıl yardımcı olur?#

relatedOrigins yeteneği, örneğin amazon.com ve amazon.de gibi aynı organizasyona ait farklı alan adlarında sorunsuz kimlik doğrulamaya izin verir. Kullanıcılar bir kez giriş yapıp her bir alan adında yeniden kimlik doğrulamasına gerek kalmadan tüm platformlara erişebilirler. Bu da uluslararası ve çoklu hizmet ortamlarındaki sürtünmeyi ortadan kaldırır.

getClientCapabilities() henüz bazı kullanıcıların tarayıcılarında desteklenmiyorsa ne yapmalıyım?#

Kasım 2024 itibarıyla tüm tarayıcılar getClientCapabilities()'i desteklemiyor. Bu durumu aşmak için github.com/MasterKale/webauthn-polyfills adresinde bulunan polyfill paketini geçici bir çözüm olarak kullanabilirsiniz. WebAuthn Seviye 3 standardı olgunlaştıkça ve Chrome 133, Edge 133, Firefox 135 ve Safari 17.4 halihazırda destek sunmaya başladıkça benimsenme oranının giderek hızlanması bekleniyor.

See what's really happening in your passkey rollout.

Explore the Console

Share this article


LinkedInTwitterFacebook