> For the complete documentation index, see [llms.txt](https://manual.ktcdn.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.ktcdn.co.kr/open-api/cdn3.0-v2/curl.md).

# Curl 토큰 생성

### Token 인증

모든 요청은 HTTPS 기반이며 Token을 통해 인증합니다.&#x20;

사용자 이름과 비밀 번호로 Token을 발급받습니다. Request에 사용자 이름과 비밀 번호 대신에 Token을 사용합니다. Token에는 유효기간이 있으며, 그 이후에는 재발급이 필요합니다.

{% hint style="info" %}
둘 중 한 가지 방법 선택&#x20;

1. 요청 **header**의 **`X-Auth-Token`**&#xC5D0; **'Token'**&#xC744; 사용
2. **`Authentication`에 'Bearer '와 함께 'Token'**&#xC744; 사용<br>
   {% endhint %}

### API summary

<table><thead><tr><th width="205.33333333333331">Operation</th><th>Method</th><th>Endpoint</th></tr></thead><tbody><tr><td><em>Token</em></td><td>POST</td><td><mark style="background-color:purple;">/v2/auth/token</mark></td></tr><tr><td><em>Token(v1 형식 호환)</em></td><td>POST</td><td><mark style="background-color:purple;">/v2/auth/tokens</mark></td></tr></tbody></table>

### HOW TO USE&#x20;

<details>

<summary>Window에 curl 설치하기 <a href="https://curl.se/">https://curl.se/</a></summary>

1. [https://curl.se](https://curl.se/) 접속 -> <mark style="color:blue;">Download</mark> 메뉴 클릭

&#x20;![](https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FkmtSXw7jVptF2nSld3kv%2Fimage.png?alt=media\&token=bccec913-f32f-4dfb-9475-177ef9c6eb7e)

2. 자신의OS 사양에 맞는 파일 다운로드

![](https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FXsw1IB74w2CtcteehLSN%2Fimage.png?alt=media\&token=4ba2c219-058e-478f-9dfe-550f3fe42a2a)

3. 다운로드 파일 압축해제 후 <mark style="color:blue;">**curl.exe**</mark> 파일 설치
4. 작업창에서 <mark style="color:blue;">**sysdm.cpl**</mark>로 검색하여 <mark style="color:blue;">**시스템 속성**</mark> 열기&#x20;

![](https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FMBa0MYkVDFRZaMwF8SlQ%2Fimage.png?alt=media\&token=c164248a-10bf-4ffa-b87e-c54ff43a3053)

5. <mark style="color:blue;">**고급**</mark> 탭 > <mark style="color:blue;">**환경변수**</mark> > <mark style="color:blue;">**path**</mark> > <mark style="color:blue;">**편집**</mark>

![](https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FaUyOE2AquALfOYDirpp6%2Fimage.png?alt=media\&token=b522413e-1d7b-46e7-be9c-0a2c74267787)

6. <mark style="color:blue;">**새로만들기**</mark>에 <mark style="color:blue;">**curl.exe 파일 경로**</mark> 추가 > <mark style="color:blue;">**확인**</mark>&#x20;

![](https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FTzlw0tG94XrT13ckfhAS%2Fimage.png?alt=media\&token=7ee77de0-d150-4709-86ad-57179419c93e)

7. cmd창에서 curl 사용 가능&#x20;

![](https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FafhfSqo3Aczgz7AoJDSw%2Fimage.png?alt=media\&token=d94b2b38-27b1-4e82-b5b4-4d68258a5e26)

</details>

#### Token

{% code title="api.example.com 수정 사용 " overflow="wrap" %}

```
// Some code
curl -X GET \
  https://api.example.com/v2/service/service/test-service/domain \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNvbGNodGVzdCIsImlhdCI6MTU0...' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache'
```

{% endcode %}

#### Token(v1 형식 호환)

{% code title="api.example.com 수정 사용 " overflow="wrap" %}

```
curl -X GET \
  https://api.example.com/v2/service/service/test-service/domain \
  -H 'X-Auth-Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNvbGNodGVzdCIsImlhdCI6MTU0O...' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache'
```

{% endcode %}

### <mark style="color:red;">POST</mark>  Token

```
https://api.lgucdn.com/v2/auth/token?expires_in=1d
```

v2 인증을 위한 Access Token을 발급받는 신규 인증 API입니다.&#x20;

인증 받은 Token은 요청 헤더에 Authorization으로 설정하여 보냅니다.

#### Headers

<table data-header-hidden><thead><tr><th width="206"></th><th></th><th data-hidden></th></tr></thead><tbody><tr><td>Content-Type</td><td><p>application/json</p><p>JavaScript Object Notation JSON; Defined in RFC 4627</p></td><td></td></tr></tbody></table>

#### PARAMS

<table data-header-hidden><thead><tr><th width="205"></th><th></th><th data-hidden></th></tr></thead><tbody><tr><td>expires_in</td><td><p>1d</p><p>유효 기간 입력 <a href="https://github.com/zeit/ms#ms">*입력가이드 참고</a><br>Possible values :1y , 5d, 2h, 1m<br>Default : 24시, Max : 1년</p></td><td></td></tr></tbody></table>

#### Body raw

```
{
    "username": "test-username",
    "password": "test-password"
}
```

### <mark style="color:purple;">example.</mark>    &#x20;

<figure><img src="https://2583867153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzGSmH6BAfOKAcgH1QxjN%2Fuploads%2FJOllwqyHl93TXjpDTv8p%2Fimage.png?alt=media&amp;token=27d56d73-035a-4fbd-8bda-48bd5d41d746" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

* <mark style="color:blue;">**{{url}}**</mark> : <https://api.ktcdn.co.kr> 입력&#x20;
* <mark style="color:blue;">**{{username}}**</mark>, <mark style="color:blue;">**{{password}}**</mark> : adp에서 부여받은 ID와 PW 입력&#x20;
  {% endhint %}

{% tabs %}
{% tab title="cURL - cURL" %}

### Request

{% code title="Example request " overflow="wrap" %}

```
curl --location 'https://api.lgucdn.com/v2/auth/token?expires_in=1d' \
--header 'Content-Type: application/json' \
--data '{
	"username": "test-username",
	"password": "test-password"
}'
```

{% endcode %}

### Response

{% code title="example response" overflow="wrap" %}

```json
{
  "data": [
    {
      "svc_name": "testsvc",
      "svc_status": "0300",
      "svc_type": "Delivery",
      "svc_ext_type": "huge",
      "svc_domain": "testsvc.ktcdn.co.kr",
      "origins": [
        "testsvc.amazonaws.com/test-online"
      ],
      "sp_svc_domains": [
        "testsvc.testsolbox.com"
      ],
      "use_ssl": "no",
      "ssl_protocol": [
        "TLSv1.2",
        "TLSv1.1"
      ],
      "certificate_file": "",
      "certificate_key_file": "",
      "certificate_chain": "",
      "use_sp_svc_domains": "yes",
      "positive_ttl": 3600,
      "use_secure_token": "no",
      "secure_token_secrets": [
        "PSK1"
      ],
      "secure_token_type": "jwt",
      "use_streaming": "no",
      "use_ignore_query": "no",
      "use_referers": "no",
      "referers": [],
      "use_redirect_https": "no"
    }
  ]
}
```

{% endcode %}

{% endtab %}

{% tab title="HTTP - HTTP" %}
{% code title="Example Request" overflow="wrap" %}

```http
POST /v2/auth/token?expires_in=1d HTTP/1.1
Host: api.lgucdn.com
Content-Type: application/json
Content-Length: 62

{
	"username": "test-username",
	"password": "test-password"
}
```

{% endcode %}

{% code title="Example Response" overflow="wrap" %}

```
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QtdXNlcm5hbWUiLCJpYXQiOjE1NDg5MTE5NDgsImV4cCI6MTU0ODk5ODM0OH0.WlOm3e62BK1-5SlcbnX3zb8Li-MR3-oo2K-OlyXiGI4"
}
```

{% endcode %}

{% endtab %}

{% tab title="Node Js " %}

#### Node JS- Axios &#x20;

{% code title="Request" overflow="wrap" %}

```javascript
var axios = require('axios');
var data = JSON.stringify({
  "username": "test-username",
  "password": "test-password"
});

var config = {
  method: 'post',
maxBodyLength: Infinity,
  url: 'https://api.lgucdn.com/v2/auth/token?expires_in=1d',
  headers: { 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
```

{% endcode %}

{% code title="Response" overflow="wrap" %}

```
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QtdXNlcm5hbWUiLCJpYXQiOjE1NDg5MTE5NDgsImV4cCI6MTU0ODk5ODM0OH0.WlOm3e62BK1-5SlcbnX3zb8Li-MR3-oo2K-OlyXiGI4"
}r
```

{% endcode %}

#### Node JS- Native

{% code title="Example Request " overflow="wrap" %}

```javascript
var https = require('follow-redirects').https;
var fs = require('fs');

var options = {
  'method': 'POST',
  'hostname': 'api.lgucdn.com',
  'path': '/v2/auth/token?expires_in=1d',
  'headers': {
    'Content-Type': 'application/json'
  },
  'maxRedirects': 20
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function (chunk) {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

var postData = JSON.stringify({
  "username": "test-username",
  "password": "test-password"
});

req.write(postData);

req.end();
```

{% endcode %}

{% code title="Example Response " overflow="wrap" %}

```
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QtdXNlcm5hbWUiLCJpYXQiOjE1NDg5MTE5NDgsImV4cCI6MTU0ODk5ODM0OH0.WlOm3e62BK1-5SlcbnX3zb8Li-MR3-oo2K-OlyXiGI4"
}
```

{% endcode %}

{% endtab %}

{% tab title="Go - Native" %}
{% code title="Example Request " overflow="wrap" %}

```go
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"username\": \"test-username\",\n\t\"password\": \"test-password\"\n}");
Request request = new Request.Builder()
  .url("https://api.lgucdn.com/v2/auth/token?expires_in=1d")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
```

{% endcode %}

{% code title="Example Response " overflow="wrap" %}

```
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QtdXNlcm5hbWUiLCJpYXQiOjE1NDg5MTE5NDgsImV4cCI6MTU0ODk5ODM0OH0.WlOm3e62BK1-5SlcbnX3zb8Li-MR3-oo2K-OlyXiGI4"
}
```

{% endcode %}

{% endtab %}

{% tab title="C# - RestSharp" %}
{% code title="Example Request " overflow="wrap" %}

```csharp
var options = new RestClientOptions("https://api.lgucdn.com")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/v2/auth/token?expires_in=1d", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"	""username"": ""test-username""," + "\n" +
@"	""password"": ""test-password""" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);rp
```

{% endcode %}

{% code title="Example Response" overflow="wrap" %}

```
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QtdXNlcm5hbWUiLCJpYXQiOjE1NDg5MTE5NDgsImV4cCI6MTU0ODk5ODM0OH0.WlOm3e62BK1-5SlcbnX3zb8Li-MR3-oo2K-OlyXiGI4"
}
```

{% endcode %}

{% endtab %}
{% endtabs %}
