HTTP(S)
RichiesteL'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.
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:
HTTP(S)
messaggi al partner.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.
Per un HTTP(S)
destinazione da server a server in tempo reale, contattare il Audience Manager consulente e specifica:
HTTP(S)
intestazione che conterrà la firma generata (X-Signature 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)
e la chiave privata comunicata dal partner.HTTP(S)
al partner. Questo messaggio contiene la firma e il messaggio effettivo, come illustrato nell’esempio precedente.HTTP(S)
richiesta. Legge il corpo del messaggio e la firma ricevuta da IRIS.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).
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.
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.