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

Audience Manager erfordert, dass die HTTP(S)-Server-zu-Server-Anforderungen für ihre Gültigkeit digital signiert werden. In diesem Dokument wird beschrieben, wie Sie HTTP(S)-Anfragen mit privaten Schlüsseln signieren können.

Überblick overview

Mithilfe eines von Ihnen bereitgestellten und für Audience Manager freigegebenen privaten Schlüssels können wir die HTTP(S)-Anforderungen digital signieren, die zwischen IRIS und Ihrem HTTP(S)-Server gesendet werden. Dadurch wird Folgendes sichergestellt:

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

IRIS verfügt über integrierte Unterstützung zum Drehen der Schlüssel ohne Ausfallzeiten, wie im Abschnitt Drehen des privatenSchlü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, wenn Sie ein HTTP(S) Echtzeit-Server-zu-Server-Ziel haben:

  • Der zum Signieren der Anfrage verwendete Schlüssel.
  • Der Name der HTTP(S)-Kopfzeile, 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 Signatur, die von IRIS empfangen wurden.
  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 Meldungsintegritä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 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 Hash-Implementierung von HMAC 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 lautet die zum Signieren verwendete Nachricht REQUEST_PATH + QUERY STRING (z. B. /from-aam-s2s?sids=1,2,3). IRIS berücksichtigt weder den Hostnamen noch 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