본문으로 건너뛰기

[STEP2] 인증 키 활용하기

인증 요청을 위한 포맷

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

HTTP HEADER에 다음과 같은 두 가지 필드(웨이커 프러덕트 Key, 웨이커 JWT 토큰)가 필요합니다.

  • Waiker-Product-Key : [Product Key]
  • Authorization : Bearer [JWT Token]

Waiker-Product-Key

상품을 구매 후 발급받은 인증키 중 Product Key를 사용합니다.


JWT Token

상품을 구매 후 발급받은 인증키 중 User Key와 Secret Key를 활용하여 JWT 토큰을 생성.


토큰 생성 방법

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

{
"userKey": "8733345d60474a6f9aa6c980fbbd1ca0"
}

JWT 토큰 추출 예시

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", userKey)
.sign(algorithm);

String authenticationToken = "Bearer " + jwtToken;
}
}
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)

Open API 검증

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

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