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: October 31, 2025

See the original blog version in English here.
Passkeys for Super Funds and Financial Institutions
Join our Webinar on 7th November to learn how Super Funds and Financial Institutions can implement passkeys
| 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