Scopri come funzionano i trasporti WebAuthn nelle API dei browser, in AuthenticationServices di iOS e nel Credential Manager di Android per l'autenticazione con passkey tra dispositivi.

Vincent
Created: October 31, 2025
Updated: November 11, 2025

See the original blog version in English here.
60-page Enterprise Passkey Whitepaper:
Learn how leaders get +80% passkey adoption. Trusted by Rakuten, Klarna & Oracle
| Piattaforma | Authenticator di Piattaforma | Chiavi di Sicurezza |
|---|---|---|
| Browser Web | Windows Hello: ["internal"]Google Password Manager: ["internal", "hybrid"]Portachiavi iCloud: ["internal", "hybrid"] | ["usb", "nfc"] |
| Android Nativo | ["internal", "hybrid"] | ["usb", "nfc"] |
| iOS Nativo | ⚠️ Array vuoto [] (Portachiavi iCloud) | ["usb", "nfc"] |
Nota: Secondo le specifiche WebAuthn, un elenco di trasporti vuoto significa che tutti i trasporti sono supportati.
Quando si implementano le passkey su più piattaforme, gli sviluppatori si trovano di fronte a una decisione importante:
La risposta sta nel comprendere i trasporti WebAuthn, un dettaglio tecnico che determina come gli authenticator comunicano con le relying party. Sebbene in teoria i trasporti sembrino semplici, la loro implementazione varia in modo significativo tra browser web, applicazioni native per iOS e native per Android, in particolare per quanto riguarda la gestione dei trasporti interni e ibridi.
Questo articolo esamina come funzionano i trasporti WebAuthn su diverse piattaforme e presenta due approcci distinti per la gestione dei trasporti interni e ibridi, ognuno con i propri compromessi.
Recent Articles
🔑
Le patenti di guida mobili sono arrivate: la guida definitiva alle mDL
📖
Origini Correlate WebAuthn: Guida alle Passkey Cross-Domain
⚙️
Trasporti WebAuthn: Trasporto Interno e Ibrido
🔑
Come passare a un'autenticazione completamente passwordless
♟️
Biometria e consapevolezza del pagatore nel dynamic linking
Questo articolo tratta:
I trasporti WebAuthn definiscono i metodi di comunicazione tra gli authenticator e i dispositivi client. La specifica WebAuthn Level 3 definisce sei tipi di trasporto:
usb: Utilizzato da
chiavi di sicurezza hardware che
si collegano tramite porte USB, come le YubiKey o altri token di
sicurezza FIDO2.
nfc: Abilita la comunicazione con gli authenticator
tramite Near Field Communication, consentendo agli utenti di avvicinare le loro chiavi di
sicurezza o i dispositivi abilitati NFC.
ble: Facilita
l'autenticazione
tramite Bluetooth Low Energy, abilitando la comunicazione wireless
con authenticator esterni.
smart-card: Utilizzato per lettori di smart card,
permettendo
l'autenticazione
tramite smart card.
hybrid: Abilita
l'autenticazione
cross-device, tipicamente quando un utente scansiona un
codice QR per autenticarsi tra dispositivi, ad
esempio usando un telefono per autenticarsi su un browser desktop o viceversa. Questo
trasporto può attivare richieste di codice QR
sia su dispositivi desktop che mobili, il che potrebbe non essere sempre desiderabile a
seconda del contesto. Nota: hybrid è stato aggiunto in
WebAuthn Level 3.
internal: L'authenticator è integrato nel dispositivo
stesso, come il Portachiavi iCloud
(verificato tramite Face ID o Touch ID) sugli iPhone,
Windows Hello sui PC o
Google Password Manager sui dispositivi
Android. Questi sono authenticator di piattaforma.
Quando viene creata una passkey, l'authenticator segnala quali
trasporti supporta. Questa informazione viene inviata alla
relying party (il vostro backend), che dovrebbe salvarla
insieme alla credenziale. Durante l'autenticazione, la
relying party invia nuovamente questi trasporti al client nella
lista allowCredentials, aiutando il browser o la piattaforma a determinare quali metodi
di autenticazione offrire all'utente.
La gestione dei trasporti differisce notevolmente tra le piattaforme, creando le sfide di compatibilità che gli sviluppatori devono affrontare.
I browser ricevono le informazioni sui trasporti dagli authenticator e le rispettano durante i flussi di autenticazione. Quando si crea una passkey in Chrome, Safari o Edge, il gestore di credenziali del browser fornisce dati sui trasporti che variano in base all'authenticator sottostante:
Authenticator di piattaforma: Windows Hello fornisce solo
["internal"], riflettendo la sua natura legata al dispositivo. Tuttavia, quando Chrome
utilizza Google Password Manager come
authenticator, fornisce ["internal", "hybrid"] perché
Google Password Manager supporta
l'autenticazione cross-device tramite telefoni
Android.
Chiavi di sicurezza hardware: Forniscono trasporti specifici come ["usb", "nfc"] in
base alle loro effettive capacità.
Gestori di credenziali sincronizzati nel cloud: Il
Portachiavi iCloud in Safari e Google
Password Manager in Chrome forniscono tipicamente
["internal", "hybrid"] per supportare sia i flussi di autenticazione locali che quelli
cross-device.
Queste informazioni fluiscono in modo affidabile nei contesti web, sebbene i trasporti specifici dipendano da quale authenticator il browser seleziona per l'archiviazione delle credenziali.
Documentazione: Specifica WebAuthn W3C
La Credential Manager API di Android si comporta in modo simile ai browser web. Quando si creano passkey in app native Android, il Credential Manager fornisce informazioni sui trasporti che rispecchiano il comportamento web: gli authenticator di piattaforma segnalano le loro capacità in modo accurato e il sistema gestisce i dati sui trasporti in modo coerente. Gli sviluppatori Android possono fare affidamento su queste informazioni senza una gestione speciale.
Documentazione: Android Credential Manager
iOS presenta una situazione più complessa. Il framework AuthenticationServices di Apple gestisce i trasporti in modo diverso a seconda del tipo di authenticator:
Authenticator di piattaforma (Portachiavi iCloud, verificato tramite Face ID o Touch ID): Spesso restituiscono array di trasporti vuoti durante la creazione della passkey. Questo non significa che la passkey non abbia capacità di trasporto, ma semplicemente che iOS non le riporta esplicitamente. Secondo lo standard WebAuthn, omettere i trasporti significa che qualsiasi trasporto è accettabile, quindi l'autenticazione ibrida funzionerà comunque.
Chiavi di sicurezza: Forniscono informazioni sui trasporti (es. ["usb"], ["nfc"])
quando utilizzate con dispositivi iOS, seguendo il modello previsto.
Documentazione: Apple AuthenticationServices
Gli sviluppatori devono scegliere: seguire rigorosamente le specifiche o ottimizzare i trasporti interni e ibridi per l'esperienza utente. Ogni approccio ha vantaggi e svantaggi.
Questo approccio si allinea alla specifica WebAuthn: utilizzare i trasporti esattamente come forniti dall'authenticator durante la registrazione della credenziale e inviarli di nuovo invariati durante l'autenticazione.
Implementazione: Quando viene creata una passkey, salvare l'array transports dalla
risposta dell'authenticator. Durante l'autenticazione, includere questi esatti trasporti
nella lista allowCredentials:
{ "allowCredentials": [ { "id": "credential-id-base64", "type": "public-key", "transports": ["internal", "hybrid"] } ] }
Vantaggi:
Svantaggi:
Ideale per: Applicazioni che privilegiano la conformità agli standard, ambienti enterprise con diversi tipi di authenticator.
Questo approccio dà la priorità all'esperienza utente modificando selettivamente i trasporti interni e ibridi in base a specifici obiettivi di ottimizzazione. Piuttosto che una regola generale, consideriamo questi scenari di ottimizzazione comuni:
Problema: Gli authenticator di piattaforma iOS restituiscono array di trasporti vuoti. Se lasciati vuoti o riempiti dai backend, gli utenti potrebbero vedere richieste per chiavi di sicurezza (USB, NFC) accanto alle opzioni di piattaforma, creando confusione nelle applicazioni consumer.
Soluzione: Impostare esplicitamente i trasporti a ["hybrid", "internal"] per gli
authenticator di piattaforma iOS. Ciò garantisce che vengano offerte solo l'autenticazione
di piattaforma e i flussi cross-device, nascondendo le opzioni delle
chiavi di sicurezza.
// Quando si salvano le credenziali dell'authenticator di piattaforma iOS if (platform === "iOS" && authenticatorAttachment === "platform") { transports = ["hybrid", "internal"]; }
Risultato: Un'interfaccia di autenticazione pulita senza richieste di chiavi di sicurezza per le passkey create su iOS.
Problema: Quando ci si autentica su dispositivi mobili, mostrare codici QR per l'autenticazione cross-device crea una pessima esperienza utente: gli utenti sono già su un dispositivo mobile con le loro passkey disponibili.
Soluzione: Rimuovere il trasporto hybrid quando l'utente si sta autenticando da un
dispositivo mobile, lasciando solo ["internal"].
// Quando si costruisce allowCredentials per l'autenticazione const transports = isMobileDevice ? credentials.transports.filter((t) => t !== "hybrid") : credentials.transports;
Risultato: Gli utenti mobili vedono solo opzioni di autenticazione diretta senza inutili richieste di codice QR.
⚠️ Attenzione: La manipolazione dei trasporti non produce sempre risultati coerenti su tutte le piattaforme. Test approfonditi mostrano che le combinazioni di browser e sistema operativo gestiscono i trasporti in modo diverso:
hybrid è escluso dai trasporti.hybrid è incluso.Rischio di vicoli ciechi: Un filtraggio dei trasporti eccessivamente restrittivo può
creare vicoli ciechi nell'autenticazione in cui gli utenti non riescono affatto ad
accedere. Ad esempio, rimuovere hybrid potrebbe impedire scenari legittimi di
autenticazione cross-device in cui un utente deve autenticarsi da un dispositivo preso in
prestito. Fornire sempre metodi di autenticazione di fallback e testare a fondo su tutte
le piattaforme target prima di implementare ottimizzazioni dei trasporti.
Questi sono suggerimenti di ottimizzazione: WebAuthn fornisce altri meccanismi per ottimizzare l'esperienza utente dell'autenticazione oltre alla manipolazione dei trasporti, come gli hint.
Il comportamento dei trasporti è imprevedibile: L'autenticazione cross-device (CDA)
tramite trasporto hybrid mostra un comportamento incoerente tra le combinazioni di
browser e sistema operativo.
Test reali
dimostrano che i valori dei trasporti non garantiscono un comportamento specifico
dell'interfaccia utente: le piattaforme interpretano e gestiscono i trasporti in modo
diverso, portando a risultati inaspettati.
Complessità specifica della piattaforma: Quando si controllano esplicitamente i trasporti, è necessario tenere conto delle differenze tra le piattaforme:
["internal"]; l'aggiunta di hybrid attiva
codici QR indesiderati.hybrid nell'array dei trasporti.Richiesta una comprensione end-to-end: Controllare esplicitamente i trasporti significa assumersi la responsabilità dell'intero flusso. È necessario capire come ogni combinazione di trasporti si comporta su tutte le piattaforme target e testare a fondo. La manipolazione dei trasporti può creare vicoli ciechi nell'autenticazione in cui non esiste un percorso di autenticazione valido per gli utenti.
Vantaggi:
Svantaggi:
Ideale per: Applicazioni consumer con requisiti UX specifici, team con risorse per mantenere logiche specifiche per piattaforma, scenari che privilegiano flussi di autenticazione semplificati rispetto alla stretta conformità alle specifiche.
La gestione dei trasporti WebAuthn non esiste in isolamento: è un pezzo della vostra strategia complessiva di implementazione delle passkey. Emergono due approcci comuni nelle implementazioni di produzione, ognuno con diverse implicazioni per l'uso dei trasporti interni e ibridi.
Questo approccio dà la priorità alla flessibilità e alla conformità agli standard, consentendo agli utenti di autenticarsi con qualsiasi authenticator compatibile.
Caratteristiche dell'Implementazione:
[], permettendo a qualsiasi
credenziale di corrispondere.usb, nfc, ble).Implicazioni sui Trasporti:
Con allowCredentials vuoto, i trasporti diventano meno critici durante l'autenticazione:
la piattaforma mostra tutte le opzioni disponibili. Tuttavia, questo significa che gli
utenti potrebbero vedere contemporaneamente richieste per chiavi di sicurezza, codici QR e
opzioni di piattaforma, il che può creare paralisi decisionale nelle applicazioni
consumer.
Ideale per: Ambienti enterprise, applicazioni con basi di utenti diverse che richiedono il supporto delle chiavi di sicurezza, scenari che privilegiano la massima flessibilità di autenticazione.
Questo approccio ottimizza l'esperienza utente per i consumatori limitando la creazione di passkey agli authenticator di piattaforma e utilizzando flussi identifier-first.
Caratteristiche dell'Implementazione:
authenticatorAttachment: "platform".preferImmediatelyAvailableCredentials, che per definizione esclude le chiavi di
sicurezza e l'autenticazione cross-device.preferImmediatelyAvailableCredentials nelle app native, ma questo scenario è raro (gli
utenti di solito hanno le passkey sul dispositivo che stanno usando).internal e hybrid.Implicazioni sui Trasporti:
Poiché allowCredentials contiene credenziali specifiche con i loro trasporti, la
gestione dei trasporti diventa cruciale.
Ideale per: Applicazioni consumer, app native per dispositivi mobili, scenari che privilegiano una UX semplificata rispetto alla flessibilità dell'authenticator, piattaforme in cui esistono già flussi identifier-first.
| Caratteristica | Conformità allo Standard | Su Misura per i Consumatori |
|---|---|---|
| allowCredentials | Array vuoto | Credenziali specifiche dell'utente |
| Tipi di authenticator | Tutti (piattaforma, chiavi di sicurezza, CDA) | Piattaforma + CDA |
| API app nativa | WebAuthn standard | Può usare preferImmediatelyAvailableCredentials |
| Chiavi di sicurezza | Supportate | Tipicamente escluse |
| Rilevanza dei trasporti | Bassa (lista allow vuota) | Alta (credenziali specifiche) |
| Codici QR su mobile | Possono apparire | Possono essere ottimizzati per non apparire |
| Esperienza utente | Più opzioni, più complessità | Semplificata, meno decisioni |
| Complessità implementativa | Minore | Maggiore |
| Attrito per il consumatore | Maggiore (scelte di autenticazione multiple) | Minore (ottimizzato per i flussi consumer) |
Per le piattaforme che già rivelano l'esistenza di un account o utilizzano flussi identifier-first (l'utente inserisce l'email prima di vedere le opzioni di login), l'approccio su misura per i consumatori si allinea naturalmente. Una volta che l'utente ha fornito il proprio identificatore:
allowCredentials con credenziali specifiche e i loro trasporti.In questi scenari, i trasporti possono diventare uno strumento di ottimizzazione piuttosto che un problema di sicurezza. È possibile personalizzare le opzioni di autenticazione in base al contesto del dispositivo (mobile vs. desktop) e alle capacità delle credenziali.
Raccomandazione: Per le piattaforme che utilizzano già flussi identifier-first o dove
l'enumerazione degli account
non è una preoccupazione, l'approccio su misura per i consumatori con una gestione
esplicita dei trasporti offre una UX superiore, specialmente nelle applicazioni native
mobili dove preferImmediatelyAvailableCredentials abilita
un'autenticazione biometrica fluida.
Indipendentemente dall'approccio scelto per la gestione dei trasporti interni e ibridi, seguite queste pratiche per ridurre al minimo i problemi:
Salvare i Trasporti Durante la Registrazione: Memorizzare sempre l'array transports
dalla risposta dell'authenticator insieme al
credential ID e alla chiave pubblica. Questi dati
sono essenziali per i flussi di autenticazione.
Gestire con Garbo gli Array Vuoti: Quando si riceve un array di trasporti vuoto dagli authenticator di piattaforma iOS:
transports, il che significa che "qualsiasi trasporto" è accettabile.["internal", "hybrid"] per controllare
quali opzioni di autenticazione vengono mostrate.Testare su Tutte le Piattaforme Target: Creare una matrice di test che copra tutte le combinazioni:
Comprendere la Differenza tra Array Vuoto e Proprietà Mancante: Sia un array di
trasporti vuoto [] sia una proprietà transports mancante sono tipicamente trattati
come "qualsiasi trasporto è accettabile" secondo le specifiche. Tuttavia, i dettagli di
implementazione variano tra le piattaforme.
Monitorare i Cambiamenti delle Piattaforme: Le implementazioni di WebAuthn evolvono. Apple, Google e Microsoft aggiornano regolarmente il comportamento dei loro authenticator. Rimanere informati sui cambiamenti che potrebbero influenzare la gestione dei trasporti.
I trasporti WebAuthn, in particolare quelli interni e ibridi, sono dettagli tecnici con un impatto pratico significativo sull'autenticazione cross-device. La vostra strategia di gestione dei trasporti dovrebbe allinearsi al vostro approccio più ampio di implementazione delle passkey e alle piattaforme target.
Le Decisioni sui Trasporti Rientrano in una Strategia Più Ampia: Il modo in cui gestite i trasporti dipende dal fatto che stiate costruendo per la massima flessibilità (allowCredentials vuoto) o per l'esperienza utente consumer (identifier-first con credenziali specifiche). Quest'ultimo rende i trasporti critici per l'ottimizzazione.
Le Differenze tra Piattaforme Richiedono una Gestione: Web e Android forniscono
informazioni affidabili sui trasporti, mentre gli authenticator di piattaforma iOS
restituiscono array vuoti. Windows Hello invia solo ["internal"]. Comprendere queste
differenze è essenziale per le implementazioni di produzione.
Due Approcci Validi per i Trasporti: Quello conforme alle specifiche (fidarsi dei trasporti dell'authenticator) funziona bene per scenari enterprise e di massima flessibilità. Il controllo esplicito (ottimizzare i trasporti) si adatta alle applicazioni consumer con flussi identifier-first e app native per dispositivi mobili.
L'Identifier-First Abilita l'Ottimizzazione dei Trasporti: Quando gli utenti forniscono prima il loro identificatore, la gestione dei trasporti diventa un potente strumento di UX. È possibile prevenire codici QR indesiderati su mobile, nascondere le opzioni delle chiavi di sicurezza e semplificare l'autenticazione, senza ulteriori preoccupazioni di enumerazione degli account.
Per Enterprise / Massima Flessibilità:
allowCredentials vuoto per supportare tutti i tipi di authenticator.Per Applicazioni Consumer / App Native:
authenticatorAttachment: "platform").allowCredentials con credenziali specifiche e trasporti ottimizzati.preferImmediatelyAvailableCredentials nelle app native.["hybrid", "internal"].hybrid sui dispositivi mobili per prevenire i codici QR.Per Piattaforme con Flussi Identifier-First Già Esistenti:
Iniziare in modo conforme alle specifiche, poi ottimizzare in base alla vostra strategia:
Il panorama WebAuthn continua a evolversi. I fornitori di piattaforme aggiornano regolarmente le loro implementazioni e specifiche come WebAuthn Level 3 introducono nuove capacità. Costruire sistemi flessibili che allineano la gestione dei trasporti con la vostra strategia di autenticazione più ampia garantisce che la vostra implementazione di passkey rimanga robusta e offra esperienze utente eccellenti man mano che l'ecosistema matura.
Related Articles
Table of Contents