쿨에스엠에스
  • Documents for COOLSMS Developers
  • AUTHENTICATION
    • Overview
    • API Key 인증 방식
    • OAuth2 인증 방식
      • 적용하기
      • 권한(Scope) 목록
    • 멤버 권한 목록
  • DEVELOPMENT-KITS
    • C#
    • DB연동 Agent
    • Go
    • Java
    • Node JS
    • Others
    • PHP
    • Python
    • Ruby
    • Visual Basic .NET
    • Visual Basic 6
  • APP-STORE
    • 쿨에스엠에스 OAuth2 연동 Node & Express를 이용하여 앱 만들기
    • 쿨에스엠에스 앱 스토어에 내가 만든 앱 등록하기
  • API REFERENCE
    • Overview
    • 메시지
      • 여러건 발송
      • 단일 메시지
      • 그룹 메시지
        • 그룹 생성
        • 그룹 메시지 추가
        • 그룹 메시지 목록 조회
        • 그룹 메시지 삭제
        • 발송 요청
        • 그룹 목록 조회
        • 그룹 정보 조회
        • 그룹 삭제
      • 메시지 조회
      • 통계 조회
      • 통계 엑셀 파일 다운로드
    • 카카오톡
      • 템플릿을 삭제
      • 카테고리 정보 조회
      • 카카오톡채널 조회
      • 카카오톡채널 목록 조회
      • 템플릿 정보 조회
      • 템플릿 목록 조회
      • 템플릿 숨김 설정
      • 카카오톡채널 추가
      • 템플릿 추가
      • 템플릿 댓글 추가
      • 카카오톡채널 연동 토큰 신청
      • 템플릿 정보 수정
      • 템플릿 검수 요청
    • 잔액
      • 잔액이전
      • 사용자 충전
      • 은행 계좌 등록
      • 결제수단 등록
      • 출금 신청
      • 등록된 계좌 정보 삭제
      • 결제 수단 제거
      • 잔액조회
      • 잔액 변동내역 조회
      • 계좌 정보 조회
      • 견적서 발급
      • 알림 설정 조회
      • 결제수단 목록 조회
      • 거래명세서 발급
      • 출금 요청 상태 조회
      • 등록된 결제수단의 우선순위를 변경
      • 잔액 소진 알림 설정
      • 잔액 소진 알림 on/off 설정
      • 자동 충전 on/off
    • 가격
      • 하나의 국가의 메시지 단가 가져오기
      • 국가별 메시지 가격 리스트 가져오기
    • 스토리지
      • 파일 삭제
      • 파일 조회
      • 파일 목록 조회
      • 파일 업로드
    • 메시지 상태 코드
    • Terminology
  • OLD-VERSIONS
    • SMS API Version 1
    • SMS API Version 2
  • OLD-VERSIONS-SDK
    • C
    • Delphi
      • API Reference
      • Examples
    • java
    • JAVA
    • java
    • PHP
      • PHP SDK v2
        • Example
    • python
    • Python
    • python
    • 에러코드 참고
Powered by GitBook
On this page
  • Request
  • Signature 생성
  • OAuth2 지원
Export as PDF
  1. AUTHENTICATION

API Key 인증 방식

PreviousOverviewNextOAuth2 인증 방식

Last updated 5 years ago

REST API를 요청(Request)할 때 HTTP 헤더에 Authorization 정보를 추가하여 인증 받을 수 있습니다. API를 요청한 계정의 소유자를 확인하는데 필수적인 절차입니다.

참고

Authorization 헤더정보를 전달하는 방식은 HTTP에서 인증을 위한 수단으로 널리 사용되고 있습니다. 을 참고하세요.

쿨에스엠에스 페이지에서 API Key와 API Secret을 생성하여 REST API 호출에 사용합니다.

Request

Authorization: <AuthenticationMethod> apiKey=<API Key>, date=<Date Time>, salt=<Salt>, signature=<Signature>

curl -X GET https://api.coolsms.co.kr/messages/v4/list --header "Authorization: HMAC-SHA256 apiKey=NCSAYU7YDBXYORXC, date=2019-07-01T00:41:48Z, salt=jqsba2jxjnrjor, signature=1779eac71a24cbeeadfa7263cb84b7ea0af1714f5c0270aa30ffd34600e363b4"

<AuthenticationMethod> Signature 생성 알고리즘으로 HMAC-SHA256, HMAC-MD5 중에 하나를 선택할 수 있습니다.

<API Key> 발급받은 API Key를 입력합니다.

<Date Time> ISO 8601 규격의 날짜와 시간을 입력합니다.

<Salt> 12 ~ 64바이트의 불규칙적이고 랜덤한 문자열을 생성하여 사용합니다.

<Signature> <Date Time>과 <Salt>를 하나로 연결한 문자열을 데이터로 하고 API Secret을 Key로 만들어진 HMAC 해시코드

Signature의 재사용을 막기위해서 입력된 <Date Time>의 표준시간을 기준으로 ±15분 차이가 날 경우 RequestTimeTooSkewed 오류를 리턴합니다. 또한 15분 내에 한번 사용된 Signature는 중복사용이 불가능하므로 원천적으로 재사용을 차단하고 있습니다.

참고

  • 날짜와 시간을 표현하는데 있어서 시차와 표기법이 틀릴 수 있으므로 혼돈이 없도록 국제규격 ISO 8601을 따릅니다. 을 참고하세요.

Signature 생성

클라이언트에서 <Date Time> + <Salt> 를 데이터로, API Secret을 Key로 사용하여 HMAC(Hash-based Message Authentication Code)을 만들어진 Signature를 서버로 보내면, 서버 쪽에서도 동일한 방식으로 만들어 비교하게 됩니다. API Secret은 Signature를 생성할 때만 사용하고 외부에 노출되지 않도록 주의해야 합니다.

참고

Signature는 중복사용이 불가하며 15분 안에 전송되는 요청(Request)의 Signature 값은 항상 달라야 합니다. 그래서 Salt는 매번 요청때마다 다른 문자열로 변경하여 요청 시간대가 같아도 항상 Signature가 다른 값으로 생성되도록 합니다.

  • InvalidAPIKey

    • 유효한 API Key가 아님

    • HTTP Status Code: 403

  • SignatureDoesNotMatch

    • 생성한 Signature가 일치하지 않음

    • HTTP Status Code: 403

  • RequestTimeTooSkewed

    • 시간 값이 서버 시간을 15분 이상 벗어남

    • HTTP Status Code: 403

  • DuplicatedSignature

    • 15분 안에 동일한 signature 값

    • HTTP Status Code: 403

OAuth2 지원

메시지 API v4.0 부터 OAuth2 를 통한 인증을 제공합니다.

메시지의 무결성 검증(인증)을 위한 용도로 Signature 생성 및 검증에 Hash기반의 MAC 알고리즘을 사용하고 있습니다. 을 참고하세요.

Basic access authentication
API Key 관리
ISO 8601
Hash-based message authentication code
적용하기