Maak kennis met de proefversie van de Digital Credentials API

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 legitimatiegegevens voor bepaalde online verificaties is in opkomst en eIDAS 2.0 is daar een voorbeeld van.

Mobiel rijbewijs in Google Wallet
Mobiel rijbewijs in Google Wallet.

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.

Diagram van de communicatie tussen de browser, portemonnee en vertrouwende partij.

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. Als u wilt deelnemen, vult u dit formulier in en geeft u aan dat u geïnteresseerd bent in het accepteren van digitale ID's van 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 accountgerelateerde leeftijdsvereisten .

Probeer het eens

Volg de instructies om de Digital Credentials API te proberen:

  1. Installeer de demo-portemonnee-applicatie volgens de instructies die op deze pagina worden beschreven.
  2. Start de IC Wallet -app en stel een demo-mobiel rijbewijs (mDL) in.
    • Tik op de menuknop en selecteer Zelfondertekend document toevoegen.
  3. Navigeer naar https://digital-credentials.dev met Chrome 128 of hoger.
  4. 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:

1. De gebruiker komt terecht op de website van de vertrouwende partij en wordt verzocht zijn geverifieerde achternaam, voornaam en een leeftijdsgarantie van meer dan 21 jaar te overleggen.
2. De browser bevestigt of de gebruiker van plan is digitale gegevens met deze website te delen.
3. Het besturingssysteem geeft de gevraagde informatie weer, samen met de in aanmerking komende referenties die aan het verzoek kunnen voldoen, zodat de gebruiker het verzoek kan selecteren en voltooien.
4. De portemonnee authenticeert de gebruiker lokaal met schermontgrendeling.

5. De gevraagde digitale identificatie wordt nu doorgegeven aan de website van de vertrouwende partij.

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 het type "digital" inloggegevens 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 responslading:

{
  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 .

  1. Vraag een token aan voor uw herkomst.
  2. 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.

Deel feedback

Als u feedback heeft over de Digital Credentials API, kunt u deze indienen bij de speciale Chromium issue tracker .