모든 콜렉션
연동 가이드
기타
파라미터 수집 시 HMAC 서명 적용 가이드
파라미터 수집 시 HMAC 서명 적용 가이드
C
작성자: Chaehyeon Lee
1주 전에 업데이트함

1. 소개

Dataspace 에서 제공하는 파라미터 수집 기능 사용 시 HMAC 서명 사용에 대한 가이드 입니다.

파라미터에 대한 일반적인 설명은 파라미터 사용 가이드를 참고해주시기 바랍니다.

1.1 제공 기능

파라미터를 포함한 응답 링크의 위변조를 방지하기 위해 HMAC 을 제공하고 있습니다.


2. 개발 가이드

2.1 응답 링크 형태

  • 응답 링크의 기본 URI 는 아래와 같습니다.

    • https://{설정한 응답 URL 도메인}.fdback.me/r/{serial 값}

    • {설정한 응답 URL 도메인} 은 “설정" 메뉴에서 데이터스페이스 별로 하나씩 설정이 가능합니다.

      • 기본값은 ds 입니다. (ds.fdback.me)

    • serial 값 은 수집그룹 마다 생성되는 값입니다. 수집그룹 serial 값 조회 API 를 통해 확인 가능합니다.

  • Query Parameter 로 파라미터 값을 같이 제공할 수 있습니다.

    • https://{설정한 응답 URL 도메인}.fdback.me/r/{serial}?uid={uid}&store={store}

  • 파라미터 value 에 들어가는 값은 URL Encode 된 값이여야만 합니다.

    • 잘못된 링크

      • https://test.fdback.me/r/aLBNYVAk1Ku?store=강남점&uid=TEST_UID&hmac=jx4sAKGP 

    • 올바른 링크

      • https://test.fdback.me/r/aLBNYVAk1Ku?store=%EA%B0%95%EB%82%A8%EC%A0%90&uid=TEST_UID&hmac=Fm0zzi5O 

2.2 링크 위변조 방지용 HMAC

  • 링크를 받은 응답자가 파라미터 등의 구성 요소를 위변조하는 것을 막기 위해 HMAC 값을 추가할 수 있습니다.

    • HMAC 설정을 원하지 않는 경우, 수집그룹 상세 페이지에서 설정이 가능합니다.

    • Query Parameter 로 hmac 값을 같이 제공하면 됩니다. Query Parameter 이름은 “hmac” 입니다.

    • https://{설정한 응답 URL 도메인}.fdback.me/r/{serial}?uid={uid}&store={store}&hmac={hmac}

  • HMAC_KEY는 데이터스페이스 ‘API’ 메뉴에서 확인이 가능합니다.

  • HMAC 생성규약은 아래와 같습니다.

    • “HMAC 적용할 문자열” = “{serial}?{key 값 기준 사전순으로 나열된 파라미터 key-value 쌍, key값은 알파벳 소문자로 변환}“

    • SUBSTRING(Base64Url(HmacSHA256(HMAC_KEY, “HMAC 적용할 문자열”), 0, 8))

    • 미리 주어진 HMAC_KEY와 함께 HmacSHA256 방법으로 digest한 결과를 base64url encoding 후 앞 8글자만 따서 이를 {hmac} 형태로 생성합니다.

  • HMAC 생성규약에 따른 예제는 아래와 같습니다.

    • 전제조건

      • 설정한 응답 URL 도메인 = “test” (https://test.fdback.me)

      • HMAC_SECRET = “SECRET_FROM_DATASPACE”

      • serial = “aLBNYVAk1Ku”

      • UID = “TEST_UID”

      • store = “gangnam-store”

    • 생성과정/결과

      • hmac 적용할 문자열 = “aLBNYVAk1Ku?store=gangnam-store&uid=TEST_UID”

        • 파라미터 key 값 기준으로 사전순 정렬 수행하면 store 가 uid 보다 먼저 와야 하며, key 값인 UID 를 알파벳 소문자로 변환합니다.

      • SUBSTRING(Base64Url(HmacSHA256(“SECRET_FROM_DATASPACE”, “aLBNYVAk1Ku?store=gangnam-store&uid=TEST_UID”), 0, 8)
        = “XUVJFZA_”

        • Base64 가 아닌 Base64Url 을 사용하므로, “XUVJFZA/” 가 아닙니다.

      • 응답 링크는 아래와 같습니다.

        • https://test.fdback.me/r/aLBNYVAk1Ku?UID=TEST_UID&store=gangnam_store&hmac=XUVJFZA_
        • 파라미터 key 값은 대소문자 구분없이 사용 가능합니다.

      • 응답 URL은 그대로 응답자에게 전달 되어야 하며, 임의 변경시 응답자에게 인가 실패가 표시됩니다.

  • 구체적인 구현 코드 예제는 3. Sample Code 를 참조해주세요.


3. Sample Code

아래 샘플 코드 링크를 참조 바랍니다.

답변이 도움되었나요?