Digital Credentials API: Sichere und private Identität im Web

Natalia Markoborodova
Natalia Markoborodova

Veröffentlicht: 3. Oktober 2025

Wir freuen uns, Ihnen mitteilen zu können, dass die Digital Credentials API ab Chrome 141 standardmäßig aktiviert ist. Außerdem wird mit iOS 26 Unterstützung für die Digital Credentials API in Chrome und anderen Browsern eingeführt. Diese API bietet ein neues Maß an Sicherheit und Datenschutz für die Identitätsüberprüfung im Web und ermöglicht es Websites, auf standardisierte Weise überprüfbare Informationen von Nutzern anzufordern und zu erhalten.

Nach einem erfolgreichen Origin Trial unterstützt die Digital Credentials API jetzt sowohl die Präsentation von Anmeldedaten auf demselben Gerät unter Android als auch die geräteübergreifende Präsentation in der Desktopversion von Chrome.

Hintergrund

Die Online-Identitätsbestätigung war bisher ein komplexer Prozess, bei dem Nutzer häufig Scans ihrer Ausweise hochladen mussten. Bei dieser Vorgehensweise werden oft mehr Daten als nötig weitergegeben, was bei den Nutzern zu erheblichen Datenschutzbedenken führt. Für Entwickler birgt dies auch Risiken, da sie sicherstellen müssen, dass ihre Lösung in der Lage ist, oft uneinheitliche vertrauliche Daten sicher und datenschutzfreundlich zu verarbeiten und zu speichern.

Gleichzeitig schreiben Verordnungen wie eIDAS 2.0 vor, dass Regierungen der Öffentlichkeit Mittel zur digitalen Identifizierung zur Verfügung stellen müssen. Diese digitalen Identitäts-Wallets müssen verschiedene Anmeldedaten enthalten können, darunter Identitäts- und Altersnachweise. Online-Service-Provider können diese Anmeldedaten anfordern, um die Identität des Nutzers zu bestätigen.

Die Webstandards-Community im W3C hat das Potenzial digitaler Anmeldedaten erkannt, sowohl den Nutzeranforderungen an den Datenschutz als auch den Entwickleranforderungen an die Überprüfung von Nutzerdaten gerecht zu werden, und eine Lösung entwickelt: die Digital Credentials API. Die Digital Credentials API soll dieses Problem beheben, indem sie eine integrierte Schnittstelle zum Überprüfen von Nutzerinformationen einführt. Dadurch werden Sicherheit, Datenschutz und Nutzerfreundlichkeit im Vergleich zu den Alternativen verbessert. Mit dieser API müssen Nutzer keine vertraulichen Dokumente wie Ausweiskopien mehr auf mehrere Websites hochladen. Stattdessen können Websites das Vertrauen ihrer Nutzer gewinnen, indem sie nur die spezifischen, kryptografisch signierten Daten anfordern, die sie von vertrauenswürdigen Ausstellern benötigen.

Wichtige Features

Die Digital Credentials API basiert auf drei Grundprinzipien: Datenschutz, plattformübergreifende Unterstützung und Standardisierung.

Datenschutz

Die Digital Credentials API verbessert den Online-Datenschutz und die Sicherheit. Damit können Nutzer Websites eine digitale ID aus ihren mobilen Wallets präsentieren, um bestimmte Fakten zu bestätigen, ohne die zugrunde liegenden sensiblen Daten offenzulegen. Die API kann beispielsweise bestätigen, dass ein Nutzer über 18 Jahre alt ist, ohne sein vollständiges Geburtsdatum preiszugeben. Dieses Prinzip der „selektiven Offenlegung“ sorgt dafür, dass Websites nur die minimal erforderlichen Informationen erhalten.

Die Digital Credentials API ist auch mit Zero-Knowledge-Beweisen (ZKPs) kompatibel, z. B. mit dem Longfellow-ZK von Google. Dieses Protokoll schützt die Privatsphäre der Nutzer, indem es einen kryptografischen Beweis dafür liefert, dass eine bestimmte Identitätsbehauptung wahr ist, ohne andere Informationen preiszugeben.

Plattformübergreifende Unterstützung

Die Digital Credentials API soll verschiedene Plattformen unterstützen, damit Nutzer bestätigte Informationen geräteübergreifend präsentieren können.

Unter Android:Bietet eine integrierte Benutzeroberfläche, über die Nutzer Anmeldedaten aus ihrer installierten Wallet App auswählen können.

Auf dem Computer:Nutzer können Anmeldedaten aus ihrem mobilen Wallet auf einer Website in ihrem Desktopbrowser präsentieren. Durch das Scannen eines QR-Codes stellt das System eine sichere, Ende-zu-Ende-verschlüsselte und phishingresistente Verbindung zwischen dem Desktop und dem Mobilgerät her. Bei dieser Verbindung wird das CTAP-Protokoll verwendet, um die Nähe des Nutzers über BLE zu überprüfen. So wird sichergestellt, dass er physisch anwesend ist und beide Geräte kontrolliert.

Standardisierung

Interoperabilität ist entscheidend. In Chrome ist die Digital Credentials API protokollplattformunabhängig und mit verschiedenen Präsentationsprotokollen kompatibel, z. B. OpenID4VP und Anhang C von ISO 18013-7. Apple hat außerdem Unterstützung für die Digital Credentials API ab Safari 26.0 eingeführt.

Außerdem basiert die Digital Credentials API auf der integrierten Unterstützung für die Verwaltung von Anmeldedaten in Android und einem wachsenden Ökosystem kompatibler Wallets. Google Wallet ist ein Early Adopter. Samsung Wallet und 1Password werden demnächst ebenfalls unterstützt.

Was hat sich seit dem Ursprungstest geändert?

