HTTP(S)
con firma digitaleAd Audience Manager, la validità delle richieste da server a server deve essere firmata digitalmente. HTTP(S)
Questo documento descrive come firmare le richieste HTTP(S)
con chiavi private.
Utilizzando una chiave privata fornita dall'utente e condivisa con Audience Manager, possiamo firmare digitalmente le richieste HTTP(S)
inviate tra IRIS e il server HTTP(S). Ciò assicura:
HTTP(S)
messaggi validi al partner.HTTP
, si è protetti da un uomo in attacco medio dove i messaggi vengono distorti.IRIS dispone di un supporto integrato per ruotare i tasti con zero tempi di inattività, come illustrato nella sezione Ruota la chiave privata riportata di seguito.
Per una destinazione da server a server in tempo reale HTTP(S)
, contatta il tuo consulente Audience Manager e specifica:
HTTP(S)
che conterrà la firma generata (firma X nell'intestazione di esempio seguente).* 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)
messaggio da inviare al partner.HTTP(S)
messaggio e sulla chiave privata comunicata dal partner.HTTP(S)
richiesta al partner. Questo messaggio contiene la firma e il messaggio effettivo, come illustrato nell’esempio precedente.HTTP(S)
. Legge il corpo del messaggio e la firma ricevuta da IRIS.HMAC (Codice di autenticazione dei messaggi basato su hash) è il metodo utilizzato da IRIS per la firma dei messaggi. Le implementazioni e le librerie sono disponibili praticamente in ogni linguaggio di programmazione. HMAC non ha attacchi di estensione noti. Vedi un esempio in Java qui sotto:
// 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’ HMAC implementazione hash è https://www.ietf.org/rfc/rfc2104.txt. Un sito di prova: https://asecuritysite.com/encryption/hmac (nota che è necessario convertire la codifica esadecimale in base64).
Per ruotare la chiave privata, i partner devono comunicare la nuova chiave privata al proprio Adobe Audience Manager consulente. La chiave precedente viene rimossa da Audience Manager e IRIS invia solo la nuova intestazione di firma. I tasti sono stati ruotati.
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)
- queste possono essere modificate/configurate in modo errato lungo il percorso o riportate in modo errato.
Per le destinazioni di tipo POST
, il messaggio utilizzato per la firma è REQUEST BODY. Anche in questo caso, le intestazioni o altri parametri di richiesta vengono ignorati.