4. Authentication

1. 개요

코인스택 API를 사용하기 위해서는 코인스택 서버에 자격 증명(credential)을 제공해야 합니다. 자격 증명은 사용자의 요청이 변조되지 않았음을 보장하는 역할과, 각 사용자의 요청을 구별하는 역할을 수행합니다. 자격 증명 절차는 다음과 같습니다.

  1. 대시보드에서 API 키 발급 받기

  2. 직접 REST 호출을 원하는 경우 토큰 발급

  3. 자신의 프로그램이나 환경 변수에 설정을 원할 경우 API키 발급

  4. 발급 받은 자격증명을 아래의 설명에 따라 설정하여 코인스택 API 호출

2. 자격 증명 방식

자격 증명은 아래 두 가지 방식으로 서버에 전달됩니다.

2.1. 토큰

REST API를 직접 사용하는 경우에는 토큰을 HTTP 요청의 헤더에 포함하여 보내야 합니다. 이 경우 토큰이 평문으로 전달되기 때문에, TLS 같은 안전한 프로토콜을 권장합니다.

2.2. 서명

SDK를 사용하여 API를 호출하는 경우 API 키와 비밀키로 request에 대한 전자 서명을 HMAC-SHA256 방식으로 생성하여 전달합니다.

3. API 키 발급 및 설정

3.1. API 키 발급

위에서 설명한 바와 같이, 코인스택 API를 사용하기 위해서는 먼저 자격 증명이 필요합니다. 대시보드에서 API 키 또는 API 토큰을 발급받을 수 있습니다. Java와 Node, Meteor에서는 Access Key와 Secret Key를 사용하며, curl 등을 통해 직접 REST API를 호출하는 경우에는 Access Token을 사용합니다.

3.2. API 키 설정

3.2.1. 환경 변수 사용

API 키 또는 API 토큰을 환경 변수에 설정하면 코드 내에 이 값들을 직접 입력하는 일을 피할 수 있습니다. 발급받은 Access Key를 COINSTACK_ACCESS_KEY_ID라는 환경 변수에, Secret Key를 COINSTACK_SECRET_ACCESS_KEY에 각각 할당합니다. 환경 변수를 설정하는 자세한 방법은 환경 변수 설정 페이지를 참조 바랍니다.

환경 변수를 설정하면, 다음과 같이 기본 생성자를 이용해 CoinStackClient 객체를 생성할 수 있습니다.

Java

import io.blocko.coinstack.*

CoinStackClient client = new CoinStackClient();

Node.js

var CoinStack = require('coinstack-sdk-js')
var client = new CoinStack();

Meteor

export COINSTACK_ACCESS_KEY="YOUR_COINSTACK_ACCESS_KEY";
export COINSTACK_SECRET_KEY="YOUR_COINSTACK_SECRET_KEY";
var client = new CoinStack();

3.2.2. 코드 내에 직접 입력

REST API

curl을 사용하여 REST API를 통해 키를 직접 입력, 호출하는 방법은 다음과 같습니다.

curl https://mainnet.cloudwallet.io/ \
    -H "apiKey: YOUR_API_TOKEN_KEY"

Java

다음과 같이 객체 생성자에 직접 키를 입력할 수도 있습니다.

//import io.blocko.coinstack.*
//import io.blocko.coinstack.model.*

CoinStackClient client = new CoinStackClient(new CredentialsProvider() {
            @Override
            public String getAccessKey() {
                return "발급받은 access key";
            }

            @Override
            public String getSecretKey() {
                return "발급받은 secret key";
            }
        }, Endpoint.MAINNET);

Node.js

var accessKey = "YOUR_COINSTACK_ACCESS_KEY";
var secretKey = "YOUR_COINSTACK_SECRET_KEY";
var client = new CoinStack(accessKey, secretKey);

Meteor

var accessKey = "YOUR_COINSTACK_ACCESS_KEY";
var secretKey = "YOUR_COINSTACK_SECRET_KEY";
var client = new CoinStack(accessKey, secretKey);

Last updated