Digitale HTTP(S) digitally-signed-http-requests

Für den Audience Manager müssen die HTTP(S)-Server-zu-Server-Anfragen digital signiert werden, damit sie gültig sind. In diesem Dokument wird beschrieben, wie Sie HTTP(S) mit privaten Schlüsseln signieren können.

Überblick overview

Mit einem privaten Schlüssel, der von Ihnen bereitgestellt und für Audience Manager freigegeben wurde, können wir die HTTP(S) Anfragen, die zwischen IRIS und Ihrem HTTP(S)-Server gesendet werden, digital signieren. Dadurch wird Folgendes sichergestellt:

  • Authentizität: Nur der Absender mit dem privaten Schlüssel (IRIS) kann gültige HTTP(S) an den Partner senden.
  • Nachrichtenintegrität: Mit diesem Ansatz sind Sie selbst auf HTTP vor einem Mann im mittleren Angriff geschützt, bei dem die Nachrichten verzerrt werden.

IRIS verfügt über integrierte Unterstützung zum Drehen der Schlüssel ohne Ausfallzeiten, wie im Abschnitt Drehen des privaten Schlüssels unten gezeigt.

Zu übermittelnde Informationen info-to-provide

Wenden Sie sich für ein HTTP(S) Echtzeit-Server-zu-Server-Ziel an Ihren Audience Manager und geben Sie Folgendes an:

  • Der Schlüssel, mit dem die Anfrage signiert wurde.
  • Der Name des HTTP(S), der die generierte Signatur enthält (X-Signatur im Beispiel-Header unten).
  • Optional: Der für die Signatur verwendete Hash-Typ (md5, sha1, sha256).
* Connected to partner.website.com (127.0.0.1) port 80 (#0)
> POST /webpage HTTP/1.1
> Host: partner.host.com
> Accept: */*
> Content-Type: application/json
> Content-Length: 20
> X-Signature: +wFdR/afZNoVqtGl8/e1KJ4ykPU=
POST message content

Funktionsweise how-it-works

  1. IRIS erstellt die HTTP(S) Nachricht, die an den Partner gesendet werden soll.
  2. IRIS erstellt eine Signatur basierend auf der HTTP(S) Nachricht und dem vom Partner übermittelten privaten Schlüssel.
  3. IRIS sendet die HTTP(S) an den Partner. Diese Nachricht enthält die Signatur und die eigentliche Nachricht, wie im Beispiel oben gezeigt.
  4. Der Partnerserver erhält die HTTP(S). Er liest den Nachrichtentext und die von IRIS erhaltene Signatur.
  5. Basierend auf dem empfangenen Nachrichtentext und dem privaten Schlüssel berechnet der Partner-Server die Signatur neu. Wie Sie erreichen, erfahren Sie im AbschnittBerechnen der Signatur“ weiter unten.
  6. Vergleichen Sie die auf dem Partnerserver (Empfänger) erstellte Signatur mit der von IRIS (Absender) empfangenen Signatur.
  7. Wenn die Signaturen übereinstimmen, die Authentizität“ und Nachrichtenintegrität validiert. Nur der Absender, der über den privaten Schlüssel verfügt, kann eine gültige Signatur (Authentizität) senden. Außerdem kann ein Mann in der Mitte die Nachricht nicht ändern und keine neue gültige Signatur erzeugen, da er nicht über den privaten Schlüssel (Nachrichtenintegrität) verfügt.

Berechnen der Signatur calculate-signature

HMAC (Hash-basierter Nachrichtenauthentifizierungs-Code) ist die Methode, die von IRIS zum Signieren von Nachrichten verwendet wird. Implementierungen und Bibliotheken sind grundsätzlich in jeder Programmiersprache verfügbar. HMAC hat keine bekannten Erweiterungsangriffe. Siehe ein Beispiel in Java unten:

// Message to be signed.
// For GET type HTTP(S) destinations, the message used for signing will be the REQUEST_PATH + QUERY_STRING
// For POST type HTTP(S) destinations, the message used for signing will be the REQUEST_BODY.
// String getData = "/from-aam-s2s?sids=1,2,3";
String postData = "POST message content";
// Algorithm used. Currently supported: HmacSHA1, HmacSHA256, HmacMD5.
String algorithm = "HmacSHA1";
// Private key shared between the partner and Adobe Audience Manager.
String key = "sample_partner_private_key";

// Perform signing.
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), algorithm);
Mac mac = Mac.getInstance(algorithm);
mac.init(signingKey);
byte[] result = mac.doFinal(postData.getBytes());

String signature = Base64.encodeBase64String(result).trim();
// signature = +wFdR/afZNoVqtGl8/e1KJ4ykPU=

Die RFC für die HMAC Hash-Implementierung ist https://www.ietf.org/rfc/rfc2104.txt. Eine Test-Site: https://asecuritysite.com/encryption/hmac (beachten Sie, dass Sie die 🔗-Codierung in base64 konvertieren).

Privaten Schlüssel drehen rotate-private-key

Um den privaten Schlüssel zu rotieren, müssen Partner den neuen privaten Schlüssel ihrem Adobe Audience Manager mitteilen. Der alte Schlüssel wird aus Audience Manager entfernt und IRIS nur die neue Signaturkopfzeile. Die Tasten wurden gedreht.

Zum Signieren verwendete Daten data-signing

Für Ziele vom Typ GET wird zum Signieren die Nachricht REQUEST_PATH + QUERY STRING verwendet (z. B. /from-aam-s2s?sids=1,2,3). IRIS berücksichtigt nicht den Host-Namen oder HTTP(S)-Header - diese können entlang des Pfads geändert/falsch konfiguriert oder falsch gemeldet werden.

Bei Zielen vom Typ "POST" ist die zum Signieren verwendete Nachricht der ANFRAGETEXT. Auch hier werden Kopfzeilen oder andere Anfrageparameter ignoriert.

recommendation-more-help
de293fbf-b489-49b0-8daa-51ed303af695