Yayınlanma tarihi: 15 Ocak 2025
WebAuthn, karma protokol için Bluetooth ile etkileşim, şifre anahtarı sağlayıcılarla iletişim ve otomatik doldurma özelliğinde şifre anahtarı önerme gibi benzersiz özellikler sunar. Ancak farklı istemciler ve kimlik doğrulayıcılar, WebAuthn özellikleri için farklı düzeylerde destek sunar. Bu tutarsızlık, bazı kullanıcıların hatalarla karşılaşabileceği veya belirli kimlik doğrulama seçeneklerini kullanamayacağı dağınık bir kullanıcı deneyimine yol açabilir. Geliştiricilerin istemci özelliklerini belirlemelerine olanak tanıyarak bu varyasyonlara uyum sağlayan daha güçlü 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. Bu yöntem, desteklenen özelliklerin listesine çözüm bulan bir promise döndürür. Böylece geliştiriciler, kimlik doğrulama deneyimlerini ve iş akışlarını istemcinin belirli özelliklerine göre özelleştirebilir.
Uyumluluk
Browser Support
getClientCapabilities()
getClientCapabilities()
, güvenen tarafların hangi özelliklerin kullanılabileceğ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 true
veya false
ile kullanılabilirliğini belirten özellikler içeren bir nesneye çözümlenir. Özellik undefined
ise kullanılabilirliği bilinmemektedir.
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ı daha önce kimlik bilgisi oluşturmaya izin verdiyse 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örüntüleyerek kimlik doğrulaması yapabilir. Mevcut eşdeğer PublicKeyCredential.isConditionalMediationAvailable()
.
hybridTransport
Cihaz, tarayıcı tarafından kimlik bilgisi oluşturulması ve karma protokol kullanılarak cihazlar arası kimlik doğrulaması yapılması için Bluetooth'u kullanabilir. Bu genellikle, kullanıcının tarayabileceği ve kimlik bilgisi içeren bir telefonla oturum açabileceği bir QR kodunu tarayıcıda gösterebileceği anlamına gelir.
passkeyPlatformAuthenticator
Tarayıcı, bir kimlik bilgisi oluşturabilir ve karma protokol aracılığıyla kullanıcı doğrulaması yapan bir platform kimlik doğrulayıcısı veya bunu destekleyen başka bir cihaz üzerinden kimlik doğrulaması yapabilir. hybridTransport ||
userVerifyingPlatformAuthenticator
etiketine eş değer.
relatedOrigins
Tarayıcı, ilgili kökler dosyasında belirtildiği sürece RP kimliğiyle eşleşmeyen bir kimlik bilgisi oluşturabilir ve bu kimlikle kimlik doğrulaması yapabilir.
signalAllAcceptedCredentials
Tarayıcı, sunucudaki mevcut kimlik bilgilerini geçiş anahtarı sağlayıcıya bildirebilir. Böylece geçiş anahtarı sağlayıcı, geçiş anahtarı listesini sunucuda tutarlı tutabilir.
signalCurrentUserDetails
Tarayıcı, sunucudaki kullanıcı adı ve görünen ad gibi kullanıcı bilgilerini geçiş anahtarı sağlayıcıya gönderebilir. Böylece geçiş anahtarı sağlayıcı, geçiş anahtarı bilgilerini sunucuda tutarlı tutabilir.
signalUnknownCredential
Tarayıcı, sunucuda silinen kimlik bilgilerini geçiş anahtarı sağlayıcıya bildirebilir. Böylece geçiş anahtarı sağlayıcı, geçiş anahtarı listesini sunucuda tutarlı tutabilir.
userVerifyingPlatformAuthenticator
Tarayıcı, platform kimlik doğrulayıcısında kimlik bilgisi oluşturabilir ve kimlik doğrulaması 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ılabilen uzantıları da belirleyebilir.
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
Tanımlayıcının önüne extension:
ve ardından bir uzantı adı eklenir.
Uzantı adları için IANA'da tanımlanan WebAuthn Uzantısı Tanımlayıcıları'na bakın.
Daha fazla bilgi
Geçiş anahtarları hakkında daha fazla bilgi edinmek için Geçiş anahtarları ile şifresiz giriş başlıklı makaleyi inceleyin.