ID Mobile — Nutzeridentität ohne OTP abgleichen

Support DQE
Support DQE
  • Aktualisiert
Matching without OTP - ID Mobile API

Verwenden Sie diesen Endpunkt, um vom Nutzer übermittelte Daten mit den Daten des Betreibers zu vergleichen, ohne dass eine Zustimmung des Nutzers (OTP) erforderlich ist. Liefert für jedes Feld einen Ähnlichkeitswert.

Zugehörige ID-Mobile-Dokumentation:

Matching without OTP

Anfrage

GET und POST werden beide unterstützt. Dies ist ein einstufiger Aufruf — das Vergleichsergebnis wird direkt in der Antwort zurückgegeben, es ist keine Zustimmungsseite oder Abrufschritt erforderlich.

{SERVER_ADDRESS} und {LICENCE_CODE} werden von DQE bei der Kontoerstellung bereitgestellt. {TOKEN} ist das Zugriffstoken, das über den ID-Mobile-Access-Token-Endpunkt abgerufen wird. Wenden Sie sich an Ihren DQE-Kundenbetreuer, um die Serveradresse und den Lizenzcode zu erhalten.
GEThttps://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp&redirect_uri={URL_REDIRECT}&country={COUNTRY}&format={FORMAT}&period={PERIOD}

Ersetzen Sie die Werte in geschweiften Klammern durch Ihre eigenen Angaben — siehe die Parametertabelle unten.

Codebeispiele

Übermittelte Identitätsdaten mit denen des Betreibers vergleichen — user_infos wird hier als Platzhalter {INFORMATION} dargestellt; das reale JSON-Format finden Sie im ausgearbeiteten Beispiel unterhalb der Parametertabelle.

curl "https://{SERVER_ADDRESS}/IDMOBILE/?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/?" + new URLSearchParams({ number: "33612345678", token: "{TOKEN}", mode: "2", name: "MYCOMPANY", licence: "{LICENCE_CODE}", user_infos: "{INFORMATION}", scope: "matching_notp" })) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.get( "https://{SERVER_ADDRESS}/IDMOBILE/", params={ "number": "33612345678", "token": "{TOKEN}", "mode": "2", "name": "MYCOMPANY", "licence": "{LICENCE_CODE}", "user_infos": "{INFORMATION}", "scope": "matching_notp", }, ) print(response.json())
<?php $params = http_build_query([ 'number' => '33612345678', 'token' => '{TOKEN}', 'mode' => '2', 'name' => 'MYCOMPANY', 'licence' => '{LICENCE_CODE}', 'user_infos' => '{INFORMATION}', 'scope' => 'matching_notp', ]); $ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/?{$params}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); axios.get('https://{SERVER_ADDRESS}/IDMOBILE/', { params: { number: '33612345678', token: '{TOKEN}', mode: '2', name: 'MYCOMPANY', licence: '{LICENCE_CODE}', user_infos: '{INFORMATION}', scope: 'matching_notp' } }) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String url = "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var url = "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp"; var response = await client.GetAsync(url); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" ) func main() { url := "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp" resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }
POSThttps://{SERVER_ADDRESS}/IDMOBILE/

Fügen Sie die folgenden Parameter mit Content-Type: application/x-www-form-urlencoded in den Request-Body ein:

Codebeispiele

Übermittelte Identitätsdaten mit denen des Betreibers vergleichen

curl -X POST "https://{SERVER_ADDRESS}/IDMOBILE/" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "licence={LICENCE_CODE}" \ -d "number=33612345678" \ -d "token={TOKEN}" \ -d "mode=2" \ -d "name=MYCOMPANY" \ -d "user_infos={INFORMATION}" \ -d "scope=matching_notp"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ licence: "{LICENCE_CODE}", number: "33612345678", token: "{TOKEN}", mode: "2", name: "MYCOMPANY", user_infos: "{INFORMATION}", scope: "matching_notp" }) }) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.post( "https://{SERVER_ADDRESS}/IDMOBILE/", data={ "licence": "{LICENCE_CODE}", "number": "33612345678", "token": "{TOKEN}", "mode": "2", "name": "MYCOMPANY", "user_infos": "{INFORMATION}", "scope": "matching_notp", }, ) print(response.json())
<?php $ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'licence' => '{LICENCE_CODE}', 'number' => '33612345678', 'token' => '{TOKEN}', 'mode' => '2', 'name' => 'MYCOMPANY', 'user_infos' => '{INFORMATION}', 'scope' => 'matching_notp', ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); const qs = require('querystring'); axios.post('https://{SERVER_ADDRESS}/IDMOBILE/', qs.stringify({ licence: '{LICENCE_CODE}', number: '33612345678', token: '{TOKEN}', mode: '2', name: 'MYCOMPANY', user_infos: '{INFORMATION}', scope: 'matching_notp' })) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String form = "licence={LICENCE_CODE}&number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&user_infos={INFORMATION}&scope=matching_notp"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{SERVER_ADDRESS}/IDMOBILE/")) .header("Content-Type", "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(form)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var form = new Dictionary<string, string> { ["licence"] = "{LICENCE_CODE}", ["number"] = "33612345678", ["token"] = "{TOKEN}", ["mode"] = "2", ["name"] = "MYCOMPANY", ["user_infos"] = "{INFORMATION}", ["scope"] = "matching_notp" }; var response = await client.PostAsync( "https://{SERVER_ADDRESS}/IDMOBILE/", new FormUrlEncodedContent(form)); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" "net/url" ) func main() { form := url.Values{} form.Set("licence", "{LICENCE_CODE}") form.Set("number", "33612345678") form.Set("token", "{TOKEN}") form.Set("mode", "2") form.Set("name", "MYCOMPANY") form.Set("user_infos", "{INFORMATION}") form.Set("scope", "matching_notp") resp, err := http.PostForm("https://{SERVER_ADDRESS}/IDMOBILE/", form) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }

