Synchrone Implementierung

In diesem Leitfaden wird erklärt, wie die stille Authentifizierung mit dem synchronen Ansatz implementiert wird, bei dem Ihr Backend auf eine direkte Antwort wartet, nachdem der Benutzer weitergeleitet wurde.

Hinweis: Wenn Sie eine synchrone Implementierung verwenden, ist das Einschalten der Verify-Funktionen auf dem Anwendungs-Dashboard optional, da dies nur die Fähigkeit zum Empfang von Status-Webhooks ändert (die für eine synchrone Implementierung nicht erforderlich sind).

Das folgende Diagramm zeigt die notwendigen Schritte zur Implementierung der synchronen Version von Silent Authentication:

VonageApp BackendMobile AppVonageApp BackendMobile AppRequest Verification CodeCheck Verification CodeVerify phone numberPOST v2/verify202 OK (check_url, request_id)Response (check_url)GET check_urlSeveral 302 RedirectsHTTP 200 (request_id, code)Request (request_id, code)POST v2/verify/:request_id (code)HTTP 200 (status: completed)Response (Completed)

Verifizierungscode anfordern

Um den Prozess der stillen Authentifizierung zu starten, stellen Sie eine Anfrage an /verify Endpunkt. Im folgenden Beispiel wird der Arbeitsablauf legt fest, dass Verify zunächst versucht, die stille Authentifizierung zu verwenden. Wenn die Anfrage aus irgendeinem Grund fehlschlägt, wird auf E-Mail-OTP zurückgegriffen.

Hinweis: Bei Verwendung mehrerer Kanäle, stille Authentifizierung muss ist der erste Kanal im Arbeitsablauf.

Um das Beispiel auszuführen, ersetzen Sie die folgenden Variablen im Beispielcode durch Ihre eigenen Werte:

Variabel Beschreibung
JWT Authentifiziert die API-Anfrage mit JWT.
VERIFY_BRAND_NAME Der Name Ihres Unternehmens oder Ihrer Dienstleistung, der dem Nutzer in der Bestätigungsnachricht angezeigt wird.
VONAGE_APPLICATION_PRIVATE_KEY_PATH Privater Schlüssel Ihrer Anwendung.
VONAGE_APPLICATION_ID Application ID Ihrer Anwendung.
VERIFY_NUMBER Die Telefonnummer, an die das OTP gesendet werden soll, im E.164-Format (z. B., +44111223344).
VERIFY_TO_EMAIL Die E-Mail, an die das OTP gesendet werden soll.

Schreiben Sie den Code

Fügen Sie Folgendes zu request.sh hinzu:

curl -X POST "https://api.nexmo.com/v2/verify" \
  -H "Authorization: Bearer $JWT"\
  -H 'Content-Type: application/json' \
  -d $'{
	 "brand": "'$VERIFY_BRAND_NAME'",
   "workflow": [
      {
         "channel": "silent_auth",
         "to": "'$VERIFY_NUMBER'"
      },
			{
         "channel": "email",
         "to": "'$VERIFY_EMAIL_TO'"
      }
   ]
}'

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

sh request.sh

Wenn die Anfrage erfolgreich ist und die Nummer lautet unterstützterhalten Sie eine 200 Ok Antwort, die eine request_id und eine check_url im Körper:

{
  "request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
  "check_url": "https://api.nexmo.com/v2/verify/31eaf23d-b2db-4c42-9d1d-e847e75ab330/silent-auth/redirect"
}

Bis der Antrag abläuft oder storniert wird, check_url kann verwendet werden, um eine Überprüfung der stillen Authentifizierung durchzuführen. Nach Erhalt dieser Antwort müssen Sie eine

GET
-Anfrage an die check_url von dem mobilen Gerät, das Sie zu authentifizieren versuchen.

