Firma digitale HTTP(S) Richieste digitally-signed-http-requests

L'Audience Manager richiede HTTP(S) richieste server-to-server da firmare digitalmente per la validità. Questo documento descrive come firmare HTTP(S) richieste con chiavi private.

Panoramica overview

Utilizzando una chiave privata fornita da te e condivisa con Audience Manager, possiamo firmare digitalmente il HTTP(S) richieste inviate tra IRIS e il server HTTP(S). In questo modo:

  • Autenticità: solo il mittente con la chiave privata (IRIS) può inviare messaggi validi HTTP(S) messaggi al partner.
  • Integrità del messaggio: con questo approccio, anche su HTTP, sei protetto da un uomo nell'attacco di mezzo dove i messaggi vengono distorti.

IRIS dispone del supporto integrato per ruotare i tasti senza tempi di inattività, come mostrato nella Rotazione della chiave privata sezione successiva.

Informazioni da fornire info-to-provide

Per un HTTP(S) destinazione da server a server in tempo reale, contattare il Audience Manager consulente e specifica:

  • Chiave utilizzata per firmare la richiesta.
  • Il nome del HTTP(S) intestazione che conterrà la firma generata (X-Signature nell’intestazione di esempio seguente).
  • Facoltativo: tipo di hash utilizzato per la firma (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

Come funziona how-it-works

  1. IRIS crea il HTTP(S) messaggio da inviare al partner.
  2. IRIS crea una firma basata sul HTTP(S) e la chiave privata comunicata dal partner.
  3. IRIS invia il HTTP(S) al partner. Questo messaggio contiene la firma e il messaggio effettivo, come illustrato nell’esempio precedente.
  4. Il server partner riceve HTTP(S) richiesta. Legge il corpo del messaggio e la firma ricevuta da IRIS.
  5. In base al corpo del messaggio ricevuto e alla chiave privata, il server partner ricalcola la firma. Consulta la Come calcolare la firma come ottenere questo risultato.
  6. Confronta la firma creata sul server partner (ricevitore) con quella ricevuta da IRIS (mittente).
  7. Se le firme corrispondono, il autenticità e integrità del messaggio sono stati convalidati. Solo il mittente che dispone della chiave privata può inviare una firma valida (autenticità). Inoltre, un utente al centro non può modificare il messaggio e generare una nuova firma valida, in quanto non dispone della chiave privata (integrità del messaggio).

Come calcolare la firma calculate-signature

HMAC (Hash-based message authentication code) è il metodo utilizzato da IRIS per la firma di messaggi. Le implementazioni e le librerie sono disponibili praticamente in ogni linguaggio di programmazione. HMAC non presenta attacchi di estensione noti. Vedi un esempio in Java di seguito:

// 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 per HMAC implementazione hash è https://www.ietf.org/rfc/rfc2104.txt. Un sito di test: https://asecuritysite.com/encryption/hmac (tieni presente che devi convertire la codifica esadecimale in base64).

Rotazione della chiave privata rotate-private-key

Per ruotare la chiave privata, i partner devono comunicare la nuova chiave privata al proprio Adobe Audience Manager consulente. La vecchia chiave viene rimossa da Audience Manager e IRIS invia solo la nuova intestazione della firma. Le chiavi sono state ruotate.

Dati utilizzati per la firma data-signing

Per GET tipo di destinazioni, il messaggio utilizzato per la firma sarà REQUEST_PATH + STRINGA DI QUERY (ad es. /from-aam-s2s?sids=1,2,3). IRIS non tiene conto del nome host o HTTP(S) intestazioni: queste possono essere modificate/non configurate correttamente lungo il percorso o riportate in modo errato.

Per POST tipo di destinazioni, il messaggio utilizzato per la firma è il CORPO DELLA RICHIESTA. Anche in questo caso, le intestazioni o altri parametri di richiesta vengono ignorati.

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