Panoramica delle credenziali digitali

Le credenziali digitali sono documenti verificabili tramite crittografia che possono essere utilizzati per autenticare, autorizzare o fornire informazioni su un utente. Si tratta in genere di elementi come patenti di guida mobile, passaporti digitali, carte d'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 viene implementato per i casi d'uso web con l'API Credential Management di W3C e su Android con l'API DigitalCredential di Gestore delle credenziali.

Informazioni sulle credenziali digitali

Nel mondo fisico, una persona potrebbe tenere la propria identità nel portafoglio e mostrarla a una parte richiedente quando richiesto:

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

In questo caso, un utente in genere ha un solo portafoglio e recupera le credenziali richieste dal portafoglio per presentarle al richiedente. I portafogli sono per lo più intercambiabili e possono generalmente memorizzare le stesse cose.

Le credenziali digitali presentano alcune differenze principali:

  1. Gli utenti dovrebbero avere più portafogli, noti anche come titolari, che possono contenere varie credenziali diverse. I wallet determinano quali credenziali possono essere memorizzate al loro interno.
  2. Il richiedente ora è un'applicazione anziché una persona reale e viene definito verificatore.
  3. La presentazione delle credenziali avviene nel software, il che significa che una superficie API recupera e presenta le credenziali. In Android, questa è Credential Manager.

Pertanto, Credential Manager assume diversi ruoli che in precedenza erano gestiti dall'utente:

  1. Su Android, i wallet devono registrare i metadati delle credenziali con Credential Manager per essere visualizzati nell'interfaccia utente di Credential Manager.
  2. Credential Manager abbina le credenziali nei vari wallet in base alla richiesta e presenta un elenco che l'utente può selezionare.
  3. Quando l'utente seleziona una credenziale nell'elenco, Credential Manager richiama il wallet, che gestirà il resto della transazione (mostrando le UI e così via) e restituirà la credenziale all'applicazione.

Questo flusso è mostrato qui:

Immagine che mostra il flusso di interazione con una credenziale digitale
Figura 2. Modello di interazione per la verifica delle credenziali digitali. Credential Manager utilizza i metadati delle credenziali preregistrate in tutti i wallet dell'utente per abbinare una richiesta del 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 restituita.

Esperienza utente

Come mostrato nel flusso Android, l'utente deve interagire una sola volta con l'interfaccia utente di Credential Manager per selezionare le credenziali appropriate. Ecco un esempio di come appare il selettore:

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

Standard

Le richieste di credenziali digitali vengono create utilizzando lo standard OpenID4VP. Puoi visualizzare richieste di esempio nel sito demo 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 ti consigliamo di utilizzare uno dei protocolli standard nella tua applicazione.

Prova

Puoi provare il flusso delle credenziali digitali su più piattaforme con un wallet Android e un verificatore basato sul web:

  1. Installa l'esempio pubblico di CMWallet sul tuo smartphone Android. Puoi farlo estraendo i file dal repository e installandoli direttamente da Android Studio o accedendo a https://github.com/digitalcredentialsdev/CMWallet/actions e selezionando l'ultima build per accedere al file app-debug.apk più recente.
  2. Apri CMWallet per registrare i metadati con 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 i prompt di avviso e scansiona il codice QR con lo smartphone, poi 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