Show Menu
SUJETS×

Demandes HTTP(S) signées numériquement

Gestionnaire de de requiert que les requêtes HTTP(S) serveur à serveur soient numériquement signées pour être valides. Ce décrit comment signer HTTP(S) des requêtes à l’aide de clés privées.

Aperçu

A l’aide d’une clé privée fournie par vous et partagée avec Audience Managervous, nous pouvons signer numériquement les HTTP(S) requêtes envoyées entre IRIS et votre serveur HTTP(S). Cela garantit :
  • Authenticité : seul l'expéditeur possédant la clé privée (IRIS) peut envoyer HTTP(S) des messages valides au partenaire.
  • Intégrité du message : avec cette approche, même HTTP , vous êtes protégé contre un homme dans l' attaque du milieu où les messages sont déformés.
IRIS prend en charge la rotation des clés sans temps d’arrêt, comme illustré dans la section Rotation de la clé privée ci-dessous.

Informations à fournir

Pour une destination serveur à serveur en HTTP(S) temps réel, contactez votre Audience Manager consultant et spécifiez :
  • Clé utilisée pour signer la requête.
  • Nom de l’ HTTP(S) en-tête qui contiendra la signature générée (X-Signature dans l’exemple d’en-tête ci-dessous).
  • Facultatif : type de hachage utilisé pour la signature (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

How it works

  1. IRIS crée le HTTP(S) message à envoyer au partenaire.
  2. IRIS crée une signature basée sur le HTTP(S) message et la clé privée communiqués par le partenaire.
  3. IRIS envoie la HTTP(S) demande au partenaire. Ce message contient la signature et le message réel, comme illustré dans l’exemple ci-dessus.
  4. Le serveur partenaire reçoit la HTTP(S) demande. Il lit le corps du message et la signature reçue de IRIS.
  5. En fonction du corps du message reçu et de la clé privée, le serveur partenaire recalcule la signature. Voir la section Comment calculer la signature juste dessous sur la manière d’y parvenir.
  6. Comparez la signature créée sur le serveur partenaire (destinataire) à celle reçue de IRIS (expéditeur).
  7. Si les signatures correspondent, l’ authenticité et l’intégrité du message ont été validées. Seul l’expéditeur, qui possède la clé privée, peut envoyer une signature valide (authenticité). De plus, un homme au milieu ne peut pas modifier le message et générer une nouvelle signature valide, puisqu'il n'a pas la clé privée (intégrité du message).

Comment calculer la signature

HMAC (Code d’authentification de message basé sur le hachage) est la méthode utilisée par IRIS pour la signature de message. Les implémentations et les bibliothèques sont disponibles dans tous les langages de programmation. HMAC n’a pas d’attaques d’extension connues. Reportez-vous à un exemple Java ci-dessous :
// 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 pour l’implémentation du HMAC hachage est https://www.ietf.org/rfc/rfc2104.txt . Un site de test : https://asecuritysite.com/encryption/hmac (notez que vous devez convertir le codage hexadécimal en base64).

Rotation de la clé privée

Pour des raisons de sécurité, il est recommandé de faire pivoter périodiquement la clé privée. C'est à vous de décider de la clé privée et de la période de rotation. Pour obtenir la rotation des clés sans temps d’arrêt, IRIS prend en charge l’ajout de plusieurs en-têtes de signature. Un en-tête contient la signature générée avec l’ancienne clé, un autre contient la signature générée à l’aide de la nouvelle clé privée. Reportez-vous aux étapes détaillées ci-dessous :
  1. Le partenaire communique la nouvelle clé privée à Adobe Audience Manager.
  2. L’ancienne clé est supprimée Audience Manager et IRIS envoie uniquement le nouvel en-tête de signature. Les clés ont été tournées.

Données utilisées pour la signature

Pour les destinations GET de type, le message utilisé pour la signature sera REQUEST_PATH + CHAÎNE de (ex. /from-aam-s2s?sids=1,2,3 ). IRIS ne prend pas en compte le nom d’hôte ou les en-têtes HTTP(S) - ceux-ci peuvent être modifiés/mal configurés le long du chemin d’accès ou signalés de manière incorrecte.
Pour les destinations POST de type, le message utilisé pour la signature est le CORPS DE REQUÊTE. Encore une fois, les en-têtes ou d’autres paramètres de requête sont ignorés.