Aiutare gli utenti ad adottare le passkey in modo più semplice

Pubblicato il 9 maggio 2025

Le passkey offrono un'autenticazione efficace e a prova di phishing. Tuttavia, convincere gli utenti ad adottarle può creare attriti. Con gli upgrade delle passkey puoi creare passkey per i tuoi utenti al momento giusto, a condizione che abbiano già una password salvata per il tuo sito. La creazione condizionale, che consente gli upgrade delle passkey, fa parte della specifica WebAuthn.

Come funziona

Per aiutare gli utenti ad adottare le passkey in modo più pratico, utilizza una funzionalità dell'API WebAuthn chiamata Creazione condizionale. La creazione condizionale consente al tuo sito di richiedere una passkey per l'utente senza richiedere alcuna azione da parte sua.

Questo flusso funziona quando sono soddisfatte le seguenti condizioni:

  • L'utente ha una password salvata nel gestore delle password predefinito.
  • La password è stata utilizzata di recente. Idealmente, chiama la creazione condizionale immediatamente dopo un accesso riuscito con password.

Se entrambe le condizioni sono soddisfatte, puoi richiedere al gestore delle password di creare una passkey per l'utente chiamando la funzionalità Creazione condizionale. Dopo aver creato la passkey, l'utente riceve una notifica a seconda del gestore delle password.

Procedura di richiesta della passkey con creazione condizionale.

Compatibilità

La creazione condizionale è supportata a partire da Chrome 136 su computer.

Implementare la creazione condizionale

Gli upgrade delle passkey si basano su una funzionalità dell'API WebAuthn chiamata Creazione condizionale. Si tratta di richieste create() WebAuthn standard con il parametro mediation impostato su "conditional", che funzionano in modo simile alla compilazione automatica delle passkey per le richieste get().

Utilizza la creazione condizionale dopo che l'utente ha eseguito l'accesso con una password. L'esito positivo dell'upgrade dipende dal Gestore delle password e dal verificarsi di determinate condizioni. Queste condizioni possono variare in base al gestore delle password e possono cambiare nel tempo. Ad esempio, in Chrome con Gestore delle password di Google (GPM), l'utente deve aver eseguito di recente l'accesso utilizzando una password salvata per il sito.

Se il browser crea la passkey, restituisce una credenziale con chiave pubblica. Invia questa credenziale al tuo backend per completare la registrazione e abilitare l'autenticazione futura.

Rilevamento di funzionalità

Puoi determinare se la creazione condizionale è disponibile nel browser richiamando PublicKeyCredential.getClientCapabilities(). Verifica se un oggetto restituito contiene true per la proprietà conditionalCreate.

if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
  const capabilities = await PublicKeyCredential.getClientCapabilities();
  if (capabilities.conditionalCreate) {
    // Conditional create is available
  }
}

Se getClientCapabilities non è disponibile, lo stesso vale per la creazione condizionale.

Creare una passkey in modo condizionale

Per eseguire l'upgrade di una passkey, invoca navigator.credentials.create(), ma con mediation: "conditional" come segue.

const cred = await navigator.credentials.create({
  publicKey: options,
  // Request conditional creation
  mediation: 'conditional'
});

Per avere maggiori probabilità di soddisfare i criteri del gestore delle password per la creazione automatica, ti consigliamo di utilizzare l'upgrade delle passkey subito dopo l'accesso dell'utente.

Puoi inviare la credenziale della chiave pubblica risultante al server per verificare e registrare la passkey. Sul server, assicurati che l'utente abbia eseguito l'accesso.

Avvertenze

La creazione condizionale non è difficile da implementare, ma esistono diversi accorgimenti da seguire per integrare questa funzionalità in un sistema esistente.

Ignora la presenza e la verifica dell'utente sul server

La risposta alla registrazione restituisce sia "Presenza utente" che "Utente verificato" come false, pertanto il server deve ignorare questi flag durante la verifica delle credenziali.

Interrompi la chiamata WebAuthn in corso prima di eseguire l'upgrade di una passkey

Quando l'RP si aspetta che l'utente acceda con una passkey o una password, l'esecuzione di un get condizionale è la scelta migliore. Ciò potrebbe causare l'annullamento della chiamata get condizionale prima di eseguire una creazione condizionale.

Per farlo, devi utilizzare AbortController e chiamare .abort().

// To abort a WebAuthn call, instantiate an AbortController.
const controller = new AbortController();

const cred = await navigator.credentials.get({
  publicKey: options,
  signal: controller.signal,
  // Request conditional get
  mediation: 'conditional'
});

// Abort the call
controller.abort();

Ignorare le eccezioni in modo elegante

Quando viene eseguita una creazione di passkey condizionale, in alcuni casi devi ignorare le eccezioni:

  • InvalidStateError: una passkey esiste già nel provider di passkey.
  • NotAllowedError: la creazione di una passkey non soddisfa la condizione.
  • AbortError: la chiamata WebAuthn viene interrotta.

La visualizzazione di errori in questi casi potrebbe confondere l'utente, poiché il browser li gestisce in silenzio: mostra una notifica solo in caso di esito positivo e gli errori non attivano messaggi visibili.

Segnale quando la registrazione di una passkey non riesce

Quando una passkey viene creata, ma non riesce a essere registrata sul server, l'utente tenterà di accedere senza riuscirci. Ciò può accadere quando l'elenco delle passkey non è coerente tra il fornitore di passkey e il server.

Per evitare queste circostanze, utilizza l'API Signal per mantenerle coerenti.

L'upgrade dagli accessi senza password non è supportato

A questo punto, la creazione di una passkey condizionale è subordinata all'inserimento da parte dell'utente di una password valida. Ciò significa che gli approcci di accesso senza password come i link magici, la verifica del numero di telefono o la federazione dell'identità non soddisfano la condizione.

Riepilogo

Gli upgrade delle passkey possono accelerare l'adozione delle passkey sul tuo sito web, aiutando gli utenti a passare dalle password a un metodo di autenticazione più sicuro.

Per scoprire di più sulle passkey, consulta Accesso senza password con le passkey.