인증
aicon API의 인증 방식을 설명합니다.
Basic Auth 인증
모든 API 요청은 HTTP Basic 인증으로 인증합니다. Basic 인증은 username:password 쌍을 Base64로 인코딩하여 Authorization 헤더에 담는 방식입니다.
aicon API에서는 Secret Key가 username, 비밀번호는 사용하지 않습니다. 비밀번호가 없더라도 username과 password를 구분하는 :(콜론)은 반드시 포함해야 합니다.
Authorization: Basic {base64(secretKey:)}
인코딩 과정
Secret Key가 test_sk_abcdef123456인 경우, 다음 단계를 거칩니다.
1단계 — Secret Key 뒤에 :를 붙입니다.
test_sk_abcdef123456:
:는 Basic 인증에서 username과 password의 구분자입니다. 비밀번호가 비어 있어도 콜론은 반드시 포함해야 합니다. 콜론이 없으면 인증에 실패합니다.
| 입력 | 결과 |
|---|---|
test_sk_abcdef123456: | 인증 성공 |
test_sk_abcdef123456 | 인증 실패 — 콜론 누락 |
2단계 — Base64로 인코딩합니다.
터미널에서 아래 명령어로 직접 확인할 수 있습니다.
echo -n "test_sk_abcdef123456:" | base64
# dGVzdF9za19hYmNkZWYxMjM0NTY6
일부 환경에서 문자열에 UTF-8 BOM이 포함되면 Base64 결과가 77u/로 시작할 수 있습니다. 이 경우 인증에 실패하므로 BOM이 없는 UTF-8로 인코딩해야 합니다.
3단계 — Authorization 헤더에 담아 요청합니다.
Authorization: Basic dGVzdF9za19hYmNkZWYxMjM0NTY6
언어별 예시
- cURL
- Node.js
- Python
# -u 옵션은 자동으로 Base64 인코딩합니다.
# 시크릿 키 뒤에 반드시 콜론(:)을 포함하세요.
curl -u "test_sk_abcdef123456:" \
https://api.aiconbiz.kr/v1/coupons
직접 헤더를 설정할 수도 있습니다.
curl -X GET https://api.aiconbiz.kr/v1/coupons \
-H "Authorization: Basic dGVzdF9za19hYmNkZWYxMjM0NTY6"
const secretKey = 'test_sk_abcdef123456';
// 시크릿 키 뒤에 반드시 콜론(:)을 포함하세요.
const encoded = Buffer.from(`${secretKey}:`).toString('base64');
const response = await fetch('https://api.aiconbiz.kr/v1/coupons', {
headers: {
'Authorization': `Basic ${encoded}`,
},
});
import base64
import requests
secret_key = "test_sk_abcdef123456"
# 시크릿 키 뒤에 반드시 콜론(:)을 포함하세요.
encoded = base64.b64encode(f"{secret_key}:".encode()).decode()
response = requests.get(
"https://api.aiconbiz.kr/v1/coupons",
headers={"Authorization": f"Basic {encoded}"},
)
시크릿 키는 서버에서만 사용하세요. 브라우저 JavaScript, 앱 클라이언트 코드, 공개 저장소 등에 시크릿 키가 포함되면 보안 사고로 이어질 수 있습니다. 키가 노출된 경우 즉시 aicon 콘솔에서 키를 재발급하세요.
인증 실패 응답
인증에 실패하면 401 응답이 반환됩니다.
{
"status": 401,
"code": "AUTH_INVALID_API_KEY",
"message": "유효하지 않은 API 키입니다."
}