Neu: Ursprungstest der Digital Credentials API

Ein Ursprungstest für die Digital Credentials API beginnt ab Chrome 128. Die Digital Credentials API ist eine neue Webplattform-API, mit der Websites über digitale Anmeldedaten wie einen Führerschein oder einen in einer digitalen Geldbörse gespeicherten Personalausweis selektiv überprüfbare Informationen über den Nutzer anfordern können.

Hintergrund

Die digitale Identität in der realen Welt wird Wirklichkeit, da viele öffentliche und private Rechtssubjekte damit beginnen, gerätegebundene digitale Anmeldedaten auszustellen. Beispielsweise können jetzt mobile Führerscheine und Ausweise in ausgewählten US-Bundesstaaten wie Arizona, Kalifornien, Colorado, Georgia und Maryland in Apps für digitale Wallets wie Google Wallet auf Mobilgeräten bereitgestellt werden. Außerdem gibt es neue Vorschriften zur Akzeptanz digitaler Anmeldedaten für bestimmte Onlineüberprüfungen. Ein Beispiel hierfür ist eIDAS 2.0.

<ph type="x-smartling-placeholder">
</ph> Digitaler Führerschein in Google Wallet
Mobiler Führerschein in Google Wallet.

Die Funktionen eines digitalen Berechtigungsnachweises hängen von seinem Format ab, obwohl sie in der Regel Folgendes umfassen:

  • Mehr Sicherheit und Datenschutz: Durch fortschrittliche Verschlüsselung und starke Authentifizierungsmethoden sind sensible Daten und der Zugriff sicher. Zum Beispiel wird das Präsentieren eines Berechtigungsnachweises in der Regel hinter einer Nutzerauthentifizierung über die Wallet-App geschützt.
  • Selektive Offenlegung: Solche Parteien können ausgewählte Informationen aus den Anmeldedaten anfordern, damit Nutzer die weitergegebenen Daten auf die für den jeweiligen Anwendungsfall erforderlichen Daten beschränken können. So kann z. B. angegeben werden, ob ein Nutzer über 18 Jahre alt ist, ohne dass sein Geburtsdatum preisgegeben wird.
  • Interoperabilität: Das Ausweisdokument sollte internationalen Standards entsprechen, sodass eine Kompatibilität zwischen verschiedenen Systemen und Ländern ermöglicht und eine grenzüberschreitende Akzeptanz ermöglicht wird.
  • Nachprüfbarkeit: Die freigegebenen Anmeldedaten werden vom Aussteller digital signiert. RP kann diese Signatur verifizieren, um die Authentizität der Daten zu verifizieren.

Wegen digitaler Anmeldedaten“ nachprüfbar sein, könnten sie Anwendungsfälle wie die folgenden ermöglichen:

  • Altersüberprüfung: Fordere eine Altersüberprüfung an, um das Alter einer Person zu bestätigen, bevor Inhalte mit Altersbeschränkung ausgeliefert oder Artikel mit Altersbeschränkung gekauft werden.
  • Identitätsbestätigung: Fordere den Namen und die Adresse an, um die Identität einer Person aus rechtlichen Gründen oder zur Betrugsprävention zu bestätigen.
  • Berechtigungsprüfung:Die Berechtigung einer Person zum Autofahren wird geprüft, z. B. wenn sie ein Auto mieten.

Da Websites zunehmend direkt mit Mobile Wallet-Anwendungen kommunizieren (z. B. über benutzerdefinierte URL-Schemas), um digitale Anmeldedaten für verschiedene Anwendungsfälle anzufordern, sehen Browser eine Möglichkeit, diese Interaktion sicherer, besser vor Missbrauch zu schützen und mithilfe einer speziellen API einfacher zu nutzen.

Einführung der Digital Credentials API

Die Digital Credentials API ist eine neue Webplattform-API, mit der RP-Websites die Präsentation digitaler Anmeldedaten aus Wallet-Apps anfordern können. Die API ist in Chrome ab Chrome 128 als Ursprungstest verfügbar.

Die API ist protokollunabhängig und ermöglicht es dem RP, basierend auf ihren Anforderungen ein Protokoll anzugeben. Wenn ein RP eine Anfrage stellt, sendet der Browser die Anfrage an das mobile Betriebssystem, das in installierten Wallet-Anwendungen nach übereinstimmenden Anmeldedaten sucht. Werden welche gefunden, fordert das mobile Betriebssystem den Nutzer auf, eines auszuwählen, und sendet die Anfrage an das vom Nutzer ausgewählte Wallet. Nach einer lokalen Authentifizierung gibt das Wallet eine Antwort mit den angeforderten Anmeldedaten zurück.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> Diagramm der Kommunikation zwischen Browser, Wallet und vertrauender Partei

Chrome unterstützt zuerst die API in Chrome für Android, um Anmeldedaten von Wallet-Apps auf demselben Gerät anzufordern. Zukünftig planen wir, die Chrome-Desktop-App zu unterstützen, um Anmeldedaten geräteübergreifend von einem anderen Mobilgerät anzufordern.

Bei der Einführung wird Google Wallet in die Digital Credentials API eingebunden werden. So können ausgewählte Unternehmen und Organisationen eine Anfrage an Nutzer stellen, um ihren Ausweis online über Chrome für Android vorzulegen und die Authentizität der übertragenen Daten durch Prüfung der kryptografischen Signatur zu prüfen. Wenn Sie teilnehmen möchten, füllen Sie dieses Formular aus und bestätigen Sie, dass Sie digitale Ausweise von Google Wallet akzeptieren möchten.

