OpenEUDI-SDK-Schnellstart: Ihre erste Verifizierung in 5 Minuten

Eine Schritt-für-Schritt-Anleitung, um das OpenEUDI SDK zu installieren, eine Verifizierungssitzung zu erstellen und das Ergebnis zu verarbeiten - alles in weniger als 5 Minuten im DEMO-Modus.

eIDAS Pro Team
24. März 2026
6 Min. Lesezeit

Voraussetzungen

  • Node.js 20+ installiert
  • TypeScript-Projekt (oder JavaScript mit ESM)
  • Ein Terminal und Ihr bevorzugter Editor

Das ist alles. Keine API-Schlüssel, keine Registrierung, kein WRPAC-Zertifikat. Der DEMO-Modus funktioniert sofort.

Schritt 1: installieren

npm install @openeudi/core

Oder mit Ihrem bevorzugten Paketmanager:

pnpm add @openeudi/core
yarn add @openeudi/core

Schritt 2: einen Verifier erstellen

import { VerificationService, DemoMode, InMemorySessionStore } from '@openeudi/core';
const service = new VerificationService({
  mode: new DemoMode(),
  store: new InMemorySessionStore(),
});

Der mode-Parameter steuert das Verhalten des SDK:

ModusVerhaltenAnwendungsfall
new DemoMode()Schließt nach 3 Sekunden automatisch abShowcases, Vertrieb-Demos, Landingpages
new MockMode()Simuliert Wallet-Antworten mit konfigurierbaren DatenIntegrationstests, CI/CD-Pipelines
new ProductionMode(config)Reale EUDI-Wallet-VerifikationLive-Verifikationen (erfordert WRPAC, Dez. 2026+)

Schritt 3: eine Verifizierungssitzung erstellen

const session = await service.createSession({ type: 'AGE' });

// session.qrCodeUrl enthält eine Data-URL für das QR-Code-Bild
// session.sessionId ist die eindeutige Sitzungs-ID
// session.deepLink ist für Mobile-to-Mobile-Abläufe gedacht

Der Sitzungstyp AGE aktiviert altersbezogene, datenschutzorientierte boolesche Attribute. Sie bekommen eine Ja/Nein-Antwort, niemals rohe personenbezogene Daten.

AttributRückgabeBeschreibung
age_over_18BooleschIst der Nutzer 18 oder älter?
age_over_21BooleschIst der Nutzer 21 oder älter?
age_over_16BooleschIst der Nutzer 16 oder älter?
age_over_14BooleschIst der Nutzer 14 oder älter?

Länderspezifische Regeln (welche Länder erlaubt sind) werden in den Merchant-Einstellungen als Whitelist oder Blacklist konfiguriert. Das SDK setzt diese Regeln automatisch durch, ohne personenbezogene Daten vom Nutzer anzufordern.

Hinweis: Im DEMO-Modus liefern Attribute synthetische Daten. Im PRODUCTION-Modus beweist das Wallet den Bool-Wert kryptografisch, ohne das zugrunde liegende Geburtsdatum preiszugeben.

Schritt 4: den QR-Code anzeigen

Die Sitzung enthält einen QR-Code, den der Nutzer mit seiner EUDI-Wallet-App scannt.

// Im Web-Kontext
const img = document.createElement('img');
img.src = session.qrCodeUrl;
document.getElementById('qr-container').appendChild(img);

// In React
function VerificationQR({ session }) {
  return <img src={session.qrCodeUrl} alt="Mit Ihrem EUDI-Wallet scannen" />;
}

// In Next.js (mit next/image)
import Image from 'next/image';
function VerificationQR({ session }) {
  return <Image src={session.qrCodeUrl} alt="Mit Ihrem EUDI-Wallet scannen" width={256} height={256} />;
}

Schritt 5: auf das Ergebnis warten

