Gepubliceerd: 3 oktober 2025
We zijn verheugd aan te kondigen dat de Digital Credentials API nu standaard is ingeschakeld vanaf Chrome 141. Daarnaast biedt iOS 26 ondersteuning voor de Digital Credentials API in Chrome en andere browsers. Deze API brengt een nieuw niveau van beveiliging en privacy naar identiteitsverificatie op het web, waardoor websites op een gestandaardiseerde manier verifieerbare informatie van gebruikers kunnen opvragen en ontvangen.
Na een succesvolle Origin-test ondersteunt de Digital Credentials API nu zowel het tonen van inloggegevens op hetzelfde apparaat op Android als het tonen van inloggegevens op verschillende apparaten in Chrome op desktops.
Achtergrond
Het online verifiëren van een identiteit is tot nu toe een complex proces geweest, waarbij gebruikers vaak scans van hun identiteitsbewijs moesten uploaden. Deze praktijk betekent vaak dat er meer gegevens worden gedeeld dan nodig is, wat aanzienlijke privacyproblemen voor de gebruikers met zich meebrengt. Ook voor ontwikkelaars brengt het 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 privacyvriendelijke manier te verwerken en op te slaan.
Tegelijkertijd schrijven regelgevingen zoals eIDAS 2.0 voor dat overheden digitale identificatiemiddelen aan het publiek moeten aanbieden. Deze digitale identiteitsportefeuilles moeten verschillende gegevens kunnen bevatten, waaronder een identiteitsbewijs en een bewijs van leeftijd. Aanbieders van online diensten kunnen deze gegevens opvragen om de identiteit van de gebruiker te verifiëren.
De W3C-webstandaardengemeenschap erkende 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, en ontwikkelde daarom een oplossing: de Digital Credentials API . De Digital Credentials API pakt dit probleem aan door een ingebouwde interface te introduceren voor het verifiëren van gebruikersinformatie, wat de beveiliging, privacy en gebruikerservaring verbetert ten opzichte van alternatieven. Met deze API hoeven gebruikers geen gevoelige documenten zoals scans van identiteitsbewijzen meer te uploaden naar meerdere websites. 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.
Kernkenmerken
De Digital Credentials API is gebouwd op drie kernprincipes: privacy, platformonafhankelijke ondersteuning en standaardisatie.
Privacy
De Digital Credentials API verbetert de online privacy en beveiliging. Gebruikers kunnen hiermee een digitale identiteitskaart uit hun mobiele portemonnee aan websites tonen om specifieke gegevens te verifiëren zonder de onderliggende gevoelige informatie prijs te geven. De API kan bijvoorbeeld verifiëren of een gebruiker ouder is dan 18 jaar, zonder de volledige geboortedatum te onthullen. 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 (ZKP) -protocollen, zoals Google's Longfellow ZK, die de privacy van de gebruiker waarborgen door een cryptografisch bewijs te leveren dat een bepaalde identiteitsbewering waar is, zonder verdere informatie prijs te geven.
Ondersteuning voor meerdere platforms
De Digital Credentials API is bedoeld om verschillende platformen te ondersteunen, zodat gebruikers geverifieerde informatie gemakkelijk op verschillende apparaten kunnen presenteren.
Op Android: Biedt een ingebouwde gebruikersinterface waarmee gebruikers inloggegevens kunnen selecteren uit hun geïnstalleerde wallet-app.
Op de desktop: Gebruikers kunnen inloggegevens van hun mobiele portemonnee invoeren op een website in hun desktopbrowser. Door een QR-code te scannen, legt 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 zeker is dat de gebruiker fysiek aanwezig is en de controle heeft over beide apparaten.
Standaardisatie
Interoperabiliteit is essentieel. In Chrome is de Digital Credentials API platformonafhankelijk en compatibel met diverse presentatieprotocollen, zoals OpenID4VP en Annex C van ISO 18013-7 . Apple biedt vanaf Safari 26.0 ook ondersteuning voor de Digital Credentials API .
Daarnaast bouwt de Digital Credentials API voort op de ingebouwde ondersteuning voor credentialbeheer in Android en een groeiend ecosysteem van compatibele wallets. Google Wallet is een van de eerste gebruikers, en ondersteuning van Samsung Wallet en 1Password volgt binnenkort.
Wat is er nieuw sinds het Origin-proces?
Voor degenen die hebben deelgenomen aan onze eerdere Origin-test , is het opvallend dat de Digital Credentials API is verplaatst van navigator.identity.get() naar navigator.credentials.get() , waarmee deze in lijn is gebracht met de bredere inspanningen voor identiteitsuniformering 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 hoofdstappen: het detecteren van kenmerken en het aanvragen van de authenticatiegegevens. Ontwikkelaars moeten ook aangepaste logica implementeren om te bepalen of hun applicatie de authenticatiegegevens mag gebruiken.
Kenmerkdetectie
Voordat u een knop 'Verifiëren met digitale referenties' 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 toegangsbewijs aan
Het opvragen van een authenticatiebewijs gebeurt door een aanroep naar navigator.credentials.get() met een digital parameter. Voeg binnen het type digitale authenticatiebewijs een array requests toe die 'DigitalCredentialGetRequest' bevat met de volgende basisparameters:
protocol: Specificeer een uitwisselingsprotocol met een tekenreeks. Bijvoorbeeld"openid4vp"of"org-iso-mdoc". Controleer of het protocol door de browser wordt ondersteund als volgt: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"zijn de 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); }
Om bijvoorbeeld de achternaam, voornaam en een booleaanse waarde die aangeeft of een gebruiker ouder is dan 21 jaar op te vragen, kunt u de volgende payload specificeren:
{
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 de client_metadata een lijst met ondersteunde formaten bevatten. Raadpleeg de specificatie om te zien welke waarden gebruikt kunnen worden. De optionele jwks waarde in client_metadata moet de openbare sleutels bevatten die gebruikt worden voor de versleuteling van het antwoord. U kunt ook de democode bekijken voor meer voorbeelden.
Hier is een voorbeeld van de versleutelde respons-payload 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 inloggegevens op met het openid4vp-v1-unsigned protocol en het antwoord bevat de response data .
De exacte manier om het antwoord te parsen hangt af van het protocol. Normaal gesproken moet je het volgende doen:
- Ontsleutel de payload van het antwoord . De ontsleutelingsmethode is afhankelijk van het gebruikte protocol. Zie hoe u de payload kunt ontsleutelen voor
openid4vp(met JWE) enorg-iso-mdoc(met hybride publieke sleutelversleuteling). - Controleer de handtekeningen en de uitgever . Zie voor meer informatie de documentatie over online acceptatie van digitale referenties .
Voor codevoorbeelden van verschillende protocollen kunt u de code van de demo of de live gehoste versie bekijken.
Controleer of u vertrouwen hebt in de uitgever.
De cryptografische handtekening van de digitale legitimatie bewijst de authenticiteit ervan. Ontwikkelaars moeten echter controleren of de uitgever geschikt en betrouwbaar is voor hun specifieke toepassing. Om bijvoorbeeld studentenkorting te verlenen, vereist een e-commercewebsite een legitimatie die is uitgegeven door een geaccrediteerde universiteit en wordt een legitimatie die is ondertekend door een andere instantie afgewezen. Een gebruikelijke manier om de betrouwbaarheid van de uitgever te controleren, is door een lijst met goedgekeurde uitgevers bij te houden en elke uitgever die niet op die lijst staat, af te wijzen.
Aan de slag
Klaar om te beginnen met bouwen? Dit is wat je moet weten.
- Beschikbaarheid: Chrome 141 of nieuwer maakt de Digital Credentials API standaard beschikbaar op verschillende platformen.
- Vereisten: Gebruikers hebben een compatibel apparaat nodig, bijvoorbeeld een Android-apparaat met Google Play Services versie 24.0 of hoger, of een iOS-apparaat met versie 26 of later. Op het apparaat moet een digitale portemonnee-app geïnstalleerd zijn 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 te proberen op https://verifier.multipaz.org met Chrome 141 of nieuwer.
Bronnen
Raadpleeg de volgende bronnen voor meer informatie:
- Ontwikkelaarshandleiding: API voor digitale referenties
- Specificatie: W3C digitale referenties
- Android-ondersteuning: Android-ondersteuning voor digitale referenties
Deel je feedback
Nu de Digital Credentials API beschikbaar is, horen we graag hoe u deze hebt gebruikt bij het ontwikkelen ermee. Dien een issue in om uw feedback te delen of eventuele bugs te melden.