HTTP(S) solicitudes firmadas digitalmente digitally-signed-http-requests

El Audience Manager requiere que las HTTP(S) solicitudes de servidor a servidor se firmen digitalmente para su validez. Este documento describe cómo puede firmar HTTP(S) solicitudes con claves privadas.

Información general overview

Usando una clave privada proporcionada por usted y compartida con Audience Manager, podemos firmar digitalmente las HTTP(S) solicitudes enviadas entre IRIS y su servidor HTTP(S). 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 el HTTP, usted está protegido de un hombre en el ataque intermedio donde los mensajes se distorsionan.

IRIS tiene soporte integrado para girar las claves sin tiempo de inactividad, como se muestra en la sección Rotación de la clave privada a continuación.

Información que debe proporcionar info-to-provide

Para un destino de servidor a servidor en tiempo real de HTTP(S), póngase en contacto con el consultor de Audience Manager y especifique:

  • La clave utilizada para firmar la solicitud.
  • Nombre del encabezado HTTP(S) que contendrá la firma generada (X-Signature en el encabezado de ejemplo siguiente).
  • Opcional: el 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

Cómo funciona how-it-works

  1. IRIS crea el mensaje HTTP(S) para enviarlo al socio.
  2. IRIS crea una firma basada en el mensaje HTTP(S) y en la clave privada comunicada por el socio.
  3. IRIS envía la solicitud HTTP(S) al socio. Este mensaje contiene la firma y el mensaje real, tal como se ve en el ejemplo anterior.
  4. El servidor asociado recibe la solicitud HTTP(S). Lee el cuerpo del mensaje y la firma recibida de IRIS.
  5. En función del cuerpo del mensaje recibido y de la clave privada, el servidor del socio vuelve a calcular la firma. Consulte la sección Cómo calcular la firma justo debajo para saber cómo conseguirlo.
  6. Comparar la firma creada en el servidor asociado (receptor) con la recibida de IRIS (remitente).
  7. Si las firmas coinciden, se han validado 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 en el medio no puede modificar el mensaje y generar una nueva firma válida, ya que no tienen la clave privada (integridad del mensaje).

Cómo calcular la firma calculate-signature

HMAC (código de autenticación de mensaje basado en hash) es el método usado por IRIS para firmar 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 a continuación:

// 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 para la implementación de hash HMAC 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 rotate-private-key

Para rotar la clave privada, los socios deben comunicar la nueva clave privada a su consultor de Adobe Audience Manager. La clave antigua se quitó de Audience Manager y IRIS solo envía el nuevo encabezado de firma. Las llaves han sido giradas.

Datos utilizados para la firma data-signing

Para destinos de tipo GET, el mensaje usado para firmar será REQUEST_PATH + QUERY STRING (por ejemplo /from-aam-s2s?sids=1,2,3). IRIS no tiene en cuenta los encabezados de nombre de host o HTTP(S), que pueden modificarse o configurarse incorrectamente en la ruta de acceso o notificarse incorrectamente.

Para destinos de tipo POST, el mensaje usado para firmar es SOLICITAR CUERPO. De nuevo, se ignoran los encabezados u otros parámetros de solicitud.

recommendation-more-help
de293fbf-b489-49b0-8daa-51ed303af695