Richieste con firma digitale HTTP(S)

Audience Manager richiede la firma digitale delle richieste HTTP(S) server per la validità. Questo documento descrive come firmare le richieste HTTP(S) con chiavi private.

Panoramica

Utilizzando una chiave privata fornita dall'utente e condivisa con Audience Manager, è possibile firmare digitalmente le HTTP(S) richieste inviate tra IRIS e il server HTTP(S). Ciò assicura:

  • Autenticità: solo il mittente con la chiave privata (IRIS) può inviare HTTP(S) messaggi validi al partner.
  • Integrità del messaggio: con questo approccio, anche su HTTP, si è protetti da un uomo in attacco medio dove i messaggi vengono distorti.

IRIS è dotato di supporto integrato per ruotare i tasti senza tempi di inattività, come mostrato nella sezione Ruotare la chiave privata sottostante.

Informazioni da fornire

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

  • Chiave utilizzata per firmare la richiesta.
  • Nome dell'intestazione HTTP(S) che conterrà la firma generata (firma X nell'intestazione di esempio seguente).
  • Facoltativo: il 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

  1. IRIS crea il HTTP(S) messaggio da inviare al partner.
  2. IRIS crea una firma basata sul HTTP(S) messaggio e sulla chiave privata comunicata dal partner.
  3. IRIS invia la HTTP(S) richiesta al partner. Questo messaggio contiene la firma e il messaggio effettivo, come mostrato nell'esempio precedente.
  4. Il server partner riceve la richiesta HTTP(S). 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. Vedere la sezione Come calcolare la firma appena sotto su come ottenere questo risultato.
  6. Confrontare la firma creata sul server partner (destinatario) con quella ricevuta da IRIS (mittente).
  7. Se le firme corrispondono, l'autenticità e integrità del messaggio sono state convalidate. Solo il mittente che possiede la chiave privata può inviare una firma valida (autenticità). Inoltre, un uomo 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

HMAC (Codice di autenticazione dei messaggi basato su hash) è il metodo utilizzato IRIS per la firma dei messaggi. Implementazioni e librerie sono disponibili in ogni linguaggio di programmazione. HMAC non ha attacchi di estensione noti. Vedere 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=

La RFC per l'implementazione hash HMAC è https://www.ietf.org/rfc/rfc2104.txt. Un sito di prova: https://asecuritysite.com/encryption/hmac (è necessario convertire la codifica esadecimale in base64).

Rotazione della chiave privata

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. I tasti sono stati ruotati.

Dati utilizzati per la firma

Per le destinazioni di tipo GET, il messaggio utilizzato per la firma sarà REQUEST_PATH + QUERY STRING (ad esempio /from-aam-s2s?sids=1,2,3). IRIS non prende in considerazione il nome host o le intestazioni HTTP(S), che possono essere modificate/non configurate lungo il percorso o riportate in modo errato.

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

In questa pagina