Panoramica delle credenziali digitali

Le credenziali digitali sono documenti verificabili tramite crittografia che possono essere utilizzati per autenticare, autorizzare o fornire in altro modo informazioni su un utente. In genere si tratta di documenti come patenti di guida, passaporti digitali, tessere di imbarco e così via. Si trovano in contenitori virtuali chiamati portafogli digitali e fanno parte di uno standard W3C che specifica come accedervi e recuperarli. Questo standard è implementato per i casi d'uso web con l'API W3C Credential Management e su Android con l'API DigitalCredential di Credential Manager.

Informazioni sulle credenziali digitali

Nel mondo fisico, una persona potrebbe tenere il proprio documento di identità nel portafoglio e presentarlo a chi lo richiede:

Immagine che mostra il flusso di una normale interazione con il portafoglio
Figura 1. La procedura per soddisfare una richiesta di credenziali nel mondo fisico. Il richiedente chiede all'utente una credenziale specifica. L'utente lo seleziona e lo recupera dal proprio portafoglio fisico. Infine, l'utente fornisce la credenziale al richiedente.

In questo caso, in genere un utente ha un unico portafoglio e recupera le credenziali richieste dal portafoglio per presentarle all'autore della richiesta. I portafogli sono per lo più intercambiabili e in genere possono memorizzare le stesse cose.

Le credenziali digitali presentano alcune differenze principali:

  1. Gli utenti dovrebbero avere più portafogli che possono contenere varie credenziali diverse. I portafogli determinano quali credenziali possono essere memorizzate al loro interno.
  2. Ora il richiedente è un'applicazione anziché una persona reale e viene chiamato verificatore.
  3. La presentazione delle credenziali avviene nel software, il che significa che un'interfaccia API recupera e presenta le credenziali. In Android, si tratta di Credential Manager.

Di conseguenza, Gestore delle credenziali assume diversi ruoli precedentemente gestiti dall'utente:

  1. Su Android, i portafogli devono registrare i metadati delle credenziali con Credential Manager per essere elencati nell'interfaccia utente di Credential Manager.
  2. Credential Manager associa le credenziali tra i portafogli in base alla richiesta e presenta un elenco da selezionare per l'utente.
  3. Quando l'utente seleziona una credenziale nell'elenco, Gestore delle credenziali invoca il portafoglio, che gestisce il resto della transazione (visualizzazione delle UI e così via) e restituisce la credenziale all'applicazione.

Questo flusso è mostrato qui:

Immagine che mostra il flusso di un'interazione con le credenziali digitali
Figura 2. Modello di interazione per la verifica delle credenziali digitali. Gestore delle credenziali utilizza i metadati delle credenziali preregistrate nei portafogli degli utenti per trovare una corrispondenza con la richiesta di un verificatore e chiede all'utente di selezionare una credenziale. Credential Manager indirizza quindi il flusso di attività al portafoglio corrispondente, che gestisce il resto della transazione e restituisce la credenziale al verificatore. Nota: il verificatore deve gestire e verificare la risposta della credenziale una volta che viene restituita.

Esperienza utente

Come mostrato nel flusso di Android, l'utente deve interagire una sola volta con l'UI di Gestore delle credenziali per selezionare la credenziale appropriata. Ecco un esempio di come appare il selettore:

Immagine che mostra l'interfaccia utente delle credenziali digitali in Gestore delle credenziali
Figura 3. L'interfaccia utente delle credenziali digitali.

Standard

Le richieste di credenziali digitali vengono create utilizzando lo standard OpenID4VP. Puoi vedere richieste di esempio sul sito di dimostrazione delle credenziali digitali.

Le risposte alle credenziali digitali vengono in genere restituite in un formato standardizzato. Questi sono gestiti da diversi enti di standardizzazione e includono W3C Verifiable Credentials, sd-jwt e mdoc.

Sono possibili anche protocolli personalizzati, anche se consigliamo di utilizzare uno dei protocolli standard nella tua applicazione.

Prova

Puoi testare il flusso delle credenziali digitali tra le piattaforme con un portafoglio Android e un verificatore basato sul web:

  1. Installa l'esempio pubblico CMWallet sul tuo smartphone Android. Per farlo, puoi eseguire il pull dal repository e installare direttamente da Android Studio oppure visitare la pagina https://github.com/digitalcredentialsdev/CMWallet/actions e selezionare la build più recente per accedere all'ultimo file app-debug.apk.
  2. Apri CMWallet per registrare i metadati in Credential Manager. Assicurati che il Bluetooth sia attivo per consentire ai dispositivi di connettersi tra loro.
  3. Vai alla pagina https://digital-credentials.dev/ e seleziona Request Credentials (OpenID4VP).
  4. Accetta le richieste di avviso e scansiona il codice QR con lo smartphone, quindi seleziona "Usa passkey" e tocca la conferma per visualizzare le credenziali disponibili.
  5. Seleziona la credenziale da CMWallet per tornare al browser. Il browser dovrebbe mostrare la credenziale restituita.

Vedi anche

  • Per scoprire di più sull'utilizzo di Gestore delle credenziali per richiedere credenziali digitali nella tua app, leggi la pagina API Credential Verifier.
  • Per scoprire di più su come creare un portafoglio digitale utilizzando Gestore delle credenziali, consulta la pagina API Titolare della credenziale.