인증
팝빌에서 제공하는 SDK에는 "인증"이 내부적으로 구현되어 별도의 개발이 필요하지 않으므로, 본 가이드는 참고 목적으로만 이용하여 주시기 바랍니다.
팝빌 API는 토큰 기반의 인증을 이용하여 사용자를 식별하고 통신 위변조를 차단하여 상호 신뢰할 수 있는 통신환경을 보장하고 있습니다. 토큰을 발급하는 "링크허브 인증"과 발급받은 토큰을 이용하는 "API 토큰 인증"으로 구성되어 있으며, 팝빌 API 호출을 위해서 반드시 선행하여 처리가 필요합니다.
링크허브 인증
API 통신전문 위변조 방지를 위해 팝빌에서 프로그램 공급사에 발급한 API Key(비밀키, 링크아이디)를 이용하여 HMAC-SHA256 Signature를 HTTP Authorization Header에 입력하여 보안 토큰을 발급하는 강력한 인증 방식입니다.
HTTP Authorization Header 입력 예시
Authorization: LINKHUB LinkID Signature
Signature 의사코드(pseudocode)
Authorization = "LINKHUB" + " " + LinkID + " " + Signature;
Signature = Base64( HMAC-SHA256( SecretKey, UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign = HTTP-Verb + "\n" +
Content-MD5 + "\n" + Date + "\n" +
CanonicalizedLINKHUBHeaders + ResourceURI [include query string];
CanonicalizedLINKHUBHeaders = >described below<
Content-MD5는 전문에 Contents가 없는 경우(GET request)에는 빈 문자("")로 처리합니다. Date는 UTC 시간으로 기재되어야 하며, Authorization Header 또는 x-lh-date Header 중 하나의 Header에 반드시 입력되어야 합니다.
Canonicalized-LINKHUBHeaders는 HTTP Header에 팝빌이 정의하는 Header를 추가로 입력하는 정보로 'x-lh-'로 시작하는 HTTP Header에 Canonicalization한 결과입니다.
- 1. 모든 Header 이름을 소문자로 변환합니다. e.g. x-lh-Date → x-lh-date
- 2. Header를 이름순으로 정렬합니다.
- 3. 동일한 Header 이름에 대해서는 공백 없는 콤마 구분자 하나로 합하여 처리합니다.
- 4. key와 value를 구별하는 콜론(;)의 앞/뒤 공백은 제거합니다.
- 5. Header의 key는 제외하고 value만 개행문자(\n)로 합하여 하나의 문자열로 처리합니다.
API 토큰 인증
"링크허브 인증"으로 발급받은 토큰을 팝빌 API 호출의 Authorization Header에 입력하는 인증 방식입니다.
Authorization Header 입력 예시
Authorization: Bearer BearerTokenValue
팝빌은 수신한 API 토큰 값을 별도의 약속된 암호화 알고리즘으로 해석하여 프로그램 공급사와 연동회원을 식별하여 서비스를 제공합니다.