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