> For the complete documentation index, see [llms.txt](https://docs.apidrag.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apidrag.com/quick-start/concepts/authentication.md).

# 자격증명

## 토큰

{% hint style="info" %}
**사용자:** API Drag에 회원가입하고 Macro 서비스를 구현하는 사용자

**사용자 서비스:** 위 사용자가 API Drag 와 관련 없이 제공하고 있는 서비스

**API 서비스:** Google, Naver, Kakao 등에서 제공하는 OPEN API 서비스

**회원:** API 서비스에서 제공하는 토큰정보와 매칭되는 사용자
{% endhint %}

자격증명 설명은 개념이 혼동될 수 있기 때문에 용어부터 정의하고 시작하겠습니다. 아래 설명에 사용되는 용어는 위 힌트를 기준으로 진행하겠습니다.

API Drag 서비스에서 자격증명에서  토큰은 크게 두 개념으로 나뉩니다.

#### owntoken

우선 API Drag 에 가입하기 위해 사용한 Google, Naver, Kakao 로그인 서비스를 통해 API Drag 서비스는 사용자의 각 로그인 서비스 별 개인토큰을 획득합니다. 뒤에 다시 설명이 나오겠지만 이러한 개인 토큰을 API Drag 서비스에서는 **owntoken** 이라고 표현합니다.

owntoken은 API Drag에서 직접 관리하게 됩니다.

Macro 서비스를 구축하는 과정에서 Google, Naver, Kakao 의 자격증명이 필요한 경우, 사용자에게 추가적인 로그인 및 권한 승인을 요청할 수 있습니다.

다시 설명 드리면, 예를들어 사용자가 API Drag 에 Kakao 간편가입을 통해 API Drag 서비스에 가입을 하게되면, Kakao 로 부터 사용자의 토큰을 수신하게 됩니다. 그리고 Macro 서비스 구현 중 Google 아이템 블록을 편집기에 Drag and Drom 을 하게되면, 편집기는 Google의 자격증명 획득을 위해 Google 로그인 팝업을 띄워서 Google 로그인 절차를 진행해야 합니다.

다른 예로, Kakao 간편가입을 한 사용자가 Kakao 메시지 전송 기능 구현을 위해 아이템 블록을 편집기에 Drag and Drop 하는 경우에도, Kakao의 메시지전송 권한 획득을 위해 다시한번 Kakao 로그인을 요청하는 경우도 있습니다.

#### custom token

**사용자 서비스**에서 **회원**들을 대상으로 Google, Naver, Kakao 로그인 서비스를 사용하고 토큰을 획득하여 활용하고 있을 수 있습니다. 그리고 그 사용자 서비스에서 OPEN API 연동을 편리하게 하기위해 저희 API Drag 서비스를 활용할 수 있습니다. 이런 경우 API Drag 서비스는 사용자 서비스와 API 서비스 사이에서 연계를 해 주는 Gateway 역할을 하게 됩니다.&#x20;

이 경우에 사용자 서비스에서 API Drag 서비스에서제공하는 회원의 토큰을 API Drag 입장에서는 custom token 으로 용어를 정의하고 있습니다.

**custom token**은 API Drag에서 관리하는 대상이 아니라, 그냥 수신해서 API 서비스로 제공하는 연계 Data 중 하나일 뿐입니다. 즉, custom token 의 관리는 사용자 서비스에서 **직접 관리**를 해야합니다.

## Agency

위 토큰 챕터에서는 토큰과 관련한 자격증명에 관하여 설명을 하였습니다.

Agency 챕터에서는 API Drag 서비스 내에서 Agency를 활용한 개발에 관한 설명입니다.

API Drag 서비스는 누구나 쉽게 Macro 서비스를 개발할 수 있도록 한다는 컨셉으로 개발이 되었습니다. 하지만 기본개념 이해하기 수준의 코딩에 대한 수준을 필요로 합니다. 또한 OPEN API 에 대한 이해도 역시 필요합니다. 이러한 경우 직접 Macro 서비스를 개발할 수 없는 사용자는 API Drag 서비스를 사용할 수 없을 지 모릅니다.

Macro 서비스 개발을 할 수 없는 사용자가 서비스를 필요로 하는 경우, 전문가에게 로그인 정보를 제공하고 서비스 개발을 의뢰할 수 있습니다. 이 경우 **로그인 정보**를 노출하게 되기 때문에 **보안**에 문제가 발생할 수 있습니다.

API Drag 서비스는 이러한 보안에 문제가 될 상황에 대비하여 Agency 개념을 도입했습니다.

사용자와 Agency 는 각자 API Drag 서비스에 가입을 하고, 사용자가 Agency 지정을 하게 되면, Agency 는 그 **권한을 이양**받아서 Macro 서비스를 개발하고 사용자에게 제공할 수 있습니다.
