Inhalt dieses Artikels
- Vorbemerkungen
- Verifizierung der Signatur
1. Vorbemerkungen
Callbacks ermöglichen es, Informationen zu definierten Ereignissen im plenigo-System auf andere Systeme zu übertragen.
Bei der Integration von plenigo ist es möglicherweise gewünscht, dass Drittsysteme Informationen zu Ereignisse empfangen, welche im plenigo System auftreten, damit diese Systeme entsprechend Aktionen ausführen können.
Zu diesem Zweck können sogenannte Callbacks im Merchant Backend definiert werden.
Hinweis: |
Beispiele für Ereignisse:
- Die Anlage eines Kunden in plenigo soll automatisch auch an einen Kundendaten-Hub übermittelt werden.
- Die Änderung von Opt-In-Einstellungen über plenigo soll automatisch an ein Marketing-Tool übermittelt werden.
- Die Information über die Kündigung eines Abonnements soll automatisch an ein Newsletter-Versandtool übermittelt werden.
2. Verifizierung der Signatur
Signatur-Header für Callbacks
Jeder Callback wird über einen Signatur-Header signiert.
Der Header heißt plenigo-signature.
plenigo-signature: t=1492774577,s=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
Der Header enthält zwei Elemente. Einen Zeitstempel, der den Zeitpunkt angibt, zu dem der Rückruf erzeugt wurde (t), und einen hashbasierten Nachrichtenauthentifizierungscode (HMAC) mit SHA-256 (s).
Um den Header zu verifizieren, gehen Sie wie folgt vor:
Schritt 1: Extrahieren des Zeitstempels und der Signaturen aus dem Header
Der Inhalt des Headers kann mit dem Zeichen "," (Komma) getrennt werden, um eine Liste von Elementen zu erhalten. Durch das Zeichen "=" (Gleichheitszeichen) als Trennzeichen kann jedes Element in ein Datenpaar aus einem Präfix und einem Wert unterteilt werden.
Werte der Präfixe:
- "t" = Zeitstempel
- "u" = unique Id
- "s" = eine Signatur oder mehrere Signaturen
Schritt 2: Vorbereiten der Zeichenkette "signed_payload"
Die Zeichenfolge "signed_payload" wird durch eine Verkettung erstellt:
- Der Zeitstempel als String
- Das Zeichen "." (Punkt)
- Der eigentliche JSON-Payload (d. h. der Anfrageinhalt) als String
Schritt 3: Bestimmung der erwarteten Signatur
Es wird ein HMAC Authentifizierungscode mit einer SHA256-Hash-Funktion benötigt. Das Signiergeheimnis des Endpunkts wird als Schlüssel und die Zeichenkette "signed_payload" als Nachricht verwendet.
Schritt 4: Vergleichen Sie die Signaturen
Die Signatur (oder Signaturen) in der Kopfzeile sollten mit der erwarteten Signatur verglichen werden.
Für den Vergleich sollte die Differenz zwischen dem aktuellen Zeitstempel und dem empfangenen Zeitstempel erechnet werden um dann zu entscheiden ob die Differenz innerhalb einer akzeptablen Toleranz liegt.
Zum Schutz vor timing attacks (einr Variante eines Seitenkanalangriffs) empfiehlt es sich einen zeitlich konstanten String-Vergleich durchzuführen, um die erwartete Signatur mit jeder der empfangenen Signaturen zu vergleichen.