HTTP(S)
firmadas digitalmenteEl Audience Manager requiere que las HTTP(S)
solicitudes de servidor a servidor se firmen digitalmente para su validez. Este documento describe cómo se pueden firmar HTTP(S)
solicitudes con claves privadas.
Utilizando una clave privada que usted ha proporcionado y que ha compartido con Audience Manager, podemos firmar digitalmente las solicitudes HTTP(S)
que se envían entre IRIS y su servidor HTTP(S). Esto garantiza:
HTTP(S)
mensajes válidos al socio.HTTP
, estás protegido de un hombre en el ataque intermedio donde los mensajes se distorsionan.IRIS dispone de soporte integrado para rotar las claves sin downtime, como se muestra en la sección Rotar la clave privada a continuación.
Para obtener un HTTP(S)
destino de servidor a servidor en tiempo real, póngase en contacto con su Audience Manager consultor y especifique:
HTTP(S)
que contendrá la firma generada (firma X en el encabezado de ejemplo siguiente).* 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)
mensaje que se enviará al socio.HTTP(S)
mensaje y en la clave privada comunicada por el socio.HTTP(S)
solicitud al socio. Este mensaje contiene la firma y el mensaje real, como se ve en el ejemplo anterior.HTTP(S)
. Lee el cuerpo del mensaje y la firma recibida de IRIS.HMAC (Código de autenticación de mensajes basado en hash) es el método que se utiliza en IRIS 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 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=
El 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).
Para girar la clave privada, los socios deben comunicar la nueva clave privada a su Adobe Audience Manager consultor. La clave antigua se elimina de Audience Manager y IRIS solo envía el nuevo encabezado de firma. Se han girado las teclas.
Para destinos de tipo GET
, el mensaje utilizado para la firma será REQUEST_PATH + QUERY STRING (p. ej. /from-aam-s2s?sids=1,2,3). IRIS no tiene en cuenta los encabezados hostname o HTTP(S)
- estos pueden modificarse o configurarse incorrectamente a lo largo de la ruta o notificarse incorrectamente.
Para destinos de tipo POST
, el mensaje utilizado para firmar es REQUEST BODY. De nuevo, se omiten los encabezados u otros parámetros de solicitud.