Wenn Sie an unserem früheren Ursprungstest teilgenommen haben, werden Sie feststellen, dass die Digital Credentials API von navigator.identity.get() zu navigator.credentials.get() verschoben wurde. Damit wird sie an die umfassendere Vereinheitlichung der Identitäten mit der Credential Management API angepasst. Außerdem wurde der Parameter providers in requests und request in data umbenannt.

Implementierung

Die Integration der Digital Credentials API umfasst zwei Hauptschritte: die Erkennung von Funktionen und das Anfordern der Anmeldedaten. Entwickler sollten außerdem eine benutzerdefinierte Logik implementieren, um festzustellen, ob ihre Anwendung die Anmeldedaten verwenden kann.

Funktionserkennung

Bevor Sie die Schaltfläche „Mit digitalem Ausweis bestätigen“ anzeigen, prüfen Sie, ob die Digital Credentials API im Browser des Nutzers verfügbar ist.

if (typeof DigitalCredential !== "undefined") {
  // Digital Credentials API is supported
} else {
  // Digital Credentials API is not supported
}

Anmeldedaten anfordern

Für das Anfordern von Anmeldedaten ist ein Aufruf von navigator.credentials.get() mit einem digital-Parameter erforderlich. Fügen Sie dem digitalen Anmeldedatentyp ein requests-Array hinzu, das DigitalCredentialGetRequest mit den folgenden grundlegenden Parametern enthält:

  • protocol: Geben Sie ein Austauschprotokoll mit einem String an. Beispiel: "openid4vp" oder "org-iso-mdoc". So ermitteln Sie, ob das Protokoll vom Browser unterstützt wird:

    if (DigitalCredential.userAgentAllowsProtocol("example-protocol")) {
        // Create a request with this protocol
      } else {
        // Protocol is not supported
    }
    
  • data: Ein Objekt mit den Parametern, die Digital Wallet-Apps für das angegebene Protokoll akzeptieren. Für "openid4vp" sind Parameter in OpenID for Verifiable Presentation (OID4VP) für die W3C Digital Credentials API-Spezifikation definiert.

    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);
    }
    

Wenn Sie beispielsweise den Familiennamen, den Vornamen und einen booleschen Wert anfordern möchten, der angibt, ob der Nutzer über 21 Jahre alt ist, können Sie die folgende Nutzlast angeben:

{
  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 diesem Beispiel muss client_metadata eine Liste der unterstützten Formate enthalten. In der Spezifikation kannst du nachlesen, welche Werte verwendet werden können. Der optionale jwks-Wert, der in client_metadata festgelegt ist, muss öffentliche Schlüssel enthalten, die für die Verschlüsselung der Antwort verwendet werden. Weitere Beispiele finden Sie auch im Democode.

Hier sehen Sie ein Beispiel für eine verschlüsselte Antwortnutzlast für ein DigitalCredential-Objekt:

{
    // 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 diesem Beispiel fordert das System den Berechtigungsnachweis mit dem openid4vp-v1-unsigned-Protokoll an und die Antwort enthält response im Attribut data.

Die genaue Art und Weise, wie die Antwort geparst wird, hängt vom Protokoll ab. Normalerweise müssen Sie Folgendes tun:

  1. Antwortnutzlast entschlüsseln Die Entschlüsselungsmethode hängt vom verwendeten Protokoll ab. Informationen zum Entschlüsseln der Nutzlast für openid4vp (mit JWE) und org-iso-mdoc (mit Hybrid Public Key Encryption) finden Sie unten.
  2. Signaturen und Aussteller überprüfen Weitere Informationen finden Sie in der Dokumentation zur Online-Akzeptanz digitaler Anmeldedaten.

Codebeispiele für verschiedene Protokolle finden Sie im Code für die Demo oder in der live gehosteten Version.

Vertrauensstellung des Ausstellers prüfen

Die kryptografische Signatur der digitalen Anmeldedaten beweist, dass die Anmeldedaten authentisch sind. Entwickler müssen jedoch überprüfen, ob der Aussteller für ihren jeweiligen Anwendungsfall geeignet und vertrauenswürdig ist. Wenn eine E-Commerce-Website beispielsweise einen Rabatt für Universitätsstudenten gewähren möchte, ist ein von einer akkreditierten Universität ausgestellter Anmeldedatensatz erforderlich. Anmeldedatensätze, die von anderen Stellen signiert wurden, werden abgelehnt. Eine gängige Methode, um das Vertrauen in den Aussteller zu überprüfen, besteht darin, eine Liste der genehmigten Aussteller zu führen und alle Aussteller abzulehnen, die nicht übereinstimmen.

Jetzt starten

Sind Sie bereit? Hier findest du alles, was du dazu wissen musst.

  • Verfügbarkeit:In Chrome 141 oder höher ist die Digital Credentials API standardmäßig auf verschiedenen Plattformen aktiviert.
  • Voraussetzungen:Nutzer benötigen ein kompatibles Gerät, z. B. ein Android-Gerät mit Google Play-Diensten ab Version 24.0 oder ein iOS-Gerät mit Version 26 oder höher. Auf dem Gerät muss eine digitale Wallet-App installiert sein, die die Digital Credentials API unterstützt, z. B. Google Wallet oder ein Demowallet.
  • Demo ausprobieren:Die beste Möglichkeit, die Nutzerfreundlichkeit zu verstehen und Ihre Implementierung zu testen, ist, die Live-Demo unter https://verifier.multipaz.org mit Chrome 141 oder höher auszuprobieren.

Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen:

Feedback geben

Nachdem die Digital Credentials API nun verfügbar ist, möchten wir gern wissen, wie Sie die Entwicklung damit erlebt haben. Reichen Sie ein Problem ein, um Feedback zu geben oder Fehler zu melden.