디지털 서명됨 HTTP(S) 요청 digitally-signed-http-requests

Audience Manager을 사용하려면 HTTP(S) 유효성을 위해 디지털 서명할 서버 간 요청입니다. 이 문서에서는 서명 방법에 대해 설명합니다. HTTP(S) 개인 키가 있는 요청.

개요 overview

사용자가 제공하고 와(과) 공유한 개인 키 사용 Audience Manager, 다음을 디지털 서명할 수 있습니다 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=

다음에 대한 RFC HMAC 해시 구현 https://www.ietf.org/rfc/rfc2104.txt. 테스트 사이트: https://asecuritysite.com/encryption/hmac (다음을 수행해야 합니다.) 전환 base64)에 대한 16진수 인코딩입니다.

개인 키 회전 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