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
- IRIS crea il
HTTP(S)
messaggio da inviare al partner. - IRIS crea una firma basata sul
HTTP(S)
e la chiave privata comunicata dal partner. - IRIS invia il
HTTP(S)
al partner. Questo messaggio contiene la firma e il messaggio effettivo, come illustrato nell’esempio precedente. - Il server partner riceve
HTTP(S)
richiesta. Legge il corpo del messaggio e la firma ricevuta da IRIS. - 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.
- Confronta la firma creata sul server partner (ricevitore) con quella ricevuta da IRIS (mittente).
- 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.