본문으로 건너뛰기

[STEP3] WG 상품 인증 키 발급 및 활용

[STEP2] 위젯 설정하기에서 생성한 URL을 서비스에 적용하기 위한 토큰 생성 및 인증키 활용에 대한 방법을 알아봅니다.


인증 키에 대한 이해

(1) 인증 키란 무엇인가요?

인증 키는 사용자가 구매한 웨이커의 데이터 상품을 안전하게 이용할 수 있는 장치입니다. 인증 키는 웨이커 상품을 구매한 사용자에게만 제공되며 상품별로 인증키가 제공됩니다.


(2) 인증 키 체계

웨이커 제품을 사용하기 위해서는 대시보드에서 발급받은 총 3개의 Key가 필요하며, 상품별로 별도의 키 set가 있습니다. 서비스를 이용하기 위해서는 Product Key, Secret Key, User Key가 필요합니다. 이 키들은 회원가입 후 상품 구매 시 웨이커가 직접 발급하며 대시보드를 통해 확인하실 수 있습니다.


(3) 각 인증 키 이해하기

각 키에 대한 설명은 아래와 같습니다. WG 상품의 경우 Key를 직접 사용할 필요는 없고, 웨이커 내부적으로 사용됩니다.

  • Product Key : 웨이커가 제공하는 상품을 의미합니다. 상품마다 각각 Product Key가 제공됩니다.
  • Secret Key : Product Key와 1:1로 매핑되며 JWT 토큰 서명에 사용됩니다.
  • User Key : User Key는 JWT 토큰에 사용되는 User Key입니다. 이 키를 사용하여 어떤 유저가 들어오는지 체크하게 됩니다. API만 사용할 경우는 발급된 User Key를 사용하면 되고, 위젯을 사용하는 경우 User Key를 매번 발급 받아 사용할 수 있습니다.
  • JWT : 위젯을 사용할 때 필요한 필수 토큰 값입니다.


인증 키 활용하기

(1) 인증 가능한 요청 만들기

WG 상품의 경우 대시보드에서 JWT 키를 웨이커가 생성하여 제공해 드리기 때문에 아래 내용은 참고만 해주시면 됩니다.

REST API 요청 포맷

REST API는 https를 통해 요청됩니다.

API를 요청하기 위해서는 인증 정보를 Header에 담아 같이 요청해야 합니다.

토큰 생성 방법

Waiker의 모든 제품을 사용하는 경우, 다음과 같은 공식 전송 방식을 따릅니다.

HTTP HEADER에 두 가지 필드가 추가됩니다. : 웨이커 프러덕트 Key, 웨이커 JWT 토큰

  • Waiker-Product-Key :
  • Authorization : Bearer <token>

Waiker-Product-Key

웨이커에서 발행되는 Product-Key : 발행되는 키를 위의 헤더 형태로 전송합니다.

JWT Token

웨이커에서 발행되는 User Key를 Secret Key로 서명한 JWT 토큰입니다.

서명 방식은 HS256을 사용하며 서명에 사용할 secret은 발급받은 Secret Key를 사용합니다. Payload의 형태는 다음과 같습니다.

{
"userKey": "8733345d60474a6f9aa6c980fbbd1ca0"
}

JWT 토큰 추출 예시

const jwt = require('jsonwebtoken')

const payload = {
userKey: '발급 받은 User Key',
}

const jwtToken = jwt.sign(payload, '발급 받은 Secret Key')
const authorizationToken = `Bearer ${jwtToken}`
# Python 3

import jwt # PyJWT

payload = {
'userKey': '발급 받은 User Key'
}

jwt_token = jwt.encode(payload, '발급 받은 Secret Key')
authorization_token = 'Bearer {}'.format(jwt_token)
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

public class OpenApiSample {

public static void main(String[] args) {
String userKey = "발급 받은 User Key";
String secretKey = "발급 받은 Secret Key";

Algorithm algorithm = Algorithm.HMAC256(secretKey);

String jwtToken = JWT
.create()
.withClaim("userKey", accessKey)
.sign(algorithm);

String authenticationToken = "Bearer " + jwtToken;
}
}

Open API 검증

웨이커는 3단계를 통해 검증합니다.

  1. Waiker-Product-Key 유효성 검사: 헤더를 통해 들어오는 Product Key가 유효한지 검증합니다.
  2. JWT 토큰 유효성 검사: JWT 토큰의 서명 정보가 유효한지 체크하고, userKey가 유효한지 검증합니다.
  3. API Limit 검사: 허용된 Call Limit 내에서의 요청인지 체크합니다.

(2) 키 관리 페이지로 이동하기

관리 > 키관리 메뉴

대시보드 > 관리 > 키관리 메뉴

(3) 인증 키 활용하기

대시보드 키관리 페이지에서 Product KeyJWT를 확인하고 [STEP2] 위젯 설정하기에서 복사해 두셨던 URL에 해당하는 값들을 넣어서 사용하실 수 있습니다.

👍 WG 상품 설정하기에서 URL이 정상적으로 복사 되었을 때의 결과

https://ux-solution.waiker.ai/insider-trading?country=KR&currency=usd&color-theme=light&product-key=YOUR_KEY&jwt=YOUR_JWT