Voraussetzungen
- Node.js 20+ installiert
- TypeScript-Projekt (oder JavaScript mit ESM)
- Ein Terminal und Ihr bevorzugter Editor
Das ist alles. Keine API-Keys, 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 { createVerifier } from '@openeudi/core';
// Initialisierung im DEMO-Modus - keine Credentials erforderlich
const verifier = createVerifier({
mode: 'demo', // 'demo' | 'mock' | 'production'
});
Die Option mode steuert das Verhalten des SDK:
| Modus | Verhalten | Anwendungsfall |
|---|---|---|
demo | Schließt nach 3 Sekunden automatisch ab | Showcases, Sales-Demos, Landingpages |
mock | Simuliert Wallet-Antworten mit konfigurierbaren Daten | Integrationstests, CI/CD-Pipelines |
production | Reale EUDI-Wallet-Verifikation | Live-Verifikationen (erfordert WRPAC, Dez. 2026+) |
Schritt 3: eine Verifizierungssitzung erstellen
const session = await verifier.createSession({
attributes: ['age_over_18'],
// Länderspezifische Compliance wird über Ihre Merchant-Konfiguration
// (Whitelist/Blacklist) gesteuert - sie wird nicht vom Nutzer abgefragt
});
// session.qrCode 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-Flows gedacht
Das Array attributes beschreibt, was Sie verifizieren möchten. eIDAS Pro ist auf datenschutzorientierte boolesche Attribute ausgelegt: 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.qrCode;
document.getElementById('qr-container').appendChild(img);
// In React
function VerificationQR({ session }) {
return <img src={session.qrCode} alt="Mit Ihrem EUDI Wallet scannen" />;
}
// In Next.js (mit next/image)
import Image from 'next/image';
function VerificationQR({ session }) {
return <Image src={session.qrCode} alt="Mit Ihrem EUDI Wallet scannen" width={256} height={256} />;
}
Schritt 5: auf das Ergebnis warten
// Event-basierte API (für Web-Apps empfohlen)
session.onVerified((result) => {
console.log('Verifizierung erfolgreich!');
console.log('Über 18:', result.ageOver18); // true
console.log('Land erlaubt:', result.countryAllowed); // true (gemäß Ihrer Whitelist)
console.log('Session-ID:', result.sessionId);
console.log('Zeitstempel:', result.verifiedAt);
});
session.onFailed((error) => {
console.log('Verifizierung fehlgeschlagen:', error.reason);
// 'timeout' | 'rejected' | 'invalid_credential' | 'network_error'
});
session.onExpired(() => {
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.ageOver18);
} catch (error) {
console.log('Fehlgeschlagen oder Timeout:', error.reason);
}
Vollständiges Beispiel: Express.js-API-Route
import express from 'express';
import { createVerifier } from '@openeudi/core';
const app = express();
const verifier = createVerifier({ mode: 'demo' });
// Neue Verifizierungssitzung erstellen
app.post('/api/verify', async (req, res) => {
const session = await verifier.createSession({
attributes: ['age_over_18'],
});
res.json({
sessionId: session.sessionId,
qrCode: session.qrCode,
});
});
// Sitzungsstatus abrufen (oder SSE für Echtzeit nutzen)
app.get('/api/verify/:sessionId', async (req, res) => {
const status = await verifier.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');
const session = verifier.getSession(req.params.sessionId);
session.onVerified((result) => {
res.write(`data: ${JSON.stringify({ type: 'verified', result })}\n\n`);
res.end();
});
session.onFailed((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 (
age_over_18: true,countryAllowed: true) - feuert Ihr
onVerified-Callback mit dem Ergebnis
Es ist kein echtes Wallet beteiligt. So können Sie die gesamte UI- und Backend-Logik bauen und testen, bevor EUDI Wallets live gehen.
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 live gehen, ersetzen Sie mode: 'demo' durch mode: 'production' 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 - markieren Sie das GitHub-Repository, um über den ersten Release informiert zu werden.
Verwandte Artikel
OpenEUDI vorgestellt: ein Open-Source-SDK für EU-Digitalidentitätsverifizierung
Wir veröffentlichen die zentrale Protokollbibliothek als Open Source, die eIDAS Pro antreibt. 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
Ein technischer Deep Dive in OpenID4VP, das 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