HTTP(S)
-AnforderungenAudience 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.
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:
HTTP(S)
Nachrichten an den Partner senden.HTTP
sind 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 privaten Schlüssels unten dargestellt.
Wenden Sie sich an Ihren Audience Manager -Berater und geben Sie Folgendes an, wenn Sie ein HTTP(S)
Echtzeit-Server-zu-Server-Ziel haben:
HTTP(S)
-Kopfzeile, die die generierte Signatur enthält (X-Signatur in der Beispielkopfzeile unten).* 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
HTTP(S)
Nachricht, die an den Partner gesendet werden soll.HTTP(S)
Nachricht und dem vom Partner kommunizierten privaten Schlüssel basiert.HTTP(S)
Anfrage an den Partner. Diese Nachricht enthält die Signatur und die eigentliche Nachricht, wie im Beispiel oben gezeigt.HTTP(S)
-Anfrage. Er liest den Nachrichtentext und die Signatur, die von IRIS empfangen wurden.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.)
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.
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.