Neu: Ursprungstest der Digital Credentials API

Veröffentlicht: 4. September 2024

Ab Chrome 128 wird ein Ursprungstest für die Digital Credentials API durchgeführt. Die Digital Credentials API ist eine neue Webplattform-API, mit der Websites selektiv über digitale Anmeldedaten wie einen Führerschein oder eine in einem digitalen Wallet gespeicherte Personalausweisnummer überprüfbare Informationen über den Nutzer anfordern können.

Hintergrund

Die digitale Identität in der realen Welt wird immer realer, da viele öffentliche und private Organisationen damit beginnen, gerätegebundene digitale Anmeldedaten auszustellen. So können beispielsweise mobile Führerscheine und Ausweise in ausgewählten US-Bundesstaaten wie Arizona, Kalifornien, Colorado, Georgia und Maryland jetzt in digitalen Wallet-Apps wie Google Wallet auf Mobilgeräten bereitgestellt werden. Es gibt auch Vorschriften zur Akzeptanz digitaler Anmeldedaten für bestimmte Onlineüberprüfungen. eIDAS 2.0 ist ein Beispiel dafür.

Digitaler Führerschein in Google Wallet
Digitaler Führerschein in Google Wallet.

Die Funktionen digitaler Anmeldedaten hängen vom Format ab, umfassen aber in der Regel Folgendes:

  • Erhöhte Sicherheit und Datenschutz: Durch die Verwendung erweiterter Verschlüsselungs- und starker Authentifizierungsmethoden werden vertrauliche Daten geschützt und ein sicherer Zugriff gewährleistet. Die Vorlage von Anmeldedaten ist beispielsweise in der Regel durch eine Nutzerauthentifizierung über die Wallet-App geschützt.
  • Selektive Offenlegung: Treuhänder (RP) können ausgewählte Informationen aus den Anmeldedaten anfordern. So können Nutzer die freigegebenen Daten auf das beschränken, was für den Anwendungsfall erforderlich ist. So kann beispielsweise geteilt werden, ob ein Nutzer älter als 18 Jahre ist, ohne dass sein Geburtsdatum offengelegt wird.
  • Interoperabilität: Die Anmeldedaten müssen internationalen Standards entsprechen, um die Kompatibilität mit verschiedenen Systemen und Ländern zu ermöglichen und die grenzüberschreitende Akzeptanz zu erleichtern.
  • Überprüfbarkeit: Die freigegebenen Anmeldedaten werden vom Aussteller digital signiert. Der RP kann diese Signatur prüfen, um die Authentizität der Daten zu überprüfen.

Aufgrund der überprüfbaren Natur digitaler Anmeldedaten können sie Anwendungsfälle wie die folgenden ermöglichen:

  • Altersüberprüfung: Fordere die Altersüberprüfung einer Person an, bevor ihr altersbeschränkte Inhalte angezeigt oder altersbeschränkte Artikel verkauft werden.
  • Identitätsbestätigung: Fordere den Namen und die Adresse an, um die Identität einer Person in Bezug auf die Einhaltung gesetzlicher Vorschriften oder zur Betrugsprävention zu bestätigen.
  • Prüfung der Fahrberechtigung: Überprüfe, ob eine Person ein Auto fahren darf (z. B. bei Verleih eines Autos).

Da Websites direkt mit mobilen Wallet-Anwendungen kommunizieren (z. B. über benutzerdefinierte URL-Schemata), um digitale Anmeldedaten für verschiedene Anwendungsfälle anzufordern, sehen Browser die Möglichkeit, diese Interaktion über eine speziell entwickelte API sicherer, missbrauchssicherer und einfacher zu gestalten.

Die Digital Credentials API

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

Die API ist protokollunabhängig, sodass der RP ein Protokoll entsprechend seinen Anforderungen angeben kann. Wenn ein RP eine Anfrage stellt, sendet der Browser die Anfrage an das mobile Betriebssystem, das in installierten Wallet-Anwendungen nach entsprechenden Anmeldedaten sucht. Wenn eine gefunden wird, wird der Nutzer vom mobilen Betriebssystem aufgefordert, eine auszuwählen, und die Anfrage wird an das vom Nutzer ausgewählte Wallet gesendet. Nach einer lokalen Authentifizierung gibt das Wallet eine Antwort mit den angeforderten Anmeldedaten zurück.

Diagramm der Kommunikation zwischen dem Browser, der Wallet und der vertrauenden Seite.

Chrome unterstützt die API zuerst in Chrome für Android, um Anmeldedaten von Wallet-Apps auf demselben Gerät anzufordern. In Zukunft soll es möglich sein, in Chrome für Desktop-Computer geräteübergreifend Anmeldedaten von einem anderen Mobilgerät anzufordern.

Bei der Einführung wird Google Wallet in die Digital Credentials API eingebunden. So können ausgewählte Unternehmen und Organisationen Nutzer bitten, ihren Ausweis online über Chrome auf Android-Geräten vorzulegen, und die Authentizität der übertragenen Daten anhand der kryptografischen Signatur überprüfen. Wenn Sie an der Betaversion teilnehmen möchten, füllen Sie dieses Formular aus.

