Yayınlanma tarihi: 15 Ocak 2025
WebAuthn, karma protokol için Bluetooth ile etkileşim, geçiş anahtarı sağlayıcılarla iletişim ve otomatik doldurmada geçiş anahtarı önerme gibi benzersiz özellikler sunar. Ancak farklı istemciler ve kimlik doğrulayıcılar, WebAuthn özellikleri için farklı destek düzeyleri sunar. Bu farklılık, kullanıcı deneyiminin parçalanmasına neden olabilir. Bazı kullanıcılar hatalarla karşılaşabilir veya belirli kimlik doğrulama seçeneklerini kullanamayabilir. Geliştiricilerin istemci özelliklerini belirlemesine olanak tanımak, bu varyasyonlara uyum sağlayan daha sağlam kimlik doğrulama akışları oluşturmalarını sağlar.
PublicKeyCredential.getClientCapabilities()
yöntemi, güvenen tarafların tarayıcı tarafından hangi WebAuthn özelliklerinin desteklendiğini belirlemesine olanak tanır. Yöntem, desteklenen özelliklerin listesini içeren bir söz döndürür. Bu sayede geliştiriciler, istemcinin belirli özelliklerine göre kimlik doğrulama deneyimlerini ve iş akışlarını özelleştirebilir.
Uyumluluk
getClientCapabilities()
getClientCapabilities()
, güvenen tarafların hangi özelliklerin kullanılabildiğini belirlemesine olanak tanıyan bir WebAuthn API'sidir. API'yi kullanmak için PublicKeyCredential.getClientCapabilities()
işlevini çağırmanız gerekir. Döndürülen söz, her biri kullanılabilirliğini true
veya false
ile belirten özellikler içeren bir nesneye çözümlenir. Özellik undefined
ise kullanılıp kullanılamadığı bilinmiyor demektir.
if (window.PublicKeyCredential &&
if (PublicKeyCredential.getClientCapabilities) {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.conditionalGet === true &&
capabilities.passkeyPlatformAuthenticator === true) {
// The browser supports passkeys and the conditional mediation.
}
}
}
conditionalCreate
Kullanıcı kimlik bilgisi oluşturmayı daha önce kabul etmişse tarayıcı, belirgin bir modal kullanıcı arayüzü olmadan kimlik bilgisi oluşturabilir.
conditionalGet
Tarayıcı, belirgin bir modal kullanıcı arayüzü yerine, otomatik doldurma iletişim kutusunun bir parçası olarak geçiş anahtarlarını göstererek kimlik doğrulama yapabilir. Mevcut eşdeğer PublicKeyCredential.isConditionalMediationAvailable()
.
hybridTransport
Cihaz, tarayıcının bir kimlik bilgisi oluşturabilmesi ve hibrit protokolü kullanarak cihazlar arası kimlik doğrulama yapabilmesi için Bluetooth'u kullanabilir. Bu genellikle tarayıcının, kullanıcının tarayıp kimlik bilgisi içeren bir telefonla oturum açabilmesi için QR kodu gösterebileceği anlamına gelir.
passkeyPlatformAuthenticator
Tarayıcı, kullanıcıyı doğrulayan bir platform kimlik doğrulayıcısı veya hibrit protokol aracılığıyla bunu destekleyen başka bir cihaz üzerinden kimlik bilgisi oluşturup kimlik doğrulaması yapabilir. hybridTransport ||
userVerifyingPlatformAuthenticator
etiketine eş değer.
relatedOrigins
Tarayıcı, ilgili kaynaklar dosyasında belirtildiği sürece RP kimliğiyle eşleşmeyen bir kimlik bilgisi oluşturup bu kimlik bilgisiyle kimlik doğrulama yapabilir.
signalAllAcceptedCredentials
Tarayıcı, sunucudaki kullanılabilir kimlik bilgilerini geçiş anahtarı sağlayıcısına bildirebilir. Böylece geçiş anahtarı sağlayıcısı, geçiş anahtarı listesini sunucuyla tutarlı tutabilir.
signalCurrentUserDetails
Tarayıcı, kullanıcı adı ve görünen ad gibi kullanıcı bilgilerini sunucudaki geçiş anahtarı sağlayıcısına iletebilir. Böylece geçiş anahtarı sağlayıcısı, geçiş anahtarı bilgilerini sunucuyla tutarlı tutabilir.
signalUnknownCredential
Tarayıcı, geçiş anahtarı sağlayıcısının sunucudaki silinmiş kimlik bilgilerini bildirmesini sağlayabilir. Böylece geçiş anahtarı sağlayıcı, geçiş anahtarı listesini sunucuyla tutarlı tutabilir.
userVerifyingPlatformAuthenticator
Tarayıcı, bir platform kimlik doğrulayıcıda kimlik bilgisi oluşturabilir ve kimlik doğrulama yapabilir. Bu, tarayıcının karma protokolü desteklediği anlamına gelmez.
Mevcut eşdeğer PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.
extensions
RP'ler, getClientCapabilities()
ile kullanılabilir uzantıları da belirleyebilir.
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
Tanımlayıcının önüne extension:
ve ardından uzantı adı eklenir.
Uzantı adları için IANA'da tanımlanan WebAuthn Uzantı Tanımlayıcıları'na bakın.
Daha fazla bilgi
Geçiş anahtarları hakkında daha fazla bilgi edinmek için Geçiş anahtarlarıyla şifresiz giriş başlıklı makaleyi inceleyin.