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)
標題的名稱(下面示例標題中的X-Signature)。* 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 的方法。基本上每個程式設計語言都提供實作和程式庫。 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=
用於HMAC散列實現的RFC是https://www.ietf.org/rfc/rfc2104.txt。 測試網站:https://asecuritysite.com/encryption/hmac(請注意,您必須將十六進位編碼轉換為base64)。
若要輪換私密金鑰,合作夥伴必須將新的私密金鑰傳達給其Adobe Audience Manager顧問。 舊密鑰從Audience Manager中刪除,而IRIS只發送新簽名標題。 鍵已旋轉。
對於GET
類型目標,用於簽名的消息將是REQUEST_PATH + QUERY STRING(例如,/from-aam-s2s?sids=1,2,3)。 IRIS未考慮主機名或HTTP(S)
標題——這些標題可沿路徑修改/配置錯誤或報告錯誤。
對於POST
類型目標,用於簽名的消息是REQUEST BODY。 同樣地,標題或其他請求參數也會被忽略。