Die API wird bald auch von Google-Konten verwendet, um das Geburtsdatum bestimmter Nutzer zu bestätigen. Nutzer, die in einem unterstützten US-Bundesstaat ansässig sind, können ihre State ID oder ihren Führerschein, die in verfügbaren Wallet-Apps (einschließlich Google Wallet) hinterlegt sind, verwenden, um nur ihr Geburtsdatum mit Google zu teilen, ohne andere Details ihrer Identität preiszugeben. So können Nutzer Google auf datenschutzfreundliche Weise nachweisen, dass sie die Mindestaltersanforderungen für ein Konto erfüllen.

Jetzt ausprobieren

Anforderungen:

  • Google Play-Dienste 23.40 oder höher
  • Chrome 128 oder höher
  • Aktivieren Sie das Flag bei chrome://flags#web-identity-digital-credentials.

So testen Sie die Digital Credentials API:

  1. Installieren Sie die Demo-Wallet-Anwendung gemäß der Anleitung.
  2. Starten Sie die IC Wallet App und stellen Sie einen Demo-digitalen Führerschein bereit.
    • Tippen Sie auf die Menüschaltfläche und wählen Sie Eigenhändig unterzeichnetes Dokument hinzufügen aus.
  3. Rufen Sie mit Chrome 128 oder höher https://digital-credentials.dev auf.
  4. Drücken Sie Anmeldedaten anfordern (OpenID4VP).

Sehen Sie sich die Demo an, die https://digital-credentials.dev verwendet, eine Testwebsite für Entwickler, auf der Anmeldedatenanfragen für verschiedene Attribute generiert werden können:

So funktioniert die Demo Schritt für Schritt:

1. Der Nutzer wird auf die Website der vertrauenden Partei weitergeleitet und aufgefordert, seinen bestätigten Nachnamen, seinen Vornamen und eine Altersbestätigung über 21 Jahre vorzulegen.
2. Der Browser bestätigt, ob der Nutzer digitale Anmeldedaten für diese Website freigeben möchte.
3. Das Betriebssystem zeigt die angeforderten Informationen und geeignete Anmeldedaten an, die der Nutzer auswählen und die Anfrage abschließen kann.
4. Die Brieftasche authentifiziert den Nutzer lokal über die Displaysperre.

5. Die angeforderten digitalen Anmeldedaten werden jetzt an die Website der vertrauenden Partei übergeben.

Funktionsweise der API

Die Digital Credentials API basiert auf der Credential Management API, aber auf einer unabhängigen API-Oberfläche: navigator.identity. Durch Aufrufen von navigator.identity.get() kann die Website einen digitalen Anmeldedatensatz anfordern, der in einer mobilen Wallet-App gespeichert ist.

// 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(), mit der Ausnahme, dass nur der Anmeldedatentyp "digital" akzeptiert wird. Fügen Sie dem Typ der digitalen Anmeldedaten ein providers-Array mit IdentityRequestProvider mit den folgenden grundlegenden Parametern hinzu:

  • protocol: Geben Sie ein Austauschprotokoll mit einem String an. Zum Zeitpunkt des Ursprungstests wird das primäre Protokoll "openid4vp" entwickelt.
  • request: Geben Sie die Parameter ein, die von Digital Wallet-Apps für das angegebene Protokoll akzeptiert werden. Für "openid4vp" sind Parameter in der OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API-Spezifikation definiert.

Beispielnutzlast für den Typ „Digitaler Anmeldedatensatz“ 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
            }
          ]
        }
      }],
    }
  }
}

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

  • Der Nachname des Nutzers.
  • Vorname des Nutzers.
  • Ein boolescher Wert, der angibt, ob der Nutzer älter als 21 Jahre ist.

Hier ist ein Beispiel für eine Antwortnutzlast:

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

In diesem Beispiel wurde der Anmeldedatensatz mit dem "openid4vp"-Protokoll angefordert und die Antwort enthält "vp_token" im Attribut data. Weitere Informationen zum Parsen der Antwort und zum Verifizieren der Anmeldedaten finden Sie in der Spezifikation OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API.

Die Digital Credentials API wird in Chrome für Android als Ursprungstest unterstützt. In Chrome auf dem Computer und in iOS wird die Funktion derzeit nicht unterstützt. Für andere Browser-Engines werden aktive Unterhaltungen über die W3C Web Incubator Community Group ermöglicht.

Am Ursprungstest teilnehmen

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

Diese Funktion ist auch als Test für den Ursprung verfügbar. Mit Ursprungstests können Sie neue Funktionen ausprobieren und der Webstandards-Community Feedback zu ihrer Nutzerfreundlichkeit, Praktikabilität und Effektivität geben. Weitere Informationen finden Sie im Hilfeartikel Erste Schritte mit Ursprungstests. Wenn du dich für diesen oder einen anderen Test registrieren möchtest, rufe die Registrierungsseite auf.

  1. Fordere ein Token für deinen Ursprung an.
  2. Fügen Sie das Token Ihren Seiten hinzu. Dafür gibt es zwei Möglichkeiten:
    • Fügen Sie dem Header jeder Seite ein origin-trial <meta>-Tag hinzu. Das könnte beispielsweise so aussehen: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Wenn Sie Ihren Server konfigurieren können, können Sie das Token auch über einen Origin-Trial-HTTP-Header hinzufügen. Der resultierende Antwortheader sollte in etwa so aussehen:Origin-Trial: TOKEN_GOES_HERE.

Feedback geben

Wenn Sie Feedback zur Digital Credentials API haben, reichen Sie es im Chromium-Problem-Tracker ein.