키 기반 MID 웹 서버 인증 구성

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 3분
  • 키 기반 인증을 사용하여 MID 웹 서버 확장에 추가 보안을 제공합니다. 수신 클라이언트 요청의 인증 헤더에서 보낼 인증 토큰을 생성합니다.

    시작하기 전에

    주:
    이 절차는 이전 릴리스 오스트레일리아와의 호환성에만 해당됩니다. 릴리스의 구성 절차에 오스트레일리아 대한 자세한 내용은 다음 문서를 참조하십시오확장 구성 MID 웹 서버.MID 웹 서버
    • 를 배포하고 시작합니다.MID 서버
    • 확장을 MID 웹 서버 구성하고 인증 유형으로 키 기반을 선택합니다. 자세한 내용은 MID 웹 서버 확장 구성을 참조하십시오.

    필요한 역할: agent_admin

    프로시저

    1. 스크립트 프로그램을 사용하여 확장 엔드포인트에 액세스하는 클라이언트에서 수신한 HTTP/HTTPS 요청의 정의된 요소(HTTP 동사, 콘텐츠 유형 헤더 및 요청 경로)를 사용하여 문자열을 생성하여 토큰을 만듭니다.MID 웹 서버
    2. 비밀 키에 표시되는 자동 생성된 비밀 키로 생성된 문자열에 서명하여 문자열의 HMAC(해시 메시지 인증 코드)를 만듭니다.
      이 키는 컨텍스트마다 고유합니다.
    3. 요청 인증 헤더에 이 인증 토큰을 보내는 데 필요한 정보를 제공합니다.
      항목
      원시 데이터를 보내기 위한 웹 서비스 API의 경로 URL 형식:

      https://<MID 서버 IP 주소>:<포트 번호>/api/mid/sa/metrics

      웹 서버 확장에 설정된 포트 번호 중 하나와 일치하는 포트 번호를 사용합니다.

      예: http://10.10.10.10:8097/api/mid/sa/metrics

      요청 유형 게시
      날짜 형식
      yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      예: 2016-06-08T20:54:58.917Z
      콘텐츠-형식 애플리케이션/JSON

      HTTP-동사, 컨텐츠-형식, 날짜 및 요청 경로와 같은 요청 요소를 사용하여 필요한 문자열을 생성합니다. 다음 요소를 지정하여 다음 순서대로 배치합니다.

      • HTTP-동사 + "\n" +
      • 컨텐츠-형식 + "\n" +
      • 날짜 + "\n" +
      • 요청-경로

      이 예의 경우 요청 문자열은 다음과 같습니다.

      POST\napplication/json\n2016-06-08T20:54:58.917Z\n/api/mid/sa/metrics

      타임스탬프 요구 사항의 경우, 요청을 인증하려면 HTTP 날짜 헤더를 사용하는 유효한 타임스탬프가 필요합니다. 타임스탬프가 MID 서버에서 15분 내에 있는지 확인합니다.

    Java를 사용하여 정의된 HTTP/HTTPS 요청의 요소를 사용하는 문자열의 HMAC를 생성하는 방법

    package sample;
    import com.glide.util;
    import java.security.SignatureException;
    
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    
    public class AuthUtil {
    	
    private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
    
    /***
     * Generates base64-encode the HMAC(Hash Message Authentication Code) of input data
     * 
     * @param data
     * @param key
     * @return
     * @throws java.security.SignatureException
     */
    public static String signData(String data, String key) throws java.security.SignatureException {
    	String result;
    	try {
    		// get an hmac_sha1 key from the raw key bytes
    		SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
    
    		// create hmac_sha1 Mac instance and initialize with the signing key
    		Mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
    		mac.init(signingKey);
    
    		// compute the hmac on input data bytes
    		byte[] rawHmac = mac.doFinal(data.getBytes("UTF-8"));
    
    		// base64-encode the hmac
    		result = Base64.encode(rawHmac);
    
    	} catch (Exception e) {
    		throw new SignatureException("Failed to generate HMAC : " + e.getMessage());
    	}
    	return result;
    }
    }