Digital signierte HTTP(S)-Anforderungen digitally-signed-http-requests

Für den Audience Manager müssen die HTTP(S) Server-zu-Server-Anforderungen digital signiert werden, damit sie gültig sind. In diesem Dokument wird beschrieben, wie Sie HTTP(S)-Anfragen 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 digital signieren, die zwischen IRIS und Ihrem HTTP(S)-Server gesendet werden. Dadurch wird Folgendes sichergestellt:

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

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

Informationen, die Sie bereitstellen müssen info-to-provide

Wenden Sie sich an Ihren Audience Manager -Berater und geben Sie Folgendes an, um ein Echtzeit-Ziel von Server zu Server zu erreichen:HTTP(S)

  • Der zum Signieren der Anfrage verwendete Schlüssel.
  • Der Name der Kopfzeile HTTP(S), die die generierte Signatur enthält (X-Signatur in der Beispielkopfzeile 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, die auf der HTTP(S) -Nachricht und dem vom Partner kommunizierten privaten Schlüssel basiert.
  3. IRIS sendet die HTTP(S) -Anfrage an den Partner. Diese Nachricht enthält die Signatur und die eigentliche Nachricht, wie im Beispiel oben gezeigt.
  4. Der Partner-Server erhält die HTTP(S) -Anfrage. Er liest den Nachrichtentext und die von IRIS erhaltene Signatur.
  5. Basierend auf dem empfangenen Nachrichten-Textkörper und dem privaten Schlüssel berechnet der Partnerserver die Signatur neu. Weitere Informationen dazu finden Sie im Abschnitt Berechnung der Signatur weiter unten.
  6. Vergleichen Sie die auf dem Partner-Server (Empfänger) erstellte Signatur mit der von IRIS (Absender) empfangenen Signatur.
  7. Wenn die Signaturen übereinstimmen, wurden die Authentizität und die 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 eine neue gültige Signatur generieren, da er nicht über den privaten Schlüssel (Integrität der Nachricht) verfügt.

Berechnung der Signatur calculate-signature

HMAC (Hash-basierter Authentifizierungscode für Nachrichten) 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 lautet https://www.ietf.org/rfc/rfc2104.txt. Eine Test-Site: https://asecuritysite.com/encryption/hmac (Beachten Sie, dass Sie die Hex-Kodierung in base64 konvertieren müssen.)

Drehen des privaten Schlüssels rotate-private-key

Um den privaten Schlüssel zu drehen, müssen Partner den neuen privaten Schlüssel ihrem Adobe Audience Manager -Berater mitteilen. Der alte Schlüssel wird aus Audience Manager entfernt und IRIS sendet nur den neuen Signaturheader. Die Schlüssel wurden gedreht.

Zum Signieren verwendete Daten data-signing

Bei Zielen vom Typ GET ist die zum Signieren verwendete Nachricht die REQUEST_PATH + QUERY STRING (z. B. /from-aam-s2s?sids=1,2,3). IRIS berücksichtigt nicht den Hostnamen oder die HTTP(S) -Kopfzeilen - diese können über den Pfad geändert/falsch konfiguriert oder falsch gemeldet werden.

Bei Zielen vom Typ POST ist die zum Signieren verwendete Nachricht der ANFORDERUNGSKÖRPER. Auch hier werden Kopfzeilen oder andere Anforderungsparameter ignoriert.

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