FACT-Finder Passwortverschlüsselung

Einfache und erweiterte Verschlüsselung

FACT-Finder bietet zwei Möglichkeiten an, wie das Passwort übermittelt werden kann: eine einfache und eine erweiterte Methode. Per Standard wird die Erweiterte verwendet.

Der Grund, warum es zwei Möglichkeiten gibt, ist, dass die FACT-Finder Schnittstellen keine gesicherte Verbindung (https) voraussetzen. Um die Sicherheit der übertragenen Passwörter trotzdem zu gewährleisten, wird bei der erweiterten Methode ein zweistufiges Hash-Verfahren angewandt. Grundvoraussetzung hierfür ist, dass sowohl auf FACT-Finder Seite als auch auf Client Seite, dieselben geheimen Schlüssel verwendet werden.

Als Encoding zur Hash-Erzeugung wird UTF-8 verwendet. Als Hash-Algorithmus wird standardmäßig MD5 verwendet, es kann aber auf Wunsch auch ein anderer Algorithmus verwendet werden.

Die Hash-Bildung des Passwortes läuft folgendermaßen ab:

Klartext-Passwort: userpw

Aus dem Klartextpasswort wird zuerst ein Hash mit dem definierten Algorithmus. Im Beispiel wird aus userpw der Hash d8118f1bb6bd9998031053176a2c4bee. Dies ist der String, der in der einfachen Methode als Passwort übertragen werden muss. Da dieser Hash-Wert, wenn er ausspioniert werden sollte, genau so gut wie das Passwort zur Authentifizierung verwendet werden könnte, sollten Requests mit diesem Wert nur über gesicherte Verbindungen (https) erfolgen.

Will man die erweiterte Hash-Methode verwenden, so benötigt man noch die geheimen Schlüssel und einen aktuellen Zeitstempel (in Millisekunden seit Mitternacht 1. Januar 1970 GMT). Den Zeitstempel kann man in Java beispielsweise über die Methode System.currentTimeMillis(); bekommen. Diese Methode liefert den Zeitstempel bereits relativ zur Zeitzone UTC zurück.

Im Beispiel nehmen wir folgende Werte an:

Prefix: FACT-FINDER

Postfix: FACT-FINDER

Zeitstempel: 1270732953523

Grundlage für die erweiterte Übertragungsvariante ist das Ergebnis der einfachen Verschlüsselung, also der Hash des Klartextpasswortes. Diesem Hash wird der Prefix und der Zeitstempel vorangestellt und der Postfix hinten angefügt, aus dem Ergebnis wird erneut ein Hash generiert, der dann übertragen werden kann.

Im Beispiel ergibt sich so folgender String:


FACT-FINDER1270732953523d8118f1bb6bd9998031053176a2c4beeFACT-FINDER

Ergebnis ist: 167539c3e7aba8388eee252f429a4a1a. Dies wird als Passwort an FACT-Finder übertragen. Da sich der Zeitstempel je Aufruf ändert, ändert sich auch der Hash je Aufruf, was zu einer erhöhten Sicherheit führt. Der Hash ist per Standard 60 Sekunden gültig, sollten Sie eine andere Lebensdauer wünschen, teilen Sie uns dies bitte mit. Durch dieses Vorgehen ist ein Ausspionieren des übertragenen Hash-Werts unkritisch. Nach Ablauf des eingestellten Time-Outs ist eine Authentifizierung mit dem ausspionierten Hash-Wert nicht mehr möglich. Wenn die Uhren des Shopsystem-Servers und des FACT-Finder Servers recht synchron laufen, kann der Time-Out-Wert zur Erhöhung der Sicherheit verringert werden.

Login

Je nach Schnittstelle unterscheidet sich die Art des Logins. Bei Webservice-Anfragen muss ein AuthenticationToken-Objekt übergeben werden, bei dem die Werte entsprechend gesetzt sind. Bei XML und JSON werden die Logindaten, wie auch die Suchparameter, über die URL übergeben. Die Parameternamen hierfür sind username, password und timestamp.

Wenn wir das vorherige Beispiel wieder aufgreifen und das Passwort dem Benutzer user gehört, ergibt sich folgende Login-URL:


$stringEscapeUtils.escapeHtml($body)

Wenn Sie eine Anfrage an die REST-API senden, können die Anmeldedaten nicht über Parameter in der URL übergeben werden. Fügen Sie in diesem Fall z. B. den HTTP-Header 'Authorization: user:167539c3e7aba8388eee252f429a4a1a:1270732953523' zu Ihrer Anfrage hinzu.

Auf dieser Seite