Authentifizierung

Vorbemerkungen

Für die externe Authentifizierung kann ein im integrierenden System generierter Access-Token eingesetzt werden. Berechnen Sie diesen Access-Token direkt auf Ihrem Server und nicht in Javascript, damit der API-Key Ihres Unternehmens nicht abgefangen werden kann.

Authentifizierung mittels API-Key

Die Authentifizierung mittels einem API-Key und Access-Token ist relativ einfach: Im Unternehmen wird von uns der sogenannte API-Key als Schlüssel hinterlegt. Dieser Schlüssel ist ausschließlich MEMOIO und Ihrer Anwendung bekannt. Soll ein Aufruf nun authentifiziert werden, so wird durch eine Hash-Funktion ein Access-Token berechnet. Dies wird weiter unten im Detail beschrieben. MEMOIO verifiziert den Access-Token indem es die gleiche Berechnung ausführt und prüft ob es zum selben Ergebnis kommt.

Warum ist diese Verfahren sicher?
Eine Hash-Funktion ist per Definition nicht umkehrbar, der Api-Key kann also nicht „zurückgerechnet“ werden.
Da der API-Key nur MEMOIO und Ihrer Anwendung bekannt ist, kann ein valider Access-Token nur von diesen Systemen stammen.
Da ein Zeitstempel zur Berechnung des Access-Token herangezogen wird, kann ein aufgezeichneter (abgefangener) Token allenfalls für kurze Zeit nachteilig verwendet werden.

 Wichtig

Geben Sie den API-Key niemals an Dritte weiter. Zeigen Sie das API-Key niemals in der Oberfläche oder verdeckt (z.B. in HTML-Code) an.

Das API-Key ist der Generalschlüssel zu Ihrem Unternehmen auf MEMOIO, womit zu jeder Zeit Zugriff auf sämtliche Services erfolgen kann.

Berechnung des Access-Tokens

Zur Berechnung des Access-Tokens wir die im Unternehmensprofil eingestellte Hash-Funktion MD5 oder SHA256 verwendet. Wir empfehlen die Verwendung von SHA256. Die folgenden Parameter fließen in die Berechnung mit ein:

Parameter Beschreibung
key

Der API-Key, welchen Sie in ihrem Unternehmensprofil auf MEMOIO finden.

company Die ID ihres Unternehmens auf MEMOIO.
today

Ein UNIX-Timestamp, auf ganze Tage gerundet.

Der Timestamp in Sekunden wird ganzzahlig durch 86400 (Anzahl der Sekunden pro Tag) dividiert. Das Umrechnen auf ganze Tage sorgt dafür, dass eine Anfrage effektiv einen Tag gültig bleibt.

Die entsprechende Berechnung würde in Java-Code folgendermaßen aussehen System.currentTimeMillis() / 1000 / 86400 - Beachten Sie, dass es sich um ganzzahlige Division handelt, das Ergebnis entspricht also dem abgerundeten Wert im Vergleich zu Division mit Dezimalzahlen.

Der berechnete Wert für eine ab heute beginnende eintägige Gültigkeit ist epochTimeInDays().

Der today Wert wird verwendet, um zu verhindern, dass ein Access-Token abgefangen und danach endlos lange weiterverwendet werden kann.

Beispiele

Der folgende Code berechnet den Access-Token mit MD5. Die + Zeichen sind hier als String-Verkettung zu verstehen.

token = Hashing.md5(key + Hashing.md5(key + company + today)).toString()

Der folgende Code berechnet den Access-Token mit SHA256. Die + Zeichen sind hier als String-Verkettung zu verstehen.

token = Hashing.sha256(key + Hashing.sha256(key + company + today)).toString()