Publié le 15 janvier 2025
WebAuthn offre des fonctionnalités uniques, telles que l'interaction avec le Bluetooth pour le protocole hybride, la communication avec les fournisseurs de clés d'accès et la suggestion de clés d'accès lors de la saisie automatique. Toutefois, les différents clients et authentificateurs offrent des niveaux d'assistance différents pour les fonctionnalités WebAuthn. Cette disparité peut entraîner une expérience utilisateur fragmentée, où certains utilisateurs peuvent rencontrer des erreurs ou ne pas pouvoir utiliser certaines options d'authentification. En permettant aux développeurs de déterminer les fonctionnalités du client, ils peuvent créer des flux d'authentification plus robustes qui s'adaptent à ces variations.
La méthode PublicKeyCredential.getClientCapabilities()
permet aux parties de confiance de déterminer quelles fonctionnalités WebAuthn sont compatibles avec le navigateur. La méthode renvoie une promesse qui se résout en une liste de fonctionnalités compatibles, ce qui permet aux développeurs d'adapter les expériences et les workflows d'authentification en fonction des fonctionnalités spécifiques du client.
Compatibilité
Browser Support
getClientCapabilities()
getClientCapabilities()
est une API WebAuthn qui permet aux parties de confiance de déterminer les fonctionnalités disponibles. Pour utiliser l'API, vous devez appeler PublicKeyCredential.getClientCapabilities()
. La promesse renvoyée se résout en un objet contenant des fonctionnalités, chacune indiquant sa disponibilité avec true
ou false
. Si la capacité est undefined
, considérez que sa disponibilité n'est pas connue.
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
Le navigateur peut créer des identifiants sans interface utilisateur modale proéminente si l'utilisateur a déjà accepté d'en créer.
conditionalGet
Le navigateur peut s'authentifier en affichant des clés d'accès dans la boîte de dialogue de saisie automatique, au lieu d'une UI modale proéminente. L'équivalent existant est PublicKeyCredential.isConditionalMediationAvailable()
.
hybridTransport
L'appareil peut utiliser le Bluetooth pour que le navigateur puisse créer des identifiants et s'en servir pour s'authentifier entre les appareils à l'aide du protocole hybride. Cela signifie généralement que le navigateur peut afficher un code QR afin que l'utilisateur puisse le scanner et se connecter avec un téléphone sur lequel se trouvent des identifiants.
passkeyPlatformAuthenticator
Le navigateur peut créer des identifiants et s'en servir pour s'authentifier via un authentificateur de plate-forme de validation de l'utilisateur ou un autre appareil compatible via le protocole hybride. Équivaut à hybridTransport ||
userVerifyingPlatformAuthenticator
.
relatedOrigins
Le navigateur peut créer des identifiants et s'en servir pour s'authentifier, même s'ils ne correspondent pas à l'ID de RP, à condition qu'ils soient spécifiés dans le fichier d'origines associé.
signalAllAcceptedCredentials
Le navigateur peut signaler les identifiants disponibles sur le serveur au fournisseur de clés d'accès afin que le fournisseur de clés d'accès puisse maintenir la liste des clés d'accès cohérente avec le serveur.
signalCurrentUserDetails
Le navigateur peut signaler des informations utilisateur telles que le nom d'utilisateur et le nom à afficher sur le serveur au fournisseur de clés d'accès, afin que le fournisseur de clés d'accès puisse maintenir ses informations de clé d'accès cohérentes avec le serveur.
signalUnknownCredential
Le navigateur peut signaler un identifiant supprimé sur le serveur au fournisseur de clés d'accès afin que le fournisseur de clés d'accès puisse maintenir la liste des clés d'accès cohérente avec le serveur.
userVerifyingPlatformAuthenticator
Le navigateur peut créer et s'authentifier avec des identifiants sur un authentificateur de plate-forme. Cela ne signifie pas que le navigateur est compatible avec le protocole hybride.
L'équivalent existant est PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.
extensions
Les RP peuvent également déterminer les extensions disponibles avec getClientCapabilities()
.
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
L'identifiant est précédé de extension:
, suivi d'un nom d'extension.
Pour connaître les noms d'extension, consultez les identifiants d'extension WebAuthn définis par l'IANA.
En savoir plus
Pour en savoir plus sur les clés d'accès, consultez Connexion sans mot de passe à l'aide de clés d'accès.