Die API wird demnächst auch von Google-Konten verwendet, um die Geburtsdatum. Nutzer in einem unterstützten US-Bundesstaat können ihre State ID oder ihren Führerschein, der in verfügbaren Wallet-Apps (einschließlich Google Wallet) bereitgestellt wird, verwenden, um einfach nur ihr Geburtsdatum mit Google zu teilen, ohne weitere Details ihrer Identität preiszugeben. So können Nutzer Google datenschutzfreundlich nachweisen, dass sie die kontobezogenen Altersvorgaben erfüllen.

Jetzt ausprobieren

So kannst du die Digital Credentials API ausprobieren:

  1. Installieren Sie die Demo-Wallet-App anhand der Anleitung auf dieser Seite.
    • Laden Sie eine Demo-Wallet-App auf Ihr Android-Gerät herunter.
    • Führen Sie den Befehl adb install -t <path-to-apk> aus, um die App zu installieren.
  2. Starte die IC Wallet App und stelle einen mobilen Demo-Führerschein (mDL) bereit.
    • Tippen Sie auf die Menüschaltfläche und wählen Sie Selbst signiertes Dokument hinzufügen aus.
  3. Rufen Sie in Chrome 128 oder höher https://digital-credentials.dev auf.
  4. Klicken Sie auf Anmeldedaten anfordern (OpenID4VP).

Sehen Sie sich die Demo mit https://digital-credentials.dev an. Dabei handelt es sich um eine Testwebsite, auf der Entwickler Anmeldedatenanfragen für verschiedene Attribute generieren können:

So funktioniert die Demo:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 1. Der Nutzer landet auf der Website der vertrauenden Partei und wird aufgefordert, seinen bestätigten Familiennamen, seinen Vornamen sowie ein Altersnachweis von mindestens 21 Jahren vorzulegen.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 2. Der Browser bestätigt, ob der Nutzer beabsichtigt, digitale Anmeldedaten mit dieser Website zu teilen.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 3. Das Betriebssystem zeigt die angeforderten Informationen und geeignete Anmeldedaten an, die mit der Anfrage übereinstimmen, damit der Nutzer die Anfrage auswählen und abschließen kann.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 4. Das Wallet authentifiziert den Nutzer lokal mit der Bildschirmentsperrung.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 5. Der angeforderte digitale Berechtigungsnachweis wird jetzt an die Website der vertrauenden Partei weitergeleitet.

Funktionsweise der API

Die Digital Credentials API basiert auf der Credential Management API, basiert aber auf einer unabhängigen API-Oberfläche: navigator.identity. Durch den Aufruf von navigator.identity.get() kann die Website digitale Berechtigungsnachweise anfordern, die in einer mobilen Wallet-App gespeichert sind. .

// 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: {...}
      }
    }],
  }
});

Die grundlegende API-Oberfläche ähnelt navigator.credentials.get(), nur dass hier nur die Anmeldedaten "digital" akzeptiert werden. Fügen Sie für den Typ des digitalen Ausweisdokuments ein providers-Array hinzu, das IdentityRequestProvider mit den folgenden grundlegenden Parametern enthält:

Beispielnutzlast für den digitalen Berechtigungstyp mit 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
            }
          ]
        }
      }],
    }
  }
}

Mit dieser Anfrage stellen Wallets mit mDLs auf dem Gerät überprüfbare Anmeldedaten bereit, die Folgendes enthalten:

  • Familienname des Nutzers.
  • Vorname des Nutzers.
  • Ein boolescher Wert, der angibt, ob der Nutzer über 21 Jahre alt ist.

Hier ist ein Beispiel für eine Antwortnutzlast:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

In diesem Beispiel wurden die Anmeldedaten mit dem "openid4vp"-Protokoll angefordert und die Antwort enthält "vp_token" im Attribut data. Wie Sie die Antwort parsen und die Anmeldedaten verifizieren, erfahren Sie unter OpenID for Verifier Presentation (OID4VP) for the W3C Digital Credentials API.

Die Digital Credentials API wird in Chrome unter Android als Ursprungstest unterstützt. Chrome für Computer und iOS wird derzeit nicht unterstützt. Bei anderen Browser-Engines werden aktive Unterhaltungen über die W3C Web Incubator Community Group gefördert.

Am Ursprungstest teilnehmen

Für die Entwicklung können Sie die Digital Credentials API lokal aktivieren, indem Sie in Chrome 128 oder höher das Chrome-Flag chrome://flags#web-identity-digital-credentials aktivieren.

Diese Funktion ist auch als Ursprungstest verfügbar. Mit Ursprungstests können Sie neue Funktionen ausprobieren und der Webstandards-Community Feedback zu ihrer Nutzerfreundlichkeit, Funktionalität und Effektivität geben. Weitere Informationen finden Sie unter Erste Schritte mit Ursprungstests. Auf der Registrierungsseite können Sie sich für diesen oder einen anderen Ursprungstest registrieren.

  1. Fordern Sie ein Token für Ihren Ursprung an.
  2. Fügen Sie das Token zu Ihren Seiten hinzu. Dafür gibt es zwei Möglichkeiten: <ph type="x-smartling-placeholder">
      </ph>
    • Fügen Sie im Header jeder Seite ein origin-trial-<meta>-Tag ein. Dies könnte zum Beispiel so aussehen: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Wenn Sie Ihren Server konfigurieren können, haben Sie auch die Möglichkeit, das Token mit einem Origin-Trial-HTTP-Header hinzuzufügen. Der resultierende Antwortheader sollte in etwa so aussehen:Origin-Trial: TOKEN_GOES_HERE.

Feedback geben

Falls du Feedback zur Digital Credentials API hast, kannst du es über den Chromium-Issue Tracker einreichen.