HTTP(S)
请求Audience Manager 要求 HTTP(S)
对服务器到服务器的请求进行数字签名,以使其有效性。 此文档描述如何通过私钥对请求进行签名 HTTP(S)
。
通过使用您提供的私有密钥并与 Audience Manager 共享,我们可以对 IRIS 🔗 和您的 HTTP (S)服务器之间 发送的 HTTP(S)
请求进行数字签名。这可确保:
HTTP(S)
消息。HTTP
,您不會受到中間人攻擊的威脅,因為訊息會遭到扭曲。IRIS 具有內建支援,可在零停機情況下輪換金鑰,如 旋轉私密金鑰 區段底下。
對於 HTTP(S)
即時伺服器對伺服器目的地,請聯絡您的 Audience Manager 顧問,並指定:
HTTP(S)
。* 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)
创建要发送到合作伙伴的消息。HTTP(S)
。HTTP(S)
向合作夥伴提出要求。 此訊息包含簽名和實際訊息,如上面的範例所示。HTTP(S)
要求。 它會讀取訊息內文和收到的簽名 IRIS.HMAC (基于哈希的消息身份验证代码)是用于 IRIS 消息签名的方法。 实施和 Libraries 主要在每种编程语言中提供。 HMAC 没有已知的扩展攻击。 请参阅下面的示例 Java :
// 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 for HMAC 雜湊實作是 https://www.ietf.org/rfc/rfc2104.txt. 測試網站: https://asecuritysite.com/encryption/hmac (請注意,您必須 轉換 十六進位編碼為base64)。
若要輪換私密金鑰,合作夥伴必須將新的私密金鑰通訊給其 Adobe Audience Manager 顧問。 舊金鑰已從中移除 Audience Manager 和 IRIS 僅傳送新簽章標頭。 鍵已旋轉。
对于 GET
类型目标,用于签名的消息将是 REQUEST_PATH + 查询字符串 (例如 /from-aam-s2s? sid = 1、2、3 )。 IRIS 不会执行帐户主机名或 HTTP(S)
标头,可以通过路径对其进行修改/配置错误,或报告错误。
对于 POST
类型目标,用于签名的消息是 请求正文 。 同样,将忽略标头或其他请求参数。