Pubblicato il 4 settembre 2024, ultimo aggiornamento: 16 ottobre 2024
A partire da Chrome 128 è iniziata una prova dell'origine per l'API Digital Credentials. L'API Digital Credentials è una nuova API di piattaforma web che consente ai siti web di richiedere in modo selettivo informazioni verificabili sull'utente tramite credenziali digitali come una patente di guida o un documento di identità nazionale memorizzati in un portafoglio digitale.
Sfondo
L'identità digitale reale sta diventando una realtà con molte persone giuridiche pubbliche e private che iniziano a emettere credenziali digitali legate al dispositivo. Ad esempio, ora è possibile eseguire il provisioning di patenti di guida e documenti di identità su dispositivi mobili in alcuni stati degli Stati Uniti (ad esempio Arizona, California, Colorado, Georgia e Maryland) in app di portafogli digitali come Google Wallet. Stanno emergendo anche normative relative all'accettazione delle credenziali digitali per determinate verifiche online e eIDAS 2.0 è un esempio.
Le funzionalità di una credenziale digitale dipendono dal relativo formato, anche se in genere includono:
- Sicurezza e privacy avanzate: l'utilizzo di crittografia avanzata e metodi di autenticazione avanzati aiuta a proteggere i dati sensibili e garantisce l'accesso sicuro. Ad esempio, la presentazione di una credenziale è in genere protetta da un'autenticazione utente tramite l'app Wallet.
- Divulgazione selettiva: le parti attendibili (RP) possono richiedere informazioni selezionate dalla credenziale, consentendo agli utenti di limitare i dati condivisi a quelli necessari per il caso d'uso. Ad esempio, è possibile condividere se un utente ha più di 18 anni senza rivelare la sua data di nascita.
- Interoperabilità: la credenziale deve rispettare gli standard internazionali, consentendo la compatibilità tra sistemi e paesi diversi e facilitando l'accettazione transfrontaliera.
- Verificabilità: i dati delle credenziali condivisi sono firmati digitalmente dall'emittente; l'RP può verificare questa firma per verificare l'autenticità dei dati.
Grazie alla loro natura verificabile, le credenziali digitali potrebbero abilitare casi d'uso come:
- Verifica dell'età:richiedi l'età per verificare l'età di una persona prima di pubblicare contenuti soggetti a limiti di età o di acquistare articoli soggetti a limiti di età.
- Verifica dell'identità: richiesta di nome e indirizzo per verificare l'identità di una persona ai fini della conformità legale o della prevenzione delle frodi.
- Controllo dei diritti di guida: verifica l'idoneità di una persona a guidare (ad esempio, quando noleggia un'auto).
Poiché i siti web hanno iniziato a comunicare direttamente con le applicazioni di portafogli elettronici (ad esempio utilizzando schemi URL personalizzati) per richiedere credenziali digitali per vari casi d'uso, i browser vedono un'opportunità per rendere questa interazione più sicura, resistente agli abusi e più facile da usare tramite un'API appositamente creata.
Presentazione dell'API Digital Credentials
L'API Digital Credentials è una nuova API per le piattaforme web che consente ai siti web RP di richiedere la presentazione di credenziali digitali dalle app di portafoglio. L'API è disponibile in Chrome come prova dell'origine a partire da Chrome 128.
L'API è indipendente dal protocollo, il che consente all'RP di specificare un protocollo in base ai propri requisiti. Quando un RP effettua una richiesta, il browser la invia al sistema operativo mobile, che cerca una credenziale corrispondente nelle applicazioni del portafoglio installate. Se ne vengono trovati, il sistema operativo mobile chiede all'utente di selezionarne uno e invia la richiesta al wallet selezionato dall'utente. Dopo un'autenticazione locale, il portafoglio restituisce una risposta contenente i dati delle credenziali richieste.
Chrome supporterà inizialmente l'API in Chrome su Android per la richiesta di credenziali dalle app di portafogli sullo stesso dispositivo. In futuro, prevediamo di supportare Chrome per computer per richiedere le credenziali su più dispositivi da un altro dispositivo mobile.
Al momento del lancio, Google Wallet verrà integrato con l'API Digital Credentials, consentendo ad alcune attività e organizzazioni di richiedere agli utenti di presentare il proprio documento di identità online, tramite Chrome su Android, e di verificare l'autenticità dei dati trasmessi esaminando la firma crittografica. Per partecipare, compila questo modulo per esprimere il tuo interesse ad accettare i documenti di identità digitali da Google Wallet.
A breve l'API verrà utilizzata anche dagli Account Google per verificare la data di nascita di alcuni utenti. Gli utenti residenti in uno stato degli Stati Uniti supportato potranno utilizzare il documento di identità o la patente di guida configurati nelle app di portafoglio disponibili (incluso Google Wallet) per condividere facilmente solo la data di nascita con Google senza condividere altri dettagli della loro identità. In questo modo, gli utenti possono dimostrare a Google, nel rispetto della privacy, di soddisfare i requisiti di età relativi all'account.
Prova
Requisiti:
- Google Play Services 23.40 o versioni successive
- Chrome 128 o versioni successive
- Attiva il flag in
chrome://flags#web-identity-digital-credentials
Per provare l'API Digital Credentials, segui le istruzioni:
- Installa l'applicazione demo del portafoglio seguendo le istruzioni.
- Scarica un'applicazione demo per portafogli sul tuo dispositivo Android. Il codice sorgente è disponibile nel repository delle credenziali di identità della OpenWallet Foundation.
- Esegui un comando
adb install -t <path-to-apk>
per installare l'app.
- Avvia l'app IC Wallet e esegui il provisioning di una patente di guida digitale (mDL) di prova.
- Tocca il pulsante del menu e seleziona Aggiungi documento autofirmato.
- Vai all'indirizzo https://digital-credentials.dev con Chrome 128 o versioni successive.
- Premi Richiedi credenziali (OpenID4VP).
Dai un'occhiata alla demo che utilizza https://digital-credentials.dev, un sito web di test per gli sviluppatori per generare richieste di credenziali per diversi attributi:
Ecco come funziona la demo passo passo:
Come funziona l'API
L'API Digital Credentials si basa sull'API Credential Management, ma da un'interfaccia API indipendente: navigator.identity
. Chiamando navigator.identity.get()
, il sito web può richiedere una credenziale digitale archiviata in un'app di portafoglio mobile.
// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
signal: controller.signal,
digital: {
providers: [{
protocol: "openid4vp",
request: {
response_type: "vp_token",
nonce: "n-0S6_WzA2Mj",
client_metadata: {...},
presentation_definition: {...}
}
}],
}
});
L'interfaccia API di base è simile a navigator.credentials.get()
, tranne per il fatto che accetta solo il tipo di credenziale "digital"
. All'interno del tipo di credenziale digitale, aggiungi un array providers
contenente IdentityRequestProvider
con i seguenti parametri di base:
protocol
: specifica un protocollo di scambio con una stringa. Al momento della prova dell'origine, il protocollo principale in fase di sviluppo è"openid4vp"
.request
: compila i parametri accettati dalle app di portafoglio digitale per il protocollo specificato. Per"openid4vp"
, i parametri sono definiti nella specifica OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API.
Esempio di payload per il tipo di credenziale digitale che utilizza OID4VP:
{
protocol: 'openid4vp',
request: {
response_type: 'vp_token',
nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
client_metadata: {},
presentation_definition: {
id: 'mDL-request-demo',
input_descriptors: [{
id: "org.iso.18013.5.1.mDL",
format: {
mso_mdoc: {
alg: ["ES256"]
}
},
constraints: {
limit_disclosure: "required",
fields: [
{
path: ["$['org.iso.18013.5.1']['family_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['given_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['age_over_21']"],
intent_to_retain: false
}
]
}
}],
}
}
}
Con questa richiesta, i portafogli con patenti di guida digitali sul dispositivo forniranno un insieme di credenziali verificabili contenenti:
- Il cognome dell'utente.
- Nome dell'utente.
- Un valore booleano che indica se l'utente ha più di 21 anni o meno.
Ecco un esempio di payload di risposta:
{
data: '{\n "vp_token": "o2d2ZXJzaW9uYz..."\n}'
id: '',
protocol: 'openid4vp',
type: 'digital'
}
In questo esempio, la credenziale è stata richiesta con il protocollo "openid4vp"
e la risposta contiene "vp_token"
nella proprietà data
. Consulta la specifica OpenID for Verifiable Presentation (OID4VP) per l'API W3C Digital Credentials per scoprire come analizzare la risposta e verificare la credenziale.
L'API Digital Credentials è supportata su Chrome per Android come prova dell'origine. Al momento Chrome su computer e iOS non lo supporta. Per altri motori del browser, le conversazioni attive vengono facilitate tramite il gruppo della community W3C Web Incubator.
Partecipare alla prova dell'origine
Per lo sviluppo, puoi attivare l'API Digital Credentials localmente attivando il flag di Chrome chrome://flags#web-identity-digital-credentials
in Chrome 128 o versioni successive.
Questa funzionalità è disponibile anche come prova dell'origine. Le prove Origin ti consentono di provare nuove funzionalità e di fornire feedback sulla loro usabilità, praticità ed efficacia alla community degli standard web. Per ulteriori informazioni, consulta la guida introduttiva ai trial delle origini. Per registrarti a questa o a un'altra prova di origine, visita la pagina di registrazione.
- Richiedi un token per l'origine.
- Aggiungi il token alle tue pagine. Puoi farlo in due modi:
- Aggiungi un tag
origin-trial
<meta>
all'intestazione di ogni pagina. Ad esempio, potrebbe avere il seguente aspetto:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- Se puoi configurare il tuo server, puoi anche aggiungere il token utilizzando un'intestazione HTTP
Origin-Trial
. L'intestazione di risposta risultante dovrebbe avere il seguente aspetto:Origin-Trial: TOKEN_GOES_HERE.
- Aggiungi un tag
Condividi feedback
Se hai un feedback sull'API Digital Credentials, invialo al tracker dei problemi di Chromium dedicato.