Damit der Mobilfunknetzbetreiber den Benutzer ordnungsgemäß verifizieren kann, muss die GET-Anfrage über eine mobile Datenverbindung gestellt werden. Siehe Android- und iOS-Bibliotheken für Informationen darüber, wie Sie eine mobile Verbindung erzwingen können.

Sobald Sie die

GET
-Anfrage gestellt haben, erhalten Sie eine Reihe von HTTP 302 leitet je nach Gebiet und Netzbetreiber, den das Zielgerät verwendet, weiter:

HTTP/1.1 302 Found
Location: https://eu.api.silentauth.com/phone_check/v0.2/checks/31eaf23d-b2db-4c42-9d1d-e847e75ab330/redirect

Die Befolgung der Weiterleitungen führt entweder zu einer HTTP 200 oder HTTP 409 Antwort, je nachdem, ob die Anfrage gültig ist. Wenn es ein Problem mit dem Netzwerk gibt, erhalten Sie eine Antwort wie diese:

HTTP/1.1 409 CONFLICT
Content-Type: application/json

{
  "title": "Network error",
  "detail": "The Silent Auth request could not be completed due to formatting or the carrier is not supported."
}

Eine vollständige Liste der möglichen Fehlercodes finden Sie in der API-Spezifikation.

Wenn die Anfrage gültig ist, erhalten Sie eine HTTP 200 Antwort mit Ihrer request_id und eine code:

{
  "request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
  "code": "si9sfG"
}

Hinweis: Um eine sichere Authentifizierungsprüfung zu gewährleisten und einen möglichen Man-in-the-Middle-Angriff abzuschwächen, speichern Sie das Original request_id und vergleichen Sie es mit dem request_id die in der Antwort zurückgegeben werden. Wenn die IDs nicht übereinstimmen, sollte die stille Authentifizierungsprüfung abgebrochen werden. Siehe unsere Beispielanwendung für eine Beispielimplementierung, wie der Angriff abgewehrt werden kann.

Überprüfen Sie den mitgelieferten Verifizierungscode

Sobald der Endbenutzer den Code erhält, müssen Sie eine

POST
-Anfrage an die /v2/verify/{request_id} Endpunkt und ersetzt damit {request_id} mit der ID, die Sie beim letzten Anruf erhalten haben.

Um das Beispiel auszuführen, ersetzen Sie die folgenden Variablen im Beispielcode durch Ihre eigenen Werte:

Variabel Beschreibung
JWT Authentifiziert die API-Anfrage mit JWT.
VERIFY_REQUEST_ID Die request_id die Sie im vorherigen Schritt erhalten haben.
VONAGE_APPLICATION_PRIVATE_KEY_PATH Privater Schlüssel Ihrer Anwendung.
VONAGE_APPLICATION_ID Application ID Ihrer Anwendung.
VERIFY_CODE Der vom Endnutzer erhaltene Verifizierungscode

Schreiben Sie den Code

Fügen Sie Folgendes zu check-verification-code.sh hinzu:

curl -X POST "https://api.nexmo.com/v2/verify/$VERIFY_REQUEST_ID" \
  -H "Authorization: Bearer $JWT"\
  -H 'Content-Type: application/json' \
  -d $'{
    "code": "'$VERIFY_CODE'"
  }'

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

sh check-verification-code.sh

Hinweis: Ein Code für einen Workflow zur stillen Authentifizierung kann nur geprüft werden einmal.

Wenn der Code gültig ist, erhalten Sie eine endgültige Antwort mit dem Status completed:

{
   "request_id": "31eaf23d-b2db-4c42-9d1d-e847e75ab330",
   "status": "completed"
}

Wenn ein Fehler auftritt, wird "Ungültiger Code" angezeigt:

{
   "title": "Invalid Code",
   "type": "https://www.developer.vonage.com/api-errors/verify#invalid-code",
   "detail": "The code you provided does not match the expected value.",
   "instance": "bf0ca0bf927b3b52e3cb03217e1a1ddf"
}

An diesem Punkt ist die Überprüfung der stillen Authentifizierung abgeschlossen.