Parameter

Parameter Description Mand / Opt
SERVER_ADDRESS Adresse des DQE-Servers, der die Daten verarbeitet. Pflicht
licence Ihnen zugewiesene Nummer als Lizenzcode. Pflicht
number Telefonnummer. Pflicht
token Durch Authentifizierung abgerufenes Token. Pflicht
mode 2: Authentifizierung per Code. Pflicht
name Partnername in der DQE-Software-Datenbank, in der Regel Ihr Firmenname. Pflicht
code_name Optionales Feld mit einem Code, der mit name verknüpft ist. Optional
user_infos JSON-Objekt mit den zu vergleichenden Kundendaten. Siehe die Tabelle der user_infos-Schlüssel unten. Pflicht, wenn der Scope matching_notp ist. Optional
scope Statischer Wert. Muss für diesen Scope matching_notp sein. Pflicht
redirect_uri Weiterleitungs-URL. DQE fügt der Weiterleitung das Sitzungstoken und den Status hinzu. Optional
country Nur für internationales Matching without OTP verwenden. Erwarteter Wert: ISO-2-Buchstaben-Ländercode. Optional
format Telefonnummernformat-Code (siehe DQE Phone API-Dokumentation), der zur Neuformatierung der Telefonnummer verwendet wird. Optional
period Gültigkeitsfenster für die SIM-Swap-Prüfung, in Stunden (0 bis 72). Nur relevant, wenn der Scope simswap kombiniert wird — siehe Hinweis unten. Optional
Kombinieren von Scopes — matching_notp kann in einer einzigen Anfrage mit simswap (Betrugsprävention) kombiniert werden, z. B. scope=matching_notp,simswap, sowie mit info (Telefonnummer-Zusatzinformationen) in beliebiger Kombination, z. B. scope=matching_notp,info. Der Parameter format wird verwendet, wenn der Scope info kombiniert wird, und period wird relevant, wenn der Scope simswap kombiniert wird. Siehe die info-Felder unten. Wenden Sie sich an Ihren DQE-Kundenbetreuer für Hinweise zur vollständigen kombinierten Antwortstruktur von matching_notp+simswap.

info-Zusatzfelder — werden zusätzlich zu den eigenen Feldern dieses Endpunkts zurückgegeben, wenn info in scope enthalten ist:

Feld Beschreibung Beispiel
telorigine Telefonnummer in der Anfrage. 0600000000
tel Telefonnummer, formatiert. +33600000000
geolocation Geografische Lage der Telefonnummer. FRANCE
operator Aktueller Betreiber der Telefonnummer, falls vorhanden. ORANGE
oldoperator Vorheriger Betreiber der Telefonnummer. SFR
ported Gibt an, ob die Telefonnummer portiert wurde, falls vorhanden. Y
type Art der Telefonnummer. MOBILE
iderror Fehlercode der Prüfung (0 oder 1). 1

user_infos-Schlüssel — jeder Schlüssel muss vorhanden sein, auch wenn kein Wert angegeben wird:

Schlüssel Beschreibung
street_address Straßentyp und -name.
postal_code Postleitzahl.
locality Stadt.
country Vollständiger Ländername.
birthdate Geburtsdatum im Format YYYY-MM-DD.
email E-Mail-Adresse.
lastname Nachname.
maiden_name Geburtsname.
gender Geschlecht: M oder F.
firstname Vorname.
phone Telefonnummer.
number Hausnummer. Dieser Schlüssel muss im JSON-Payload vorhanden sein, muss aber nicht ausgefüllt werden.

Beispielwert für user_infos (alle Schlüssel vorhanden, leer wenn unbekannt)

