OneSpan Developer: Lokale Benutzerauthentifizierung mit einem OTP

In diesem Blog-Beitrag wird gezeigt, wie ein Endbenutzer mit einem One Time Password (OTP) authentifiziert wird. Das OTP wird von der mit dem Orchestration SDK integrierten mobilen App generiert und auf dem vertrauenswürdigen Gerät des Endbenutzers aktiviert
Von dort wird eine Anmeldeanforderung zusammen mit dem OTP an OneSpan Intelligent Adaptive Authentication (IAA ) gesendet. Dieser Aufruf erfolgt aus der Webanwendung, auf die der Endbenutzer zugreift
Bevor wir beginnen
Bevor Sie den Login-Endpunkt erkunden können, müssen Sie zunächst Mitglied der OneSpan Community sein und sich für ein kostenloses Intelligent Adaptive Authentication-Sandbox-Konto anmelden. Eine Anleitung dazu finden Sie in unserem vorherigen Blog, OneSpan Cloud Solutions In Action - MyBank Web Portal Demo, Teil I.
Sie sollten auch sicher sein, dass mindestens ein registrierter Benutzer vorhanden ist, bevor Sie diesen Aufruf versuchen. Wie Sie einen Benutzer registrieren können, erfahren Sie in OneSpan Developer: Intelligent Adaptive Authentication - User Registration.
Schließlich müssen Sie die Orchestration-Beispiel-App auf dem vertrauenswürdigen Gerät aktivieren, wie in den letzten beiden Blogs beschrieben: Orchestration SDK (Java Edition) - Trusted Device Activation with Android Studio: Part I und Orchestration SDK (Java Edition) - Trusted Device Activation with Android Studio: Part II
Endpunkt-URL
Die Anfrage-URL für diesen API-Aufruf wird dem folgenden Beispiel ähneln: https://{Ihre_Mieter_ID}.sdb.tid.onespan.cloud/v1/users/{userID@domain}/login
Sie müssen diese URL während des Tutorials nicht angeben. Sie dient nur dazu, die Struktur der URL zu zeigen. Die URL wird in der Interaktiven API beim Aufruf des Webservice automatisch zugewiesen
Generieren Sie ein OTP auf dem Mobile Trusted Device:
Um sich mit einem virtuellen OTP anzumelden, müssen Sie die folgenden Schritte ausführen, um eines von der Beispiel-App zu erhalten. Diese App wurde zuvor auf dem vertrauenswürdigen Gerät des registrierten Benutzers aktiviert.
- Klicken Sie unter Lokale Authentifizierung auf die Schaltfläche "TRY IT", wie unten hervorgehoben
- Sie werden zur lokalen Authentifizierungsseite weitergeleitet, wie unten gezeigt, wo Sie ein OTP zur Anmeldung anfordern können. Wählen Sie für den "Schutztyp" die Option "Keine PIN", um sofort ein OTP zu erhalten, ohne dass Sie eine zusätzliche Authentifizierungsmethode angeben müssen.
- Sie erhalten dann ein OTP, wie im Screenshot unten gezeigt, mit dem Sie sich in der folgenden Übung anmelden können. Sie müssen dieses OTP innerhalb von 30 Sekunden verwenden. Andernfalls läuft sie ab, und Sie müssen eine neue generieren.
Probieren Sie es aus
Um mit der Anmelde-API zu experimentieren, navigieren Sie in Ihrem OneSpan-Community-Konto zum Dokument IAA Sandbox Interactive API. Erweitern Sie im Open API Swagger-Editor die Ressource "Benutzer". Sie finden dann einen Eintrag für die Login-HTTP-Post-Methode, wie in der folgenden Abbildung dargestellt
URL-Pfad-Parameter:
Für den Zweck des Login-API-Aufrufs gibt es einen erforderlichen Pfadparameter für die eindeutige Benutzerkennung. Sie wird als userID@domain formatiert. Ein Beispiel für die UserID ist "iaa_user". Es ist die UserID, die auf dem vertrauenswürdigen Gerät aktiviert wurde. Der Teil des Parameters, der auf das "@"-Zeichen folgt, ist die Benutzerdomäne. Dieser Eintrag sollte durch die unten gezeigte Zeichenfolge "Sandbox-Benutzer" ersetzt werden, die Sie im Abschnitt "Sandbox-Details" unter der Registerkarte "Intelligente adaptive Authentifizierung" auf Ihrer Sandbox-Homepage finden.
Körper der Benutzeranmeldeanforderung
Wählen Sie unter dem Abschnitt "Request Body" des Login-Endpunkts den Objekttyp "AdaptiveLoginInput" aus dem Dropdown-Menü aus, wie unten gezeigt. Sie erhalten dann ein Beispiel für den JSON-Payload einer Login-Anfrage. Es wird mit einem Beispiel der JSON-Objekte bestückt, die von der API des Objekttyps " AdaptiveLoginInput " benötigt werden
Der Anfragerumpf sieht aus wie das folgende Beispiel für die erforderlichen Felder des Login-Endpunkts.
{ "objectType": "AdaptiveLoginInput", "cddc": { "browserCDDC": { "fingerprintRaw": "{browser:{\"userAgent\":Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36},support:{\"ajax\":true,\"boxModel\":undefined,\"changeBubbles\":undefined,\"checkClone\":true,\"checkOn\":true,\"cors\":true,\"cssFloat\":undefined,\"hrefNormalized\":undefined,\"htmlSerialize\":undefined,\"leadingWhitespace\":undefined,\"noCloneChecked\":true,\"noCloneEvent\":undefined,\"opacity\":undefined,\"optDisabled\":undefined,\"style\":undefined,\"submitBubbles\":undefined,\"tbody\":undefined},computer:{\"screenWidth\":2560,\"screenHeight\":1440,\"OS\":\"Microsoft Windows\",\"platform\":\"Win32\"},additional:{}}", "fingerprintHash": "e96dadc9651f5fe8f071110eb174fe8e7a17a9d7a96b3b1980c13e5b4af3a4d7" } }, "relationshipRef": "iaa_user", "sessionID": "4ED23EA44F23", "clientIP": "192.168.0.1", "credentials": { "authenticator": { "
Nutzlast anfordern
Sie enthält zwei obligatorische JSON-Objekte, die in der Tabelle aufgeführt sind:
JSON Erforderliche Datenfelder | Beschreibung | Feld Datentyp |
---|---|---|
objektTyp* | Damit wird der Objekttyp in der Nutzlast der Anfrage für den Zweck der adaptiven Authentifizierungslösung deklariert. | Typ: Enum Beispiel: "[ AdaptiveLoginInput ]" |
anmeldeinformationen* | Dieses trägt die Anmeldeinformationen zur Authentifizierung des Benutzers einschließlich des Authenticator-Objekts. Ein OTP ist ein Authentifikator-Typ, der in diesem Beispiel verwendet werden soll. | Typ: JSON verschachteltes Objekt Beispiel: "credentials": { "authenticator": { "OTP": "714346" } |
cddc* | Client Device Data Collector-Metadaten. Die beiden Felder browserCDDC und mobileCDDC schließen sich gegenseitig aus und sind gemeinsam erschöpfend. | Typ: String Beispiel: "browserCDDC" oder "mobileCDDC" |
beziehungRef* | Die Beziehungsreferenz der Benutzer-ID. | Typ: string minLength: 1 maxLength: 150 Beispiel: iaa_user |
staticPassword* | Das anfängliche statische Kennwort, das dem Benutzer zugewiesen wurde. | Typ: String minLength: 8 maxLength: 255 Beispiel: Test1234 |
sessionID* | Kennung der Anwendungssitzung, formatiert als hexadezimale Zeichenfolge; gemeinsam für alle Transaktionen, die sich auf dieselbe Sitzung beziehen. | Typ: String Muster: ^[0-9a-fA-F]+$ minLength: 2 maxLength: 100 Beispiel: 4ed23ea44f23 |
Aufrufen des Endpunkts
An diesem Punkt sind wir bereit, einen RESTful-Aufruf an den Login-Endpunkt unter Verwendung der interaktiven IAA-Sandbox-API durchzuführen. Um den Aufruf durchzuführen, klicken Sie auf die Schaltfläche "Try it out", die im Screenshot unten gezeigt wird und sich rechts neben dem Abschnitt zur HTTP-POST-Methode befindet. Nach der Anfrage erhalten Sie den Antwortkörper in einem JSON-Format zurück. Sie ähnelt der Antwort-Payload, die im folgenden Abschnitt beschrieben wird.
Benutzeranmeldung Antwortkörper
Wenn das OTP akzeptiert wurde, erhalten Sie einen Antwortkörper ähnlich dem folgenden Beispiel mit einem 200-Antwortcode, der eine erfolgreiche Anmeldung anzeigt.
{ "riskResponseCode": 0, "sessionStatus": "accepted" }
Beschreibung der Felder des Antwortkörpers
Das Feld "riskResponseCode" ist der Antwortcode von Risk Analytics. Der Wert "0" in der obigen Antwort zeigt an, dass die Anfrage akzeptiert wurde und der Benutzer erfolgreich authentifiziert wurde, ohne dass zusätzliche Maßnahmen erforderlich waren. Nachfolgend finden Sie eine Liste anderer möglicher Werte, die von Risk Analytics zurückgegeben werden können. Außerdem können zusätzliche Werte über den Risk Analytics Presentation Service konfiguriert werden.
Risikoanalyse Verhalten |
Risiko-Reaktions-Code (Ganzzahl) |
---|---|
Akzeptieren | 0 |
Abnehmen | 1 |
Herausforderung | 2 |
HerausforderungSMS | 3 |
ChallengeDevice2FA | 5 |
HerausforderungEmail | 8 |
HerausforderungCronto | 11 |
ChallengeNoPIN | 21 |
HerausforderungPIN | 22 |
HerausforderungFingerabdruck | 23 |
HerausforderungGesicht | 24 |
Das Feld sessionStatus
in der JSON-Antwort stellt den aktuellen Status der Sitzung dar, nachdem die Anfrage gesendet wurde. In der folgenden Tabelle sind die möglichen Statuswerte aufgeführt.
Session-Status | Status Beschreibung |
---|---|
unbekannt | Der Status ist nicht bekannt und die Antwort wird extern gehandhabt |
anhängig | Warten auf eine Aktion des Endbenutzers |
akzeptiert | Erfolgreich abgeschlossen |
abgelehnt | Vom Endbenutzer abgelehnt |
timeout | Zeitüberschreitung, nachdem innerhalb des Zeitrahmens keine Antwort empfangen wurde |
gescheitert | Die OTP-Validierung schlägt fehl |
Wenn die obigen Schritte abgeschlossen sind, sollte der Benutzer erfolgreich authentifiziert worden sein. Bleiben Sie dran für weitere Blogs zur Verwendung der Intelligent Adaptive Authentication API von OneSpan. Wenn Sie in der Zwischenzeit Fragen haben, können Sie uns in den Foren des OneSpan Community Portals erreichen.