Callback Security
Luniverse에서 제공하는 일부 API는 Callback 기능을 별도로 제공합니다. 유저는 Luniverse API를 실행한 뒤, 이에 대한 response를 자신이 지정한 Endpoint로 받도록 설정할 수 있습니다. Luniverse는 유저가 받는 response를 더욱 안전하게 제공하기 위해 보안적인 요소를 추가하였습니다.
Overview
이제 유저가 받는 Callback response의 Header에 인증 서명(X-Signature)이 포함됩니다. 유저는 API Key를 바탕으로 Signing Key를 생성할 수 있으며 이를 인증 서명과 비교하여 해당 response가 Luniverse를 통해 받은 response라는 것을 확인할 수 있습니다. 확인하는 방법은 다음과 같습니다.
// example header
Content-Type: "application/json"
X-SIGNATURE: "815f5dc296d5338dd761c088aa6a914311b4579523d557248fd1016912e755a4"
API Key 생성
Signing Key를 생성하기 위해 API Key를 생성합니다.
Signing Key 생성
API Key Field 우측의 [Signing Key]를 클릭합니다. API Key를 생성할 때 입력한 API Key Purpose를 확인할 수 있으며 Signing Key를 생성할 수 있는 버튼이 활성화됩니다. [Create Signing Key] 버튼을 클릭하여 Signing Key를 생성합니다.
Signing Key 확인
Signing Key를 확인할 수 있으며 우측 복사 버튼을 이용해 Signing Key를 복사할 수 있습니다.
X-Signature와 Signing Key 비교
- Signing Key를 HMAC, SHA-256 해시 알고리즘을 이용하여 해시한 후, X-Signature와 비교합니다. 두 값이 일치한다면 해당 response가 Luniverse에서 전송한 것이라는 것을 인증할 수 있습니다.
const crypto = require('crypto');
function isValidSignature(
body,
signature, // your "X-SIGNATURE" from header
signingKey, // your unique Luniverse Service signing key
) {
const hmac = crypto.createHmac('sha256', signingKey); // Create a HMAC SHA256 hash using the signing key
hmac.update(JSON.stringify(body), 'utf8'); // Update the token hash with the request body using utf8
return signature === hmac.digest('hex');
}
Updated about 1 year ago