Gepubliceerd: 3 oktober 2025
We zijn verheugd te kunnen aankondigen dat de Digital Credentials API nu standaard is ingeschakeld in Chrome 141. Daarnaast voegt iOS 26 ondersteuning voor de Digital Credentials API toe aan Chrome en andere browsers. Deze API tilt de beveiliging en privacy van identiteitsverificatie op internet naar een hoger niveau, waardoor websites op een gestandaardiseerde manier verifieerbare informatie van gebruikers kunnen opvragen en ontvangen.
Na een succesvolle proefperiode met Origin ondersteunt de Digital Credentials API nu zowel de presentatie van referenties op hetzelfde apparaat op Android als de presentatie op meerdere apparaten op Chrome voor desktopcomputers.
Achtergrond
Het online verifiëren van identiteiten was tot nu toe een complex proces, waarbij gebruikers vaak scans van hun identiteitsbewijs moesten uploaden. Dit betekent vaak dat er meer gegevens worden gedeeld dan nodig is, wat aanzienlijke privacyproblemen voor de gebruikers oplevert. Voor ontwikkelaars brengt het ook risico's met zich mee, omdat zij ervoor moeten zorgen dat hun oplossing in staat is om vaak niet-uniforme, gevoelige gegevens op een veilige en privacybeschermende manier te verwerken en op te slaan.
Tegelijkertijd verplichten regelgevingen zoals eIDAS 2.0 overheden om digitale identificatiemiddelen aan het publiek te verstrekken. Deze digitale identiteitswallets moeten verschillende gegevens kunnen bevatten, waaronder bewijs van identiteit en leeftijd. Online dienstverleners kunnen deze gegevens opvragen om de identiteit van gebruikers te verifiëren.
De webstandaardengemeenschap binnen het W3C erkent het potentieel van digitale referenties om zowel te voldoen aan de privacybehoeften van gebruikers als aan de behoefte van ontwikkelaars om gebruikersgegevens te verifiëren. Daarom heeft ze een oplossing ontwikkeld: de Digital Credentials API . De Digital Credentials API wil dit probleem aanpakken door een ingebouwde interface te introduceren voor het verifiëren van gebruikersgegevens. Deze interface verbetert de beveiliging, privacy en gebruikerservaring ten opzichte van alternatieven. Met deze API hoeven gebruikers geen gevoelige documenten zoals ID-scans meer naar meerdere websites te uploaden. Websites kunnen in plaats daarvan vertrouwen opbouwen bij hun gebruikers door alleen de specifieke, cryptografisch ondertekende gegevens op te vragen die ze nodig hebben van vertrouwde uitgevers.
Kernfuncties
De Digital Credentials API is gebaseerd op drie kernprincipes: privacy, platformonafhankelijke ondersteuning en standaardisatie.
Privacy
De Digital Credentials API verbetert online privacy en veiligheid. Hiermee kunnen gebruikers een digitale ID uit hun mobiele wallet aan websites tonen om specifieke feiten te verifiëren zonder de onderliggende gevoelige gegevens prijs te geven. De API kan bijvoorbeeld verifiëren of een gebruiker ouder is dan 18 jaar zonder zijn of haar volledige geboortedatum prijs te geven. Dit principe van "selectieve openbaarmaking" zorgt ervoor dat websites alleen de minimaal noodzakelijke informatie ontvangen.
De Digital Credentials API is ook compatibel met Zero Knowledge Proofs (ZKPs) -protocollen, zoals Longfellow ZK van Google, dat de privacy van de gebruiker waarborgt door een cryptografisch bewijs te retourneren dat een bepaalde identiteitsverklaring waar is, zonder andere informatie te onthullen.
Ondersteuning voor meerdere platforms
De Digital Credentials API is bedoeld om verschillende platforms te ondersteunen, zodat gebruikers eenvoudig geverifieerde informatie op verschillende apparaten kunnen presenteren.
Op Android: biedt een ingebouwde gebruikersinterface waarmee gebruikers inloggegevens kunnen selecteren uit hun geïnstalleerde portemonnee-app.
Op de desktop: Gebruikers kunnen inloggegevens van hun mobiele portemonnee tonen op een website in hun desktopbrowser. Door een QR-code te scannen, brengt het systeem een veilige, end-to-end versleutelde en phishingbestendige verbinding tot stand tussen de desktop en het mobiele apparaat. Deze verbinding maakt gebruik van het CTAP-protocol om de nabijheid van de gebruiker via BLE te verifiëren, zodat wordt gewaarborgd dat de gebruiker fysiek aanwezig is en beide apparaten onder controle heeft.
Standaardisatie
Interoperabiliteit is essentieel. In Chrome is de Digital Credentials API protocolplatformonafhankelijk en compatibel met diverse presentatieprotocollen, zoals OpenID4VP en Annex C van ISO 18013-7 . Apple heeft ook ondersteuning voor de Digital Credentials API geïntroduceerd vanaf Safari 26.0.
Bovendien bouwt de Digital Credentials API voort op de ingebouwde ondersteuning voor referentiebeheer in Android en een groeiend ecosysteem van compatibele wallets. Google Wallet is een early adopter en ondersteuning van Samsung Wallet en 1Password is in aantocht.
Wat is er nieuw sinds de Origin-proefperiode?
Voor degenen die deelnamen aan onze eerdere Origin-proef : de Digital Credentials API is verplaatst van navigator.identity.get()
naar navigator.credentials.get()
, waarmee deze is afgestemd op de bredere inspanningen voor identiteitsunificatie met de Credential Management API . Daarnaast is de parameter providers
hernoemd naar requests
' en request
naar data
'.
Uitvoering
Het integreren van de Digital Credentials API omvat twee belangrijke stappen: het detecteren van functies en het aanvragen van de referentie. Ontwikkelaars moeten ook aangepaste logica implementeren om te bepalen of hun applicatie de referenties kan gebruiken.
Functiedetectie
Voordat u de knop 'Verifiëren met digitale referentie' weergeeft, controleert u of de API voor digitale referenties beschikbaar is in de browser van de gebruiker.
if (typeof DigitalCredential !== "undefined") {
// Digital Credentials API is supported
} else {
// Digital Credentials API is not supported
}
Vraag een referentie aan
Het aanvragen van een referentie vereist een aanroep van navigator.credentials.get()
met een digital
parameter. Voeg binnen het type digitale referentie een requests
array toe die DigitalCredentialGetRequest bevat met de volgende basisparameters:
protocol
: Specificeer een uitwisselingsprotocol met een tekenreeks. Bijvoorbeeld"openid4vp"
of"org-iso-mdoc"
. Controleer als volgt of het protocol door de browser wordt ondersteund:if (DigitalCredential.userAgentAllowsProtocol("example-protocol")) { // Create a request with this protocol } else { // Protocol is not supported }
data
: Een object met de parameters 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.try { const digitalCredential = await navigator.credentials.get({ digital: { requests: [{ protocol: "openid4vp-v1-unsigned", data: { response_type: "vp_token", nonce: "[some-nonce]", client_metadata: {...}, dcql_query: {...} } }] } }); // Decrypt payload respons and verify credentials on the backend const response = await fetch("/verify", { method: "POST", body: JSON.stringify(digitalCredential.data), headers: { 'Content-Type': 'application/json' } }); } catch (e) { // Handle errors, such as the user canceling the request console.error(e); }
Als u bijvoorbeeld de achternaam, voornaam en een Booleaanse waarde van een gebruiker wilt opvragen die aangeeft of de gebruiker ouder is dan 21 jaar, kunt u de volgende payload opgeven:
{
protocol: 'openid4vp-v1-unsigned',
data: {
response_type: 'vp_token',
nonce: '[some-nonce]',
// Contains the Verifier metadata values, including supported credential formats and response encryption public key
client_metadata: {
// Supported credential formats. Refer to the documentation for specific values
vp_formats_supported: {...},
// Public key(s). Refer to the documentation for more detail.
jwks: {...}
},
dcql_query: {
// A wallet will try to find credentials it holds that match these definitions.
credentials: [
{
// A locally unique identifier for this credential definition within the query.
id: "cred_vc",
format: "dc+sd-jwt",
meta: {
// 'vct_values' specifies the Verifiable Credential allowed type.
// In this case, it's a European Digital Identity (EUDI) Personal Identification Data (PID) credential.
vct_values: [
"urn:eudi:pid:1"
]
},
// 'claims' is an array of specific data that's being requested.
claims: [
{
// The path ["age_equal_or_over", "18"] corresponds to accessing `credential.age_equal_or_over['18']`.
path: [
"age_equal_or_over",
"18"
]
}
]
}
]
}
}
}
In dit voorbeeld moet client_metadata
een lijst met ondersteunde formaten specificeren. Raadpleeg de specificatie om te zien welke waarden gebruikt kunnen worden. De optionele jwks
waarde die in client_metadata
is ingesteld, moet openbare sleutels bevatten die worden gebruikt voor de encryptie van de respons. U kunt ook de democode bekijken voor meer voorbeelden.
Hier is een voorbeeld van een gecodeerde responslading van een DigitalCredential -object:
{
// This is an example for a response using an OpenID4VP protocol.
// The format of the 'data' object will differ for other protocols.
"protocol": "openid4vp-v1-unsigned",
"data": {
// To decrypt this JWE payload, use the private key.
// The decrypted payload will be a JSON object containing the
// Verifiable Presentation in the 'vp_token' claim.
"response": "[jwe-token]"
}
}
In dit voorbeeld vraagt het systeem de referentie aan met het protocol openid4vp-v1-unsigned
en het antwoord bevat response
in de data
eigenschap.
De exacte manier om de respons te parseren, hangt af van het protocol. Normaal gesproken moet u het volgende doen:
- Decrypteer de responspayload . De decryptiemethode is afhankelijk van het gebruikte protocol. Zie hoe u de payload voor
openid4vp
(met JWE) enorg-iso-mdoc
(met Hybrid Public Key Encryption) kunt decrypteren. - Controleer de handtekeningen en de uitgever . Zie de documentatie 'Online acceptatie van digitale referenties' voor meer informatie.
Voor codevoorbeelden voor verschillende protocollen kunt u de code voor de demo of de live gehoste versie bekijken.
Controleer het vertrouwen in de uitgever
De cryptografische handtekening van de digitale referenties bewijst dat de referentie authentiek is. Ontwikkelaars moeten echter verifiëren of de uitgever geschikt en betrouwbaar is voor hun specifieke toepassing. Om bijvoorbeeld een studentenkorting te verlenen, zou een webshop een referentie nodig hebben die is uitgegeven door een geaccrediteerde universiteit en referenties die door andere instanties zijn ondertekend, afwijzen. Een gebruikelijke manier om het vertrouwen in de uitgever te verifiëren, is door een lijst met goedgekeurde uitgevers bij te houden en elke uitgever die niet overeenkomt, af te wijzen.
Aan de slag
Klaar om te beginnen met bouwen? Dit is wat je moet weten.
- Beschikbaarheid: Chrome 141 of nieuwer schakelt de Digital Credentials API standaard in op verschillende platforms.
- Vereisten: Gebruikers hebben een compatibel apparaat nodig, bijvoorbeeld Android met Google Play Services versie 24.0 of hoger, of een iOS-apparaat met versie 26 of hoger. Het apparaat moet een digitale portemonnee-app hebben die de Digital Credentials API ondersteunt, bijvoorbeeld Google Wallet of een demo-wallet .
- Probeer de demo: de beste manier om de gebruikerservaring te begrijpen en uw implementatie te testen, is door de live demo op https://verifier.multipaz.org te proberen met Chrome 141 of nieuwer.
Bronnen
Voor meer informatie kunt u de volgende bronnen raadplegen:
- Ontwikkelaarshandleiding: API voor digitale referenties
- Specificatie: W3C Digitale Referenties
- Android-ondersteuning: Android-ondersteuning van digitale referenties
Deel uw feedback
Nu de Digital Credentials API beschikbaar is, horen we graag over uw ervaringen met de ontwikkeling ervan. Meld een probleem om uw feedback te delen of bugs te melden.