HTTP(S) begäranden som signerats digitalt digitally-signed-http-requests

Audience Manager kräver att HTTP(S) server-till-server-begäranden signeras digitalt för giltighet. I det här dokumentet beskrivs hur du kan signera HTTP(S)-begäranden med privata nycklar.

Översikt overview

Med hjälp av en privat nyckel som du har angett och som delas med Audience Manager kan vi digitalt signera HTTP(S)-begäranden som skickas mellan IRIS och din HTTP(S)-server. Detta säkerställer att

  • Autenticitet: Endast avsändaren som har den privata nyckeln (IRIS) kan skicka giltiga HTTP(S) meddelanden till partnern.
  • Meddelandeintegritet: med den här metoden, även på HTTP, skyddas du från en person i den mittersta attack där meddelandena förvrängs.

IRIS har inbyggt stöd för att rotera nycklarna utan driftavbrott, vilket visas i avsnittet Rotera den privata nyckeln nedan.

Information du behöver ange info-to-provide

Kontakta din HTTP(S)-konsult och ange följande för ett Audience Manager server-till-server-mål i realtid:

  • Nyckeln som användes för att signera begäran.
  • Namnet på rubriken HTTP(S) som ska innehålla den genererade signaturen (X-Signature i exempelrubriken nedan).
  • Valfritt: den typ av hash som används för signaturen (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

Så här fungerar det how-it-works

  1. IRIS skapar det HTTP(S)-meddelande som ska skickas till partnern.
  2. IRIS skapar en signatur baserat på meddelandet HTTP(S) och den privata nyckel som kommuniceras av partnern.
  3. IRIS skickar begäran HTTP(S) till partnern. Det här meddelandet innehåller signaturen och det faktiska meddelandet, vilket visas i exemplet ovan.
  4. Partnerservern tar emot HTTP(S)-begäran. Det läser meddelandetexten och signaturen som har tagits emot från IRIS.
  5. Baserat på det mottagna meddelandet och den privata nyckeln beräknar partnerservern om signaturen. Se avsnittet Så här beräknar du signaturen precis nedan om hur du uppnår detta.
  6. Jämför den signatur som skapats på partnerservern (mottagaren) med den som tagits emot från IRIS (avsändaren).
  7. Om signaturerna matchar varandra har autenticiteten och meddelandeintegriteten validerats. Endast avsändaren, som har den privata nyckeln, kan skicka en giltig signatur (autenticitet). Dessutom kan en man i mitten inte ändra meddelandet och generera en ny giltig signatur eftersom de inte har den privata nyckeln (meddelandeintegritet).

Så här beräknar du signaturen calculate-signature

HMAC (Hash-baserad meddelandeautentiseringskod) är den metod som används av IRIS för meddelandesignering. Implementeringar och bibliotek är tillgängliga i stort sett i alla programmeringsspråk. HMAC har inga kända tilläggsattacker. Se ett exempel i Java nedan:

// 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=

RFC för hash-implementeringen HMAC är https://www.ietf.org/rfc/rfc2104.txt. En testwebbplats: https://asecuritysite.com/encryption/hmac (observera att du måste konvertera hex-kodningen till base64).

Rotera den privata nyckeln rotate-private-key

Om du vill rotera den privata nyckeln måste partners kommunicera den nya privata nyckeln till sin Adobe Audience Manager-konsult. Den gamla nyckeln tas bort från Audience Manager och IRIS skickar bara den nya signaturrubriken. Tangenterna har roterats.

Data som används för signering data-signing

För mål av typen GET är meddelandet som används för signering REQUEST_PATH + QUERY STRING (t.ex. /from-am-s2s?sids=1,2,3). IRIS tar inte hänsyn till värdnamnet eller HTTP(S) rubriker - dessa kan ändras/felkonfigureras längs sökvägen eller rapporteras felaktigt.

För mål av typen POST är meddelandet som används för signering REQUEST BODY. Även här ignoreras rubriker och andra frågeparametrar.

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