Show Menu
TEMAS×

Solicitudes firmadas HTTP digitalmente

Audience Manager requiere que las solicitudes HTTP servidor a servidor estén firmadas digitalmente para su validez. Este documento describe cómo se pueden firmar HTTP solicitudes con claves privadas.

Información general

Con una clave privada proporcionada por usted y compartida con Audience Manager, podemos firmar digitalmente las HTTP solicitudes enviadas entre IRIS y su servidor HTTP. Esto garantiza:
  • Autenticidad : solo el remitente que tiene la clave privada (IRIS) puede enviar HTTP(S) mensajes válidos al socio.
  • Integridad del mensaje: con este enfoque, incluso en HTTP , estás protegido de un hombre en el ataque medio donde los mensajes se distorsionan.
IRIS cuenta con soporte integrado para rotar las claves con cero downtime, como se muestra en la sección Rotar la clave privada a continuación.

Información que debe proporcionar

Para un destino de servidor a servidor en tiempo HTTP real, póngase en contacto con su Audience Manager asesor y especifique:
  • Clave utilizada para firmar la solicitud.
  • El nombre del HTTP encabezado que contendrá la firma generada (firma X en el encabezado de ejemplo siguiente).
  • Opcional: tipo de hash utilizado para 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

How it works

  1. IRIS crea el HTTP mensaje que se enviará al socio.
  2. IRIS crea una firma basada en el mensaje HTTP y la clave privada comunicada por el socio.
  3. IRIS envía la HTTP(S) solicitud al socio. Este mensaje contiene la firma y el mensaje real, como se muestra en el ejemplo anterior.
  4. El servidor asociado recibe la HTTP(S) solicitud. Lee el cuerpo del mensaje y la firma recibida de IRIS.
  5. Según el cuerpo del mensaje recibido y la clave privada, el servidor asociado vuelve a calcular la firma. Consulte la sección Cómo calcular la firma que aparece a continuación sobre cómo conseguirlo.
  6. Compare la firma creada en el servidor del socio (receptor) con la que recibió IRIS (remitente).
  7. Si las firmas coinciden, se validan la autenticidad y la integridad del mensaje. Solo el remitente, que tiene la clave privada, puede enviar una firma válida (autenticidad). Además, un hombre del medio no puede modificar el mensaje ni generar una nueva firma válida, ya que no tienen la clave privada (integridad del mensaje).

Cómo calcular la firma

HMAC (Código de autenticación de mensajes basado en hash) es el método que se utiliza IRIS para la firma de mensajes. Las implementaciones y bibliotecas están disponibles básicamente en todos los lenguajes de programación. HMAC no tiene ataques de extensión conocidos. Vea un ejemplo en Java la siguiente sección:
// Message to be signed.
// For GET type HTTP destinations, the message used for signing will be the REQUEST_PATH + QUERY_STRING
// For POST type HTTP 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=

El RFC para la implementación del HMAC hash es https://www.ietf.org/rfc/rfc2104.txt . Un sitio de prueba: https://asecuritysite.com/encryption/hmac (tenga en cuenta que debe convertir la codificación hexadecimal a base64).

Rotación de la clave privada

Por motivos de seguridad, se recomienda rotar periódicamente la clave privada. Depende de usted decidir la clave privada y el período de rotación. Para lograr la rotación de claves sin tiempo de inactividad, IRIS admite la adición de varios encabezados de firma. Un encabezado contendrá la firma generada con la clave antigua, otro encabezado contendrá la firma generada con la nueva clave privada. Consulte los siguientes pasos en detalle:
  1. El socio comunica la nueva clave privada a Adobe Audience Manager.
  2. IRIS comenzará a enviar dos encabezados de firma (uno con la clave antigua y el otro con la nueva clave).
  3. Una vez que comience a recibir ambos encabezados, puede optar por descartar la clave antigua y sólo mirar la nueva firma.
  4. La clave antigua se elimina Audience Manager y IRIS sólo envía el nuevo encabezado de firma. Se han rotado las teclas.

Datos utilizados para firmar

Para los destinos GET de tipo, el mensaje utilizado para la firma será la CADENA DE CONSULTA + REQUEST_PATH (p. ej. /from-aam-s2s?sids=1,2,3 ). IRIS no tiene en cuenta el nombre de host o los encabezados, ya que estos pueden modificarse o configurarse incorrectamente a lo largo de la ruta o informarse incorrectamente. HTTP
Para los destinos de POST tipo, el mensaje utilizado para firmar es el CUERPO DE SOLICITUD . De nuevo, se omiten los encabezados u otros parámetros de solicitud.