Data di pubblicazione: 15 gennaio 2025
WebAuthn offre funzionalità uniche come l'interazione con il Bluetooth per il protocollo ibrido, la comunicazione con i fornitori di passkey e il suggerimento di passkey nel riempimento automatico. Tuttavia, diversi client e autenticatori offrono livelli diversi di supporto per le funzionalità WebAuthn. Questa disparità può portare a un'esperienza utente frammentata, in cui alcuni utenti potrebbero riscontrare errori o non essere in grado di utilizzare determinate opzioni di autenticazione. Fornire agli sviluppatori un modo per determinare le funzionalità del client consente loro di creare flussi di autenticazione più solidi che si adattano a queste variazioni.
Il metodo PublicKeyCredential.getClientCapabilities()
consente alle parti che fanno affidamento di
determinare quali funzionalità WebAuthn sono supportate dal browser. Il metodo
restituisce una promessa che si risolve in un elenco di funzionalità supportate, consentendo
agli sviluppatori di personalizzare le esperienze e i flussi di lavoro di autenticazione in base alle
funzionalità specifiche del client.
Compatibilità
getClientCapabilities()
getClientCapabilities()
è un'API WebAuthn che consente alle parti attendibili di determinare quali funzionalità sono disponibili. Per utilizzare l'API, devi chiamare
PublicKeyCredential.getClientCapabilities()
. La promessa restituita si risolve in
un oggetto che contiene funzionalità, ognuna delle quali indica la propria disponibilità con
true
o false
. Se la funzionalità è undefined
, considera che la sua disponibilità
non è nota.
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
Il browser può creare una credenziale senza un'interfaccia utente modale in evidenza se l'utente ha già acconsentito alla creazione.
conditionalGet
Il browser può eseguire l'autenticazione visualizzando le passkey come parte della finestra di dialogo di compilazione automatica,
anziché un'interfaccia utente modale ben visibile. L'equivalente esistente è
PublicKeyCredential.isConditionalMediationAvailable()
.
hybridTransport
Il dispositivo può utilizzare il Bluetooth in modo che il browser possa creare una credenziale e autenticarsi con questa su più dispositivi utilizzando il protocollo ibrido. In genere significa che il browser può visualizzare un codice QR in modo che l'utente possa scansionarlo e accedere con uno smartphone su cui è presente una credenziale.
passkeyPlatformAuthenticator
Il browser può creare una credenziale ed eseguire l'autenticazione con questa tramite un autenticatore della piattaforma di verifica dell'utente o un altro dispositivo che lo supporta tramite il protocollo ibrido. Equivalente a hybridTransport ||
userVerifyingPlatformAuthenticator
.
relatedOrigins
Il browser può creare una credenziale e autenticarsi con essa che non corrisponde all'ID RP, purché sia specificata nel file delle origini correlate.
signalAllAcceptedCredentials
Il browser può segnalare le credenziali disponibili sul server al fornitore di passkey, in modo che quest'ultimo possa mantenere l'elenco delle passkey coerente con il server.
signalCurrentUserDetails
Il browser può segnalare informazioni utente come nome utente e nome visualizzato sul server al fornitore di passkey, in modo che quest'ultimo possa mantenere le informazioni della passkey coerenti con il server.
signalUnknownCredential
Il browser può segnalare una credenziale eliminata sul server al fornitore di passkey, in modo che il fornitore di passkey possa mantenere l'elenco delle passkey coerente con il server.
userVerifyingPlatformAuthenticator
Il browser può creare ed eseguire l'autenticazione con una credenziale su un autenticatore
della piattaforma. Ciò non significa che il browser supporti il protocollo ibrido.
L'equivalente esistente è
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.
estensioni
I RP possono anche determinare le estensioni disponibili con getClientCapabilities()
.
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
L'identificatore è preceduto da extension:
seguito dal nome di un'estensione.
Per i nomi delle estensioni, consulta gli identificatori delle estensioni WebAuthn definiti presso
IANA.
Scopri di più
Per saperne di più sulle passkey, inizia da Accesso senza password con le passkey.