Gepubliceerd: 4 september 2024, Laatst bijgewerkt: 16 oktober 2024
Een origin-proefversie voor de Digital Credentials API start vanaf Chrome 128. Digital Credentials API is een nieuwe webplatform-API waarmee websites selectief verifieerbare informatie over de gebruiker kunnen opvragen via digitale inloggegevens zoals een rijbewijs of een nationale identiteitskaart die is opgeslagen in een digitale portemonnee.
Achtergrond
Digitale identiteit in de echte wereld wordt werkelijkheid nu veel publieke en private entiteiten apparaatgebonden digitale inloggegevens beginnen uit te geven. Mobiele rijbewijzen en identiteitsbewijzen in bepaalde Amerikaanse staten (zoals Arizona, Californië, Colorado, Georgia en Maryland) kunnen nu bijvoorbeeld worden geleverd aan digitale portemonnee-apps zoals Google Wallet op mobiele apparaten. Ook regelgeving met betrekking tot de acceptatie van digitale legitimatiebewijzen voor bepaalde online verificaties is in opkomst en eIDAS 2.0 is daar een voorbeeld van.
De kenmerken van een digitaal legitimatiebewijs zijn afhankelijk van het formaat ervan, maar omvatten doorgaans:
- Verbeterde beveiliging en privacy : het gebruik van geavanceerde codering en sterke authenticatiemethoden helpt gevoelige gegevens te beschermen en zorgt voor veilige toegang. Het presenteren van een inloggegevens wordt bijvoorbeeld meestal beschermd achter een gebruikersauthenticatie via de portemonnee-app.
- Selectieve openbaarmaking : Relying Parties (RP) kunnen geselecteerde informatie uit de inloggegevens opvragen, waardoor gebruikers de gedeelde gegevens kunnen beperken tot wat nodig is voor de use case. Zo kan bijvoorbeeld worden gedeeld of een gebruiker ouder is dan 18 jaar, zonder dat de geboortedatum van de gebruiker bekend wordt gemaakt.
- Interoperabiliteit : de kwalificatie moet voldoen aan internationale normen, waardoor compatibiliteit tussen verschillende systemen en landen mogelijk wordt en grensoverschrijdende acceptatie wordt vergemakkelijkt.
- Verifieerbaarheid : De gedeelde legitimatiegegevens worden digitaal ondertekend door de uitgever; RP kan deze handtekening verifiëren om de authenticiteit van de gegevens te verifiëren.
Vanwege het verifieerbare karakter van digitale inloggegevens kunnen ze gebruiksscenario's mogelijk maken zoals:
- Leeftijdsverificatie: Vraag de leeftijd aan om de leeftijd van een persoon te verifiëren voordat u inhoud met een leeftijdsbeperking aanbiedt of items met een leeftijdsbeperking koopt.
- Identiteitsverificatie: Naam en adres opvragen om de identiteit van een persoon te verifiëren voor wettelijke naleving of fraudepreventie.
- Controle van rijbevoegdheden: Controleer of iemand in aanmerking komt om te rijden (bijvoorbeeld bij het huren van een auto).
Nu websites rechtstreeks zijn gaan communiceren met mobiele portemonnee-applicaties (zoals door aangepaste URL-schema's te gebruiken) om digitale inloggegevens op te vragen voor verschillende gebruiksscenario's, zien browsers een kans om deze interactie veiliger, beter bestand tegen misbruik en gemakkelijker te gebruiken te maken via een doel- gebouwde API.
Introductie van de Digital Credentials API
De Digital Credentials API is een nieuwe webplatform-API waarmee RP-websites de presentatie van digitale inloggegevens van portemonnee-apps kunnen opvragen. De API is beschikbaar in Chrome als origin-proefversie vanaf Chrome 128.
De API is protocol-agnostisch, waardoor de RP een protocol kan specificeren op basis van zijn vereisten. Wanneer een RP een verzoek indient, stuurt de browser het verzoek naar het mobiele besturingssysteem, dat zoekt naar een overeenkomende referentie in geïnstalleerde portemonnee-applicaties. Als er een wordt gevonden, vraagt het mobiele besturingssysteem de gebruiker om er een te selecteren en stuurt het verzoek naar de door de gebruiker geselecteerde portemonnee. Na een lokale authenticatie retourneert de portemonnee een antwoord met de gevraagde inloggegevens.
Chrome ondersteunt eerst de API in Chrome op Android voor het opvragen van inloggegevens van portemonnee-apps op hetzelfde apparaat. In de toekomst zijn we van plan de Chrome-desktop te ondersteunen om op verschillende apparaten inloggegevens op te vragen vanaf een ander mobiel apparaat.
Bij de lancering zal Google Wallet integreren met de Digital Credentials API, waardoor geselecteerde bedrijven en organisaties een verzoek aan gebruikers kunnen initiëren om hun ID online te presenteren, via Chrome op Android, en de authenticiteit van de verzonden gegevens kunnen verifiëren door de cryptografische handtekening te onderzoeken. To participate, fill in this form to express interest in accepting digital IDs from Google Wallet.
De API zal binnenkort ook door Google-accounts worden gebruikt om de geboortedatum van bepaalde gebruikers te verifiëren. Gebruikers die in een ondersteunde Amerikaanse staat wonen, kunnen hun staats-ID of rijbewijs gebruiken dat is opgegeven in beschikbare portemonnee-apps (waaronder Google Wallet) om naadloos alleen hun geboortedatum met Google te delen zonder andere details van hun identiteit te delen. Hierdoor kunnen gebruikers op een privacybeschermende manier aan Google aantonen dat ze voldoen aan de accountgerelateerde leeftijdsvereisten .
Probeer het eens
Vereisten:
- Google Play-services 23.40 of hoger
- Chroom 128 of hoger
- Schakel de vlag in op
chrome://flags#web-identity-digital-credentials
Volg de instructies om de Digital Credentials API te proberen:
- Installeer de demo-portemonnee-applicatie volgens de instructies.
- Download een demo-portemonnee-applicatie naar uw Android-apparaat. De broncode is te vinden in de Identity Credentials repository van de OpenWallet Foundation.
- Voer de opdracht
adb install -t <path-to-apk>
uit om de app te installeren.
- Start de IC Wallet- app en stel een demo-mobiel rijbewijs (mDL) in.
- Tik op de menuknop en selecteer Zelfondertekend document toevoegen.
- Navigeer naar https://digital-credentials.dev met Chrome 128 of hoger.
- Druk op Aanvraaggegevens (OpenID4VP).
Bekijk de demo die https://digital-credentials.dev gebruikt, een testwebsite voor ontwikkelaars om referentieverzoeken voor verschillende attributen te genereren:
Zo werkt de demo stap voor stap:
Hoe de API werkt
Digital Credentials API is gebouwd op de basis van de Credential Management API , maar vanuit een onafhankelijk API-oppervlak: navigator.identity
. Door navigator.identity.get()
aan te roepen, kan de website een digitale referentie aanvragen die is opgeslagen in een mobiele portemonnee-app. .
// 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: {...}
}
}],
}
});
Het basis-API-oppervlak is vergelijkbaar met navigator.credentials.get()
, behalve dat het alleen "digital"
inloggegevenstype accepteert. Voeg binnen het digitale referentietype een array providers
toe die IdentityRequestProvider
bevat met de volgende basisparameters:
-
protocol
: Geef een uitwisselingsprotocol op met een tekenreeks. Op het moment dat de proef werd opgestart, was het primaire protocol dat werd ontwikkeld"openid4vp"
. -
request
: Vul de parameters in die digitale portemonnee-apps accepteren voor het opgegeven protocol. Voor"openid4vp"
worden parameters gedefinieerd in OpenID for Verifiable Presentation (OID4VP) voor de W3C Digital Credentials API- specificatie.
Voorbeeldpayload naar het digitale inloggegevenstype met behulp van 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
}
]
}
}],
}
}
}
Met dit verzoek zullen portemonnees met mDL's op het apparaat een verifieerbare set inloggegevens verstrekken die het volgende bevatten:
- Familienaam van de gebruiker.
- Voornaam van de gebruiker.
- Een Booleaanse waarde die aangeeft of de gebruiker ouder is dan 21 jaar of niet.
Hier is een voorbeeld van een antwoordlading:
{
data: '{\n "vp_token": "o2d2ZXJzaW9uYz..."\n}'
id: '',
protocol: 'openid4vp',
type: 'digital'
}
In dit voorbeeld is de referentie opgevraagd met het "openid4vp"
protocol en bevat het antwoord "vp_token"
in de data
eigenschap. Zie OpenID for Verifiable Presentation (OID4VP) voor de W3C Digital Credentials API- specificatie om te leren hoe u het antwoord kunt parseren en de referentie kunt verifiëren.
Digital Credentials API wordt ondersteund in Chrome op Android als origin-proefversie . Chrome op desktop en iOS ondersteunt dit momenteel niet. Voor andere browser-engines worden actieve gesprekken mogelijk gemaakt via de W3C Web Incubator Community Group .
Doe mee aan de herkomstproef
Voor ontwikkeling kunt u de Digital Credentials API lokaal inschakelen door de Chrome-vlag chrome://flags#web-identity-digital-credentials
in Chrome 128 of hoger in te schakelen.
Deze functie is ook beschikbaar als origin-proefversie. Met Origin-proefversies kunt u nieuwe functies uitproberen en feedback geven over de bruikbaarheid, bruikbaarheid en effectiviteit ervan aan de gemeenschap van webstandaarden. Zie Aan de slag met origin-proefversies voor meer informatie. Om u aan te melden voor deze of een andere origin-proef, gaat u naar de registratiepagina .
- Vraag een token aan voor uw herkomst.
- Voeg het token toe aan uw pagina's. Er zijn twee manieren om dat te doen:
- Voeg een
origin-trial
<meta>
-tag toe aan de kop van elke pagina. Dit kan er bijvoorbeeld ongeveer zo uitzien:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- Als u uw server kunt configureren, kunt u het token ook toevoegen met behulp van een
Origin-Trial
HTTP-header. De resulterende antwoordheader zou er ongeveer zo uit moeten zien:Origin-Trial: TOKEN_GOES_HERE.
- Voeg een
Deel feedback
Als u feedback heeft over de Digital Credentials API, kunt u deze indienen bij de speciale Chromium issue tracker .