// Event-basierte API (für Web-Apps empfohlen)
service.on('verified', (result) => {
  console.log('Verifizierung erfolgreich!');
  console.log('Verifiziert:', result.verified);     // true
  console.log('Land erlaubt:', result.countryAllowed); // true (gemäß Ihrer Whitelist)
  console.log('Session-ID:', result.sessionId);
  console.log('Zeitstempel:', result.verifiedAt);
});

service.on('failed', (error) => {
  console.log('Verifizierung fehlgeschlagen:', error.reason);
  // 'timeout' | 'rejected' | 'invalid_credential' | 'network_error'
});

service.on('expired', () => {
  console.log('Session abgelaufen - neuen QR-Code generieren');
});

Oder über die Promise-basierte API:

try {
  const result = await session.waitForResult({ timeout: 120000 }); // 2 Minuten Timeout
  console.log('Verifiziert:', result.verified);
} catch (error) {
  console.log('Fehlgeschlagen oder Timeout:', error.reason);
}

Vollständiges Beispiel: Express.js-API-Route

import express from 'express';
import { VerificationService, DemoMode, InMemorySessionStore } from '@openeudi/core';
const service = new VerificationService({
  mode: new DemoMode(),
  store: new InMemorySessionStore(),
});

const app = express();

// Neue Verifizierungssitzung erstellen
app.post('/api/verify', async (req, res) => {
  const session = await service.createSession({ type: 'AGE' });

  res.json({
    sessionId: session.sessionId,
    qrCodeUrl: session.qrCodeUrl,
  });
});

// Sitzungsstatus abrufen (oder SSE für Echtzeit nutzen)
app.get('/api/verify/:sessionId', async (req, res) => {
  const status = await service.getSessionStatus(req.params.sessionId);
  res.json(status);
});

// SSE-Endpunkt für Echtzeit-Updates
app.get('/api/verify/:sessionId/events', (req, res) => {
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');

  service.on('verified', (result) => {
    res.write(`data: ${JSON.stringify({ type: 'verified', result })}\n\n`);
    res.end();
  });

  service.on('failed', (error) => {
    res.write(`data: ${JSON.stringify({ type: 'failed', error })}\n\n`);
    res.end();
  });
});

app.listen(3000, () => console.log('Server running on port 3000'));

Was passiert im DEMO-Modus?

Wenn Sie diesen Code im DEMO-Modus ausführen:

  1. wird ein QR-Code erzeugt, der optisch wie ein echter aussieht
  2. wird die Sitzung nach 3 Sekunden automatisch abgeschlossen
  3. werden synthetische Verifikationsdaten zurückgegeben (verified: true, countryAllowed: true)
  4. wird Ihr onVerified-Callback mit dem Ergebnis ausgelöst

Es ist kein echtes Wallet beteiligt. So können Sie die gesamte UI- und Backend-Logik bauen und testen, bevor EUDI-Wallets produktiv starten.

Nächste Schritte

  • Wechseln Sie in den MOCK-Modus, um konfigurierbare Antworten zu testen (Erfolg, Fehler, Timeout)
  • Fügen Sie das WooCommerce-Plugin hinzu, um Checkout-Verifikationen in Ihrem WordPress-Shop umzusetzen
  • Lesen Sie die API-Referenz für erweiterte Konfigurationen (QR-Styling, Session-Optionen, Fehlerbehandlung)
  • Beteiligen Sie sich an den GitHub-Diskussionen, um Bugs zu melden oder Funktionen anzufragen

Wenn die EUDI-Wallets im Dezember 2026 produktiv starten, ersetzen Sie new DemoMode() durch new ProductionMode(config) und ergänzen Ihre WRPAC-Credentials - oder Sie nutzen den Managed Service von eIDAS Pro und sparen sich das Zertifikatsmanagement.


OpenEUDI ist MIT-lizenziert. Das SDK befindet sich noch in Entwicklung - geben Sie dem GitHub-Repository unter https://github.com/openeudi einen Stern, um über die erste Veröffentlichung informiert zu werden.

Verwandte Artikel

Diesen Artikel teilen

Helfen Sie anderen, mehr über eIDAS-Verifizierung zu erfahren