Détection plus simple des fonctionnalités WebAuthn

Publié le 15 janvier 2025, dernière mise à jour le 9 avril 2026

WebAuthn offre des fonctionnalités uniques telles que l'interaction avec 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 dans la saisie automatique. Toutefois, différents clients et authentificateurs offrent différents niveaux de compatibilité avec 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 capacités des clients, 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 les fonctionnalités WebAuthn prises en charge par 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

  • Chrome: 133.
  • Edge: 133.
  • Firefox: 135.
  • Safari: 17.4.

Source

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 est résolue en un objet contenant des capacités, chacune indiquant sa disponibilité avec true ou false. Si la fonctionnalité est undefined, considérez que sa disponibilité n'est pas connue.

if (window.PublicKeyCredential && 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 un identifiant sans interface utilisateur modale visible si l'utilisateur a déjà accepté d'en créer un.

conditionalGet

Le navigateur peut authentifier l'utilisateur en affichant les clés d'accès dans la boîte de dialogue de saisie automatique, au lieu d'une UI modale visible. L'équivalent existant est PublicKeyCredential.isConditionalMediationAvailable().

hybridTransport

L'appareil peut utiliser le Bluetooth pour que le navigateur puisse créer un identifiant et s'authentifier avec celui-ci sur plusieurs appareils à l'aide du protocole hybride. Cela signifie généralement que le navigateur peut afficher un code QR que l'utilisateur peut scanner pour se connecter avec un téléphone contenant un identifiant.

passkeyPlatformAuthenticator

Le navigateur peut créer un identifiant et s'authentifier avec celui-ci 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 un identifiant et s'authentifier avec celui-ci, qui ne correspond pas à l'ID de RP, à condition qu'il soit spécifié dans le fichier des origines associées.

signalAllAcceptedCredentials

Le navigateur peut signaler les identifiants disponibles sur le serveur au fournisseur de clés d'accès, afin que ce dernier puisse maintenir la cohérence de la liste des clés d'accès avec le serveur.

signalCurrentUserDetails

Le navigateur peut signaler des informations sur l'utilisateur, telles que son nom d'utilisateur et son nom à afficher sur le serveur, au fournisseur de clés d'accès, afin que ce dernier puisse maintenir la cohérence des informations de ses clés d'accès avec le serveur.

signalUnknownCredential

Le navigateur peut signaler un identifiant supprimé sur le serveur au fournisseur de clés d'accès, afin que ce dernier puisse maintenir la cohérence de la liste des clés d'accès avec le serveur.

userVerifyingPlatformAuthenticator

Le navigateur peut créer un identifiant et s'authentifier auprès d'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 des extensions, consultez les identifiants d'extension WebAuthn définis sur le site de l'IANA.

En savoir plus

Pour en savoir plus sur les clés d'accès, commencez par Connexion sans mot de passe avec des clés d'accès.