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:
| Modus | Verhalten | Anwendungsfall |
|---|---|---|
new DemoMode() | Schließt nach 3 Sekunden automatisch ab | Showcases, Vertrieb-Demos, Landingpages |
new MockMode() | Simuliert Wallet-Antworten mit konfigurierbaren Daten | Integrationstests, CI/CD-Pipelines |
new ProductionMode(config) | Reale EUDI-Wallet-Verifikation | Live-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.
| Attribut | Rückgabe | Beschreibung |
|---|---|---|
age_over_18 | Boolesch | Ist der Nutzer 18 oder älter? |
age_over_21 | Boolesch | Ist der Nutzer 21 oder älter? |
age_over_16 | Boolesch | Ist der Nutzer 16 oder älter? |
age_over_14 | Boolesch | Ist 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:
- wird ein QR-Code erzeugt, der optisch wie ein echter aussieht
- wird die Sitzung nach 3 Sekunden automatisch abgeschlossen
- werden synthetische Verifikationsdaten zurückgegeben (
verified: true,countryAllowed: true) - 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
OpenEUDI vorgestellt: ein Open-Source-SDK für EU-Digitalidentitäts-Verifikation
Wir veröffentlichen die zentrale Protokollbibliothek hinter eIDAS Pro als Open Source. OpenEUDI ist ein kostenloses TypeScript-SDK unter MIT-Lizenz für die Integration von EUDI-Wallet-Verifikation in jede Webanwendung.
8 Min. Lesezeit
OpenID4VP verstehen: das Protokoll hinter den EU Digital Identity Wallets
Eine technische Tiefenanalyse von OpenID4VP, dem Protokoll, mit dem EUDI-Wallets verifizierte Attribute an Unternehmen übermitteln. Wie es funktioniert, warum es wichtig ist und wie OpenEUDI es implementiert.
12 Min. Lesezeit
Diesen Artikel teilen
Helfen Sie anderen, mehr über eIDAS-Verifizierung zu erfahren