{ "street_address": "", "postal_code": "", "locality": "", "country": "", "birthdate": "", "email": "", "lastname": "", "maiden_name": "", "gender": "", "firstname": "", "phone": "", "number": "" }

Antwort

Die API gibt ein JSON-Objekt mit einem Ähnlichkeitswert für jedes Feld zurück:

Key Description Type
family_name Ähnlichkeitswert für den Nachnamen. Number
gender Ähnlichkeitswert für die Anrede. Number
birthdate Ähnlichkeitswert für das Geburtsdatum. Number
given_name Ähnlichkeitswert für den Vornamen. Number
address Objekt mit den Ähnlichkeitswerten der Adresse. Schlüssel: country, postal_code, street_address, locality. Object
email Ähnlichkeitswert für die E-Mail-Adresse. Number

Antwortbeispiel

Beispiel für eine erfolgreiche Antwort
{ "family_name": 1.0, "gender": "", "birthdate": 1.0, "given_name": 1.0, "address": { "country": 1.0, "postal_code": 0.78, "street_address": 0.56, "locality": 0.44 }, "email": 1.0 }

Fehler

Die API gibt bei einem Fehler ein JSON-Objekt mit status, error_type und error_id zurück:

Fehler-ID Fehlertyp Beispielanfrage Antwort
01 invalid request https://{SERVER_ADDRESS}/IDMOBILE/?token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Beispiel: fehlender Parameter number.
{"status": "error", "error_type": "invalid request", "error_id": "01"}
02 invalid licence key https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={INCORRECT_LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
{"status": "error", "error_type": "invalid licence key", "error_id": "02"}
04 invalid scope https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=wrongScope
{"status": "error", "error_type": "invalid scope", "error_id": "04"}
05 missing or empty parameter (user_infos) for this scope https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=matching_notp
Beispiel: fehlender Parameter user_infos.
{"status": "error", "error_type": "missing or empty parameter (user_infos) for this scope", "error_id": "05"}
06 bad parameter format (user_infos) is not a valid JSON https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos=not-valid-json&scope=matching_notp
{"status": "error", "error_type": "bad parameter format (user_infos) is not a valid JSON", "error_id": "06"}
07 missing mandatory key in user informations (phone) https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos=%7B...no+phone+key...%7D&scope=matching_notp
Beispiel: Im JSON-Objekt user_infos fehlt der Schlüssel phone.
{"status": "error", "error_type": "missing mandatory key in user informations (phone)", "error_id": "07"}
09 ineligible phone number https://{SERVER_ADDRESS}/IDMOBILE/?number={INELIGIBLE_NUMBER}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
{"status": "error", "error_type": "ineligible phone number", "error_id": "09"}
10 invalid phone number https://{SERVER_ADDRESS}/IDMOBILE/?number={INVALID_NUMBER}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
{"status": "error", "error_type": "invalid phone number", "error_id": "10"}
11 phone number is empty https://{SERVER_ADDRESS}/IDMOBILE/?number=&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
{"status": "error", "error_type": "phone number is empty", "error_id": "11"}
12 phone check failed https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Bedingung auf Betreiberseite — eine syntaktisch gültige Anfrage kann hier trotzdem fehlschlagen.
{"status": "error", "error_type": "phone check failed", "error_id": "12"}
13 operator [Operator Name] not found https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Bedingung auf Betreiberseite.
{"status": "error", "error_type": "operator [Operator Name] not found", "error_id": "13"}
14 operator [Operator Name] not authorized for this licence https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Bedingung auf Betreiberseite — Ihre Lizenz ist für diesen Betreiber nicht autorisiert.
{"status": "error", "error_type": "operator [Operator Name] not authorized for this licence", "error_id": "14"}
15 operator [Operator Name] not supported yet https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Bedingung auf Betreiberseite.
{"status": "error", "error_type": "operator [Operator Name] not supported yet", "error_id": "15"}
16 operator [Operator Name] unreachable https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Bedingung auf Betreiberseite.
{"status": "error", "error_type": "operator [Operator Name] unreachable", "error_id": "16"}
17 scope not supported by this operator [Operator Name] yet https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
Bedingung auf Betreiberseite.
{"status": "error", "error_type": "scope not supported by this operator [Operator Name] yet", "error_id": "17"}
30 invalid or expired token https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={EXPIRED_TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&user_infos={INFORMATION}&scope=matching_notp
{"status": "error", "error_type": "invalid or expired token", "error_id": "30"}
Beispiel für eine Fehlerantwort
{ "status": "error", "error_type": "invalid phone number", "error_id": "10" }

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpunkt live in Ihrem Browser zu testen.

Konsole öffnen

Siehe auch

War dieser Beitrag hilfreich?

0 von 0 fanden dies hilfreich