Passkeys için Web Bluetooth API'nin rolünü anlayın! Bluetooth kullanılabilirliği tespitinin WebAuthn ile Cihazlar Arası Kimlik Doğrulamayı (CDA) nasıl geliştirdiğini öğrenin.
Vincent
Created: August 8, 2025
Updated: August 8, 2025
See the original blog version in English here.
Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.
2.2 getDevices()
2.3 requestDevice()
8.1 Passkey'in Temel Özelliği: QR Kodları ve Bluetooth ile Cihazlar Arası Kimlik Doğrulama (CDA)
8.2 Bluetooth Her Zaman Mevcut Değildir ve CDA Kullanıcı Deneyimi İçin Kötü Olabilir
8.3 Firefox ve Safari'de Bluetooth'un Mevcut Olmamasının Farklı Etkileri
Passkeys, web'deki yeni oturum açma standardıdır. Passkey'lerin temel özelliklerinden biri QR Kodları ve Bluetooth ile Cihazlar Arası Kimlik Doğrulamadır (CDA). Bu bağlamda, başka bir web API'si önem kazanıyor: Web Bluetooth API.
Web uygulamalarının doğrudan Bluetooth cihazlarıyla etkileşime girmesini sağlayarak, Web Bluetooth API güvenli ve verimli kimlik doğrulama süreçlerinin (özellikle CDA için) sağlanmasında kritik bir rol oynar.
Bu blog yazısında, Web Bluetooth API'nin işleyişini sunacak ve Bluetooth tespitinin passkey ile kimlik doğrulama üzerindeki etkilerini keşfedeceğiz. Aşağıdaki soruları yanıtlamak istiyoruz:
Web Bluetooth API, web uygulamalarının Bluetooth cihazlarına erişmesine ve onlarla iletişim kurmasına olanak tanıyan bir JavaScript arayüzüdür. HTML5 standardının bir parçasıdır ve Chrome, Edge ve Opera gibi tarayıcılar tarafından desteklenir. Bu API, web uygulamalarının şunları yapmasını sağlar:
Web Bluetooth API'nin üç temel işlevi vardır.
getAvailability()
, kullanıcı aracısının Bluetooth'u destekleyip desteklemediğini (yani cihazın bir Bluetooth modülüne sahip olup olmadığını) belirten bir Boolean değerine çözümlenen bir promise döndürür. Bazı kullanıcı aracıları, kullanıcının bu yöntem tarafından döndürülen değeri belirten bir seçeneği yapılandırmasına izin verir.
navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("Bu cihaz Bluetooth'u destekliyor!"); } else { console.log("Tüh! Bluetooth desteklenmiyor"); } });
getDevices()
, kaynağın erişim izni olan (menzil dışında ve kapalı olanlar dahil) BluetoothDevices
dizisine çözümlenen bir promise döndürür. İzin, Bluetooth.requestDevice()
'a yapılan önceki çağrılar aracılığıyla alınır.
navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Cihaz:", device.name); }); });
requestDevice()
, belirtilen seçeneklerle bir BluetoothDevice
nesnesine bir promise döndürür. Bir seçici arayüzü yoksa, bu yöntem kriterlere uyan ilk cihazı döndürür.
navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Cihaz:", device.name); }) .catch((error) => { console.log("Hata:", error); });
Detaylar ve kod örnekleri burada bulunabilir. Ayrıca Web Bluetooth için W3C standardını da burada bulabilirsiniz.
navigator.bluetooth.requestDevice
aracılığıyla cihaz keşfi, güvenlik nedenleriyle bir dokunma veya fare tıklaması gibi bir kullanıcı eylemi tarafından tetiklenmelidir.Web Bluetooth API desteğini kontrol etmek için aşağıdaki kodu kullanabilirsiniz:
if ("bluetooth" in navigator) { // Web Bluetooth API destekleniyor console.log("Web Bluetooth destekleniyor!"); } else { // Web Bluetooth API desteklenmiyor console.log("Web Bluetooth desteklenmiyor!"); }
Belirli işlevlerin nasıl çağrıldığı yukarıda açıklanmıştır.
Web Bluetooth API, geliştiriciler ve kullanıcılar için çeşitli avantajlar sunar:
Avantajlarına rağmen, Web Bluetooth API'nin sınırlamaları vardır:
getAvailability()
'nin false döndürmesine neden olabilir. Bu, Permissions-Policy:Bluetooth
ile kontrol edilir. Benzer şekilde, getAvailability()
true döndürse bile, Bluetooth adaptörü açık olmayabilir veya kullanıcılar istendiğinde API'yi kullanma iznini reddedebilir.Web Bluetooth API'nin benimsenmesi hala artmaktadır. Haziran 2024 itibarıyla, Can I Use verilerine göre, küresel kullanıcıların %76,53'ü Web Bluetooth API desteğine sahip cihazlara sahiptir.
Ancak, Safari ve Firefox'taki destek eksikliği önemli bir engel olmaya devam etmekte ve bu tarayıcılardaki kullanıcı deneyimini etkilemektedir. Ayrıca, Bluetooth.getDevices()
gibi bazı özelliklerin kullanıcı tarafından açıkça etkinleştirilmesi gerekir, bu da API'yi arka planda kullanmak için bir zorluk olabilir.
En son verileri şurada bulabilirsiniz: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility
Güvenen tarafların, web sitelerinde ve uygulamalarında passkey sunmak istediklerinde Bluetooth'un kullanılabilirliği hakkında bilgi sahibi olmaları için önemli bir neden vardır.
Passkey'lerin yeni, yenilikçi özelliklerinden biri Cihazlar Arası Kimlik Doğrulama (CDA)'dır – aynı zamanda hibrit kimlik doğrulama olarak da bilinir. Bu özellik, kullanıcıların bir cihazda (genellikle bir masaüstü veya dizüstü bilgisayar) mobil cihazlarını kullanarak QR kodları ve Bluetooth aracılığıyla kimlik doğrulamasına olanak tanır. Bu hibrit kimlik doğrulama yöntemi, güvenliği ve rahatlığı artırarak sorunsuz bir kullanıcı deneyimi sağlar. Teknik olmayan kullanıcıların çoğu, COVID pandemisi sırasında kayıt için veya daha sonra masaüstü desteği ekleyen mobil öncelikli mesajlaşma uygulamaları (örneğin, WhatsApp veya Telegram) aracılığıyla QR kodlarını taramaya alışkındır.
Bir CDA stratejisine karar vermek, herhangi bir passkey projesinin başlangıcında çok önemlidir. CDA'ya ne kadar çok güvenirseniz, desteği ve güvenilirliği o kadar iyi olmalıdır. Bu nedenle, bir cihazda Bluetooth kullanılabilirliğini tespit etmek esastır.
Ancak, tüm cihazlarda Bluetooth özelliği bulunmaz veya Bluetooth kapalı olabilir. Passkey sunan güvenen taraflar için, CDA'nın kullanılıp kullanılamayacağını veya başka bir alternatif kimlik doğrulama yönteminin gerekli olup olmadığını belirlemek için Bluetooth kullanılabilirliğini tespit etmek önemlidir. Web Bluetooth API, web uygulamalarının kullanıcı cihazlarında Bluetooth kullanılabilirliğini kontrol etmesini sağlayarak bir çözüm sunar.
Lütfen CDA'nın her zaman kararlı olmadığını, bazen net nedenler olmaksızın bağlantı kuramadığını unutmayın. Ayrıca, API'nin yeniliği nedeniyle, bazen API tarafından yanlış sonuçlar döndürülür.
Web Bluetooth API'nin Firefox ve Safari'de bulunmaması, özellikle Firefox için bir sorundur.
Safari daha az sorun teşkil eder çünkü CDA'nın gerçekleştirilebileceği macOS cihazları, ilk modellerden beri yerleşik Bluetooth'a sahiptir. Ancak, macOS'ta Bluetooth çalışmıyorsa, kullanıcılar cihazlar arası kimlik doğrulamada sorunlar yaşayabilir ve ayarlarını sorun gidermeleri veya alternatif bir yönteme geri dönmeleri gerekebilir. Safari çalıştıran iPhone'lar, başlangıcından beri yerleşik Bluetooth'a sahiptir.
Ancak, Firefox, Windows cihazlarında popüler olduğu için önemli bir sorundur. Bir kullanıcı Firefox'taysa ve CDA kullanmak istiyorsa, güvenen taraf Web Bluetooth API uygulanmadığı için Bluetooth'un mevcut olup olmadığını güvenilir bir şekilde belirleyemez. Bu, kullanıcıların ne yapacaklarını bilmeden belirli noktalarda takılıp kalabilecekleri kötü bir kullanıcı deneyimine neden olabilir.
Önceki bloglarda da gördüğümüz gibi, Windows cihazları passkey benimsenmesi açısından geride kalıyor (State of Passkeys sitesine de bakın). Bluetooth kullanılabilirliğinin ne kadar yaygın olduğuna bir göz atalım.
Windows 10'un katı bir Bluetooth gereksinimi yoktur, ancak çoğu modern dizüstü ve masaüstü bilgisayar Bluetooth özellikleriyle birlikte gelir. Ancak, kullanıcı bunu kapatmış olabilir veya bazı yapılandırmalarda, özellikle özel yapım masaüstü bilgisayarlarda mevcut olmayabilir.
Windows 11, Windows 10'a benzer şekilde, Bluetooth'u zorunlu kılmaz. Ancak, daha entegre ve modern donanıma yönelik eğilim, çoğu Windows 11 uyumlu cihazın muhtemelen Bluetooth özelliklerine sahip olacağı anlamına gelir. Yine de, kullanıcılar bunu devre dışı bırakabilir, bu da CDA uygulamalarını etkiler.
Aşağıdaki tabloda, bir masaüstü cihazın Bluetooth'a hazır olup olmadığını ve dolayısıyla bir CDA istemcisi olarak kullanılıp kullanılamayacağını belirleyip belirleyemeyeceğinizi görebilirsiniz:
İşletim sistemi | Bluetooth Donanım Desteği | Tarayıcı Bluetooth Tespiti | |||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | ||
Windows 10 | düşük | ✅ | ✅ | ❌ | ❌ |
Windows 11 | orta | ✅ | ✅ | ❌ | ❌ |
macOS | yüksek | ✅ | ❌ | ❌ | ❌ |
Donanımınız Bluetooth'a hazır olsa bile, Bluetooth işlevselliğinin kullanıcı tarafından kapatılmış olabileceğini unutmayın. Bluetooth kapalıyken, kullanıcı yine de CDA kullanabilir çünkü kullanıcı etkinleştirmeyi seçebilir, bu da Windows ve Mac için çalışır: macOS Bluetooth'u açma isteği
Windows 11 Bluetooth'u açma isteği
Bluetooth kullanılabilirlik bilgisi, özellikle Bluetooth desteğinin daha düşük olduğu ve cihazlar arası kimlik doğrulamanın (passkey tabanlı bir girişte) gerçekleşme olasılığının çok yüksek olduğu Windows 10 ve Windows 11'de ilginçtir. Son macOS cihazlarının tümü Bluetooth desteğine sahiptir. Bu macOS cihazları potansiyel olarak doğrudan iCloud Anahtar Zinciri'nde saklanan passkey'lere de erişebilir, bu yüzden endişe konusu değillerdir.
Windows 10 ve Windows 11'de: Bluetooth'un çalışıp çalışamayacağını öğrenmek için getAvailability()
kullanın. Kullanıcının yalnızca Windows dışı passkey'leri olması durumunda, hemen diğer kimlik doğrulama seçeneklerine geri dönebilirsiniz.
Sadece hibrit passkey'lerin mevcut olduğu bir durumda, passkey ile kimlik doğrulamayı tetiklemek başarılı bir kimlik doğrulamaya yol açmaz, aksine kullanıcı için bir çıkmaz sokak olur. Windows 10 ve Windows 11'deki diğer tüm tarayıcılar için, maalesef, CDA desteği olup olmadığını öğrenmenin başka bir yolu yoktur.
Web Bluetooth API, Bluetooth yetenekleri aracılığıyla passkey ile kimlik doğrulamayı geliştirmek için güçlü bir aracı temsil eder. Bu API'yi anlayarak ve kullanarak, geliştiriciler daha güvenli ve kullanıcı dostu kimlik doğrulama yöntemleri oluşturabilirler. Ancak, aynı zamanda sınırlamalarını da aşmalı ve farklı tarayıcılar ve cihazlarda sorunsuz bir kullanıcı deneyimi sürdürmek için sağlam alternatif mekanizmalar sağlamalıdırlar.
Bu blog yazısıyla, üç temel soruya bir yanıt verdik:
getAvailability()
, getDevices()
ve requestDevice()
gibi işlevleri çağırarak kullanın.Daha fazla bilgi ve Web Bluetooth API ile ilgili örnekler koleksiyonu için lütfen buraya tıklayın.
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents