Flussi same-device e cross-device spiegati
Ogni volta che un wallet dimostra qualcosa a un sito web, i due devono trovarsi. A volte sono già sullo stesso telefono e il passaggio richiede un solo tocco. A volte il sito è su una scrivania e il wallet in tasca, e l'unico ponte tra loro è un codice sullo schermo. Sono i flussi same-device e cross-device, e quasi ogni domanda pratica sulle credenziali digitali si riduce a capire in quale dei due ci si trova.
Due forme dello stesso scambio
I due flussi hanno in comune tutto ciò che conta per il business: viene posta la stessa domanda, la stessa persona la approva e torna la stessa prova. Ciò che potete chiedere, o su cui potete fare affidamento dopo, non dipende in alcun modo dal flusso in cui vi trovate.
Cambia il percorso. In uno il wallet è a un tocco di distanza e restituisce la risposta direttamente alla pagina che l'ha chiesta. Nell'altro la risposta viaggia da un secondo dispositivo ai vostri server, e la pagina che la persona sta guardando deve essere avvisata del suo arrivo.
Stesso dispositivo
Un solo telefono. Sito web e wallet sullo stesso schermo.
- Il visitatore è sul sito dal browser del telefono e chiede di dimostrare qualcosa.
- Il sito apre il wallet con un deep link o un reindirizzamento.
- Il wallet mostra chi sta chiedendo e per quale scopo, e il visitatore approva.
- Il wallet riporta il visitatore sul sito con la risposta, nella stessa sessione del browser da cui è partito.
Su due dispositivi
Due dispositivi. Sito web sul computer, wallet sul telefono.
- Il visitatore è sul sito dal browser del computer e chiede di dimostrare qualcosa.
- Il sito mostra un codice QR che contiene la richiesta.
- Il wallet sul telefono lo scansiona, mostra chi sta chiedendo e il visitatore approva.
- Il wallet invia la risposta al backend del sito, che comunica alla pagina sul computer che lo scambio è concluso.
Quando si verifica ciascuno
Non siete voi a scegliere. Un cliente che apre la vostra pagina di onboarding sul telefono durante il tragitto verso il lavoro è in un flusso same-device. Lo stesso cliente, che completa lo stesso modulo alla scrivania la mattina dopo, è in un flusso cross-device. Il wallet vive sul telefono, quindi il flusso segue il luogo in cui si svolge il resto del lavoro.
Per questo entrambi i protocolli dell'ecosistema europeo li descrivono entrambi. La presentazione, in cui chiedete a qualcuno di dimostrare qualcosa, nomina esplicitamente i due flussi. Il rilascio, in cui consegnate a qualcuno una credenziale, fa la stessa distinzione per l'offerta che lo avvia: può comparire sul dispositivo su cui si trova il wallet oppure arrivare per qualsiasi altra via, fino a una lettera con un codice stampato.
Un servizio usato solo all'interno della vostra organizzazione, su computer gestiti, può ragionevolmente partire con un solo flusso. Tutto ciò che un cittadino o un cliente raggiunge alle proprie condizioni ha bisogno di entrambi, e un servizio che funziona in un solo modo verrà segnalato come guasto, non come non supportato.
Cosa costa ciascuno a chi lo usa
Il flusso same-device è il percorso più breve. Non c'è un secondo schermo, né una fotocamera, né il momento in cui lo sguardo passa da un dispositivo all'altro, e la persona torna al punto di partenza. Quando fallisce, di solito fallisce presto e in modo evidente: nessun wallet installato, oppure il link apre qualcosa che non è affatto un wallet.
Il flusso cross-device costa una scansione, ma offre un vantaggio concreto. La persona resta sullo schermo grande dove stava compilando un lungo modulo, leggendo un contratto o confrontando opzioni, e solo la prova si sposta sul telefono. Per qualsiasi cosa richieda più di un minuto di digitazione, è il posto migliore in cui stare.
I suoi errori sono più silenziosi e vale la pena progettarli. Un codice scaduto mentre qualcuno cercava il telefono, un telefono senza segnale, una fotocamera che non mette a fuoco. La pagina che mostra il codice dovrebbe indicare per quanto tempo è valido, offrirne uno nuovo senza perdere il modulo sottostante e non lasciare mai la persona nel dubbio che sia successo qualcosa.
Dove differiscono davvero: la sicurezza
In un flusso same-device la risposta torna per la stessa strada da cui è partita la persona: un reindirizzamento, sul dispositivo su cui gira il wallet, nella sessione del browser che ha avviato lo scambio. Chi copia la richiesta dal proprio schermo non ha modo di ricevere il risultato, perché questo viene consegnato al dispositivo che ha dato l'approvazione.
In un flusso cross-device la risposta non torna affatto attraverso il browser. Va dal telefono ai vostri server, fuori dalla vista della pagina che ha mostrato il codice. È qui la falla: se non legate il codice alla sessione che l'ha mostrato, il vostro servizio non può distinguere la persona che ha davanti da qualcuno che ha messo lo stesso codice davanti a una vittima e ha aspettato.
Questo attacco ha un nome e un rimedio. Il codice deve appartenere a una sola sessione, e un risultato che arriva per qualsiasi altra sessione va rifiutato. In fase di progettazione basta ragionarci poche righe, mentre saltarlo lascia una falla nota, ed è per questo che l'IETF ha scritto una best current practice per i flussi cross-device invece di lasciare la questione a ogni singola implementazione.
Il secondo rischio è il phishing, e riguarda il codice stesso. Un quadrato bianco e nero non dice nulla alla persona su chi c'è dall'altra parte, quindi un codice stampato su un adesivo e incollato sopra quello vero è un attacco credibile. La difesa è che sia il wallet, non il codice, a indicare l'organizzazione richiedente e a elencare esattamente cosa vuole prima che venga condiviso qualsiasi dato. Il rilascio aggiunge un'ulteriore serratura: un'offerta può richiedere un breve codice consegnato sul canale che ha già identificato la persona, così un'offerta intercettata lungo il percorso non può essere riscattata da nessun altro.
Che cosa significa per te
Parte affidante
Prevedete entrambi fin dall'inizio. Il lavoro in più sta nel vostro front end e nel legare il codice a una sessione, non in una seconda integrazione, e aggiungere quel legame in un secondo momento è proprio la parte che va storta.
Emittente
Decidete come la vostra offerta raggiunge le persone. Sullo schermo accanto a un login, in un'email o su carta: ognuno porta a un flusso diverso, e quelli che escono dal vostro canale sono quelli che richiedono un codice separato per il riscatto.
Titolare del wallet
Leggi ciò che ti mostra il wallet, non ciò che affermano la pagina o il codice. Il wallet è l'unico punto che indica chi sta chiedendo e cosa vuole, ed è l'ultimo momento in cui puoi dire di no.
Termini correlati
Domande frequenti
Chi decide quale flusso viene usato?
Lo decide la situazione, non un'impostazione. Se la persona è già sul dispositivo su cui si trova il suo wallet, il sito passa il controllo direttamente. Se è al computer e il wallet è in tasca, l'unico collegamento possibile è un codice da scansionare. Un servizio aperto al pubblico li incontrerà entrambi già nella prima settimana.
Supportarli entrambi significa costruire tutto due volte?
No. La richiesta che inviate e la risposta che verificate sono le stesse in entrambi i casi. Cambia il modo in cui la richiesta raggiunge il wallet e in cui la risposta torna alla vostra pagina: un reindirizzamento che il browser segue, oppure un codice sullo schermo più un modo per far sapere alla pagina che lo scambio è concluso. In pratica si tratta di un percorso in più nel front end, non di una seconda integrazione.
Un codice QR è sicuro per questo uso?
Sì, se lo scambio che lo circonda è costruito correttamente. Da solo un codice non dice nulla alla persona su chi sta chiedendo, quindi devono valere due condizioni: il wallet deve mostrare l'identità dell'organizzazione richiedente prima che venga condiviso qualsiasi dato, e il vostro servizio deve rifiutare una risposta che arriva per una sessione diversa da quella che ha mostrato il codice. Entrambe sono prassi consolidate ed entrambe sono scritte nelle specifiche.
Un controllo allo sportello è un flusso cross-device?
No, è un terzo caso. Same-device e cross-device descrivono entrambi uno scambio via internet. Un controllo di persona, con i due dispositivi tenuti uno accanto all'altro, usa invece uno standard di prossimità via Bluetooth o NFC. Per chi tiene in mano il telefono sembra simile, ma nulla passa attraverso il vostro sito web.
Fonti
Questa pagina ha scopo informativo e non costituisce consulenza legale. Per indicazioni autorevoli consultare direttamente le specifiche OpenID e IETF.