Entwickler · CAMARA-kompatibel · EUDI-Wallet

Number Verification und KYC Match, die die Person prüfen – nicht die SIM

Netzbasierte Prüfungen wie CAMARA Number Verification beweisen, welche SIM-Karte in einem Telefon steckt. Sie beweisen nicht, wer es hält. CodeB beantwortet dieselben zwei CAMARA-APIs – Number Verification und KYC Match – aus der EUDI-Wallet der Person: Die Person bestätigt mit Fingerabdruck oder PIN, und Ihr Dienst erfährt, ob Telefonnummer und Personendaten zu dieser Person gehören. Ja oder nein, mehr nicht.

CAMARA-API-Formen · OpenID Connect · EUDI-Wallet (PID) · EU-gehostet, eigener Mandant

Die Kurzfassung

Was
Zwei CAMARA-kompatible REST-APIs: number-verification (gehört diese Nummer der Person?) und kyc-match (stimmen Name, Geburtsdatum, Adresse?).
Beantwortet aus
Der PID in der Wallet der Person und der Telefonnummer, die der Betreiber für das Konto bestätigt hat – nicht aus dem Mobilfunknetz.
Beweist
Dass die richtige Person gerade eben mit einer nach dem EUDI-ARF entwickelten Wallet bestätigt hat – nicht nur, dass eine SIM-Karte vorhanden ist.
Ihr Dienst erhält
true, false oder not_available je Feld. Die Personendaten bleiben auf dem Server.
Wo
In jedem EU-Land, mit jeder nach dem EUDI-ARF entwickelten Wallet, ohne Verträge mit Netzbetreibern.

SIM-Prüfung oder Personenprüfung?

Beide nutzen dieselben API-Formen. Was sie beweisen, ist verschieden.

Netzprüfung (SIM-basiert)CodeB-Wallet-Prüfung
Was bewiesen wirdEine SIM-Karte dieser Nummer steckt im anfragenden GerätDie Person hat mit ihrer Wallet bestätigt (Fingerabdruck oder PIN) und diese Nummer wurde für sie bestätigt
Gestohlenes oder geliehenes TelefonBesteht die PrüfungScheitert: Die Wallet braucht die Entsperrung der Person
SIM-TauschBraucht eine eigene SIM-Swap-PrüfungNicht betroffen: Die Nummer gehört der bestätigten Person, nicht der SIM
Name, Geburtsdatum, AdresseAus Kundendaten des Betreibers, wo vorhandenAus der PID in der Wallet, dieselben Daten wie im Ausweis
AbdeckungHängt vom Mitmachen jedes Betreibers abJede EU-Wallet nach dem EUDI-ARF, jedes Netz, auch WLAN
Daten an Ihren DienstAbgleichergebnisseNur Abgleichergebnisse (ja / nein / nicht verfügbar)

So funktioniert es

Dreibeinig wie bei CAMARA: Die Person stimmt zu, Ihr Backend ruft die API mit dem Zugriffstoken auf.

Person zur Anmeldung schicken

Ihre Website startet einen normalen OpenID-Connect-Authorization-Code-Flow auf Ihrem CodeB-Mandanten mit acr_values=urn:codeb:acr:eudi-wallet und den benötigten CAMARA-Scopes.

Person bestätigt mit der Wallet

QR-Code am Computer oder die Wallet öffnet sich auf demselben Telefon. Die Person bestätigt die Anmeldung mit Fingerabdruck oder PIN; die Wallet legt die PID vor.

Ihr Backend ruft die API auf

Code gegen ein Zugriffstoken tauschen (die Bestätigung mit der Wallet darf höchstens 15 Minuten alt sein) und /number-verification/…/verify oder /kyc-match/…/match aufrufen.

Sie erhalten Ja oder Nein

devicePhoneNumberVerified: true oder je Feld "true", "false", "not_available". Sonst verlässt nichts den Server.

Die APIs

POST /camara.ashx/number-verification/v0/verifyScope number-verification:verify. Body {"phoneNumber":"+35699123456"} or {"hashedPhoneNumber":"<sha256 hex>"}. Answer {"devicePhoneNumberVerified":true}.
GET /camara.ashx/number-verification/v0/device-phone-numberScope number-verification:device-phone-number:read. Answer {"devicePhoneNumber":"+35699123456"}, or 404 when no number was verified.
POST /camara.ashx/kyc-match/v0.3/matchScope kyc-match:match. Send any of givenName, familyName, name, familyNameAtBirth, birthdate, gender, address, streetName, streetNumber, postalCode, locality, region, country, email (and optionally phoneNumber). Each field is answered "true" | "false" | "not_available".
GET /camara.ashx/openapi.jsonOpenAPI 3.1 description of these APIs. The complete platform description is at /openapi.json.
Which clients may callOn by default: every OIDC client registered on the site can call the APIs as soon as it asks for the scope. The site admin can limit each API to chosen clients or switch it off on the admin page “CAMARA identity APIs”; refused calls get 403. At most 5 calls per API per wallet confirmation (429 after that).

Beispiel

# 1. Person zur Wallet-Anmeldung schicken (Ihr OIDC-Client auf dem Mandanten)
GET <authorization_endpoint from https://<tenant>/.well-known/openid-configuration>?response_type=code&client_id=<your-client>
    &redirect_uri=<your-callback>&scope=openid%20number-verification:verify%20kyc-match:match
    &acr_values=urn:codeb:acr:eudi-wallet&state=<state>&code_challenge=<S256>&code_challenge_method=S256

# 2. Nach dem Code-Tausch: Gehört +35699123456 dieser Person?
curl -X POST https://<tenant>/camara.ashx/number-verification/v0/verify \
  -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
  -d '{"phoneNumber":"+35699123456"}'
{"devicePhoneNumberVerified":true}

# 3. Stimmen Name und Geburtsdatum mit dem Ausweis in der Wallet überein?
curl -X POST https://<tenant>/camara.ashx/kyc-match/v0.3/match \
  -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
  -d '{"givenName":"Maria","familyName":"Keller","birthdate":"1985-04-12"}'
{"givenNameMatch":"true","familyNameMatch":"true","birthdateMatch":"true"}

OpenAPI (Identitäts-APIs) · OpenAPI (Plattform)

Woher die Telefonnummer kommt

  • Der Betreiber der Website prüft die Nummer einer Person und markiert sie im Konto. Der Server speichert, wer sie wann und für welche Nummer bestätigt hat.
  • Ändert die Person die Nummer, wird die Bestätigung automatisch entfernt.
  • Die Person kann die Nummer als Karte „Verifizierte Telefonnummer“ in die Wallet aufnehmen (SD-JWT und ISO mdoc, ein Jahr gültig). Die Karte wird automatisch widerrufen, wenn sich die Nummer ändert oder die Bestätigung entfernt wird.

Auch für Menschen am Telefon: Anrufer bestätigen

Dieselbe Prüfung funktioniert ohne Integration. Wer angerufen wird, öffnet Anrufer bestätigen, liest einen 6-stelligen Code vor, und der Anrufer bestätigt mit der Wallet. Die angerufene Person sieht dann den bestätigten Namen – und die bestätigte Nummer, wenn der Anrufer zustimmt. Jedes Netz, jedes Telefon, auch Videoanrufe. Eine geklonte Stimme oder eine gefälschte Rufnummer kommt nicht durch, weil die Prüfung die Wallet der echten Person braucht.

Datenschutz von Anfang an

  • KYC Match antwortet nur mit true, false oder not_available; die Werte aus der PID werden nie gesendet. Adressen werden als Ganzes verglichen, eine Anfrage kann also nicht viele Varianten auf einmal testen.
  • Eine Bestätigung mit der Wallet erlaubt höchstens 5 Aufrufe je API innerhalb von 15 Minuten; danach muss die Person erneut bestätigen. Nur bei der Website registrierte Anmelde-Clients können sie aufrufen; der Administrator kann jede API auf gewählte Clients beschränken oder abschalten.
  • Keine Verträge mit Netzbetreibern und keine Netzdaten: Die Prüfung hängt nicht von SIM, Roaming oder Standort ab.
  • Jede Antwort wird im Audit-Log des Mandanten mit Client und Anzahl der Ergebnisse protokolliert, nicht mit den Werten.
  • Läuft auf Ihrem eigenen CodeB-Mandanten in der EU.

Ehrliche Grenzen

  • Die Telefonnummer ist so gut wie ihre Prüfung durch den Betreiber. Heute bestätigt sie der Betreiber der Website, nicht ein Mobilfunknetz.
  • KYC Match braucht eine Wallet, die eine PID vorlegt. Felder, die die PID nicht enthält, werden mit not_available beantwortet.
  • Die API-Formen folgen CAMARA; es ist keine Mobilfunknetz-API und kein CAMARA-zertifizierter Dienst. Wenn Sie zusätzlich wissen müssen, dass eine bestimmte SIM im Gerät steckt, kombinieren Sie es mit einer Netzprüfung.

Häufige Fragen

Was sind die CAMARA-APIs Number Verification und KYC Match?

CAMARA ist ein Open-Source-Projekt, das gemeinsame APIs für Telekommunikationsdienste definiert. Number Verification beantwortet, ob eine Telefonnummer zum anfragenden Gerät gehört; KYC Match vergleicht Kundendaten mit den Daten eines Anbieters und antwortet je Feld mit true oder false.

Was ist bei CodeB anders?

CodeB beantwortet dieselben API-Formen aus der EUDI-Wallet der Person statt aus dem Mobilfunknetz. Das beweist die Person, nicht nur die SIM-Karte: Ein gestohlenes oder geliehenes Telefon besteht nicht, weil die Wallet Fingerabdruck oder PIN der Person braucht.

Sieht mein Dienst die Identitätsdaten?

Nein. KYC Match liefert je Feld nur true, false oder not_available. Number Verification liefert nur true oder false. Der Endpunkt device-phone-number liefert die bestätigte Nummer nur, wenn Sie diesen Scope angefragt und die Person zugestimmt hat.

Welche Wallets funktionieren?

Jede nach dem EUDI-ARF entwickelte Wallet, die dem CodeB-Verifier eine PID vorlegen kann, zum Beispiel die CodeB Wallet für Android oder die Web-Wallet unter myeudi.app.

Brauche ich Verträge mit Netzbetreibern?

Nein. Die Prüfung läuft zwischen der Wallet der Person und Ihrem CodeB-Mandanten, in jedem EU-Land und in jedem Netz.

Kann ich von einer netzbasierten Number-Verification-Integration wechseln?

Ja. Anfrage- und Antwortformate folgen CAMARA. Richten Sie den Client auf Ihren CodeB-Mandanten, holen Sie das Zugriffstoken mit acr_values=urn:codeb:acr:eudi-wallet und rufen Sie dieselben Pfade unter /camara.ashx auf.

Mit einem API-Aufruf starten

Richten Sie einen OIDC-Client auf Ihrem Mandanten ein, fügen Sie die Scopes hinzu und rufen Sie die API mit dem Zugriffstoken auf.