數位簽署的HTTP(S)個要求 digitally-signed-http-requests

Audience Manager需要數位簽署HTTP(S)伺服器對伺服器要求才能有效。 本檔案說明如何使用私密金鑰簽署HTTP(S)請求。

概述 overview

我們可以使用您提供並與Audience Manager共用的私密金鑰,以數位方式簽署在IRIS與您的HTTP(S)伺服器之間傳送的HTTP(S)個要求。 這可確保:

  • 認證:只有擁有私密金鑰(IRIS)的寄件者才能傳送有效的HTTP(S)郵件給合作夥伴。
  • 訊息完整性:使用此方法,即使在HTTP上,您也會受到保護,不會受到中間人攻擊的訊息失真。

IRIS已內建支援,可在零停機時間旋轉金鑰,如下方的旋轉私密金鑰區段所示。

您需要提供的資訊 info-to-provide

若為HTTP(S)即時伺服器對伺服器目的地,請連絡您的Audience Manager顧問並指定:

  • 用來簽署要求的金鑰。
  • 將保留所產生簽章的HTTP(S)標頭名稱(下方範例標頭中的X-Signature)。
  • 可選:用於簽名的雜湊型別(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建立要傳送給合作夥伴的HTTP(S)訊息。
  2. IRIS會根據HTTP(S)訊息和協力電腦所通訊的私密金鑰建立簽章。
  3. IRIS傳送HTTP(S)要求給合作夥伴。 此訊息包含簽名和實際訊息,如上面的範例所示。
  4. 夥伴伺服器接收HTTP(S)要求。 讀取從IRIS收到的郵件內文和簽章。
  5. 合作夥伴伺服器會根據收到的訊息本文和私密金鑰重新計算簽章。 請參閱下方的如何計算簽章一節,瞭解如何達成此目的。
  6. 比較夥伴伺服器(接收者)上建立的簽章與從IRIS (傳送者)收到的簽章。
  7. 如果簽章相符,則已驗證​ 真實性 ​和​ 郵件完整性。 只有擁有私密金鑰的寄件者才能傳送有效的簽章(真實性)。 此外,中間人無法修改訊息並產生新的有效簽章,因為他們沒有私密金鑰(訊息完整性)。

如何計算簽名 calculate-signature

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)。

旋轉私密金鑰 rotate-private-key

若要輪換私密金鑰,合作夥伴必須將新的私密金鑰傳達給其Adobe Audience Manager顧問。 舊金鑰已從Audience Manager中移除,IRIS只會傳送新的簽章標題。 金鑰已旋轉。

用於簽署的資料 data-signing

對於GET型別目的地,用於簽署的訊息將為​ REQUEST_PATH +查詢字串 (例如​ /from-aam-s2s?sids=1,2,3)。 IRIS未考量主機名稱或HTTP(S)標題 — 這些可能會沿著路徑修改/錯誤設定或報告不正確。

對於POST型別目的地,用於簽署的訊息是​ 要求內文。 同樣地,標頭或其他請求引數會被忽略。

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