Delivery Access Token
DeliveryAccessToken은 CDA(공개 전달)에서 발행된 콘텐츠를 읽을 때 쓰는 읽기용 토큰입니다. 웹사이트나 앱의 브라우저가 발행 콘텐츠를 가져올 때 이 토큰으로 CDA를 호출합니다. 발급할 때 SpaceRole 하나에 바인딩하며, 그 역할이 토큰의 읽기 범위(어떤 Content Type을 읽을 수 있는지)를 정합니다.
CMA에서 DeliveryAccessToken은 Space 하위 리소스이며, 경로는 /spaces/{spaceId}/delivery-access-tokens를 기준으로 합니다. 이 토큰은 브라우저(클라이언트)에 노출된 채로 동작하므로, 바인딩하는 역할은 반드시 필요한 Content Type만 읽는 최소 권한(least-privilege)으로 정해야 합니다(아래 보안: 최소 권한 바인딩 참조).
리소스 구조
다음은 DeliveryAccessToken을 생성했을 때의 응답입니다. sys(시스템 속성)에 토큰 값과 범위가 담기고, 본문에 name과 description이 있습니다.
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7PUFQuOAqWOc",
"type": "DeliveryAccessToken",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"user": { "sys": { "id": "3trmXRLdJIqc9GPBbyFYQQw6hf9kGj", "type": "Refer", "targetType": "User" } },
"createdBy": { "sys": { "id": "3trmXRM3RqbgSnifyg7PUFQsSPi0nt", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-18T09:24:23.156Z",
"updatedBy": { "sys": { "id": "3trmXRM3RqbgSnifyg7PUFQsSPi0nt", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-18T09:24:23.156Z",
"accessToken": "DVRATbQ8mX2vK9pLs7Rf1Zt0Nc4Wd6Hg5Ua2Ee9Ck3PoYx8Bj6Hg5Ua2Ee9Ck3Po…",
"scopes": ["DELIVERY_ACCESS_TOKEN"]
},
"description": "옷가게 쇼핑몰 공개 사이트용 읽기 전용 전달 토큰",
"name": "웹사이트 공개 전달"
}주요 키:
sys.id: DeliveryAccessToken의 고유 식별자입니다. 단일 조회·수정·삭제 경로의{deliveryAccessTokenId}에 들어갑니다.sys.accessToken: CDA 호출에 쓰는 비밀 토큰 값입니다. 발급 후 조회에서도 같은 값이 그대로 나오므로 노출에 주의해야 합니다(아래 보안 절 참조).sys.scopes: 토큰의 권한 범위입니다. DeliveryAccessToken은 발급 시 항상["DELIVERY_ACCESS_TOKEN"]입니다.sys.user: 이 토큰의 권한 주체인 전용 사용자입니다. 발급할 때 자동으로 만들어지며, 바인딩한 SpaceRole의 권한이 이 사용자에게 부여됩니다. 즉 토큰의 실효 권한은 이 사용자에게서 나옵니다. 이 토큰을 실제로 발급한 사람(sys.createdBy)과는 다른 사용자입니다.name: 생성할 때 지정한 토큰 이름입니다(예:웹사이트 공개 전달).description: 토큰에 대한 설명입니다(선택).
위 예시의 accessToken은 비밀 값이라 예시 문자열로 대체했습니다. 실제로는 길고 불투명한 문자열이며, 발급한 뒤 다시 조회해도 같은 값이 나옵니다.
시스템 속성 (sys)
모든 DeliveryAccessToken은 공통 시스템 속성과 토큰 고유 속성을 sys 객체에 담습니다. space, user, createdBy, updatedBy는 Refer 모양({ "sys": { "id", "type": "Refer", "targetType" } })으로 들어갑니다.
| 속성 | 타입 | 설명 |
|---|---|---|
id | string | 리소스 고유 식별자. |
type | string | 리소스 종류. DeliveryAccessToken은 항상 "DeliveryAccessToken". |
space | Refer<Space> | 이 토큰이 속한 Space. |
user | Refer<User> | 이 토큰의 권한 주체인 전용 사용자. 발급 시 자동 생성되며, 바인딩한 SpaceRole의 권한이 이 사용자에게 부여됩니다(토큰의 실효 권한은 이 사용자에게서 나옵니다). createdBy(실제 발급자)와는 다른 사용자입니다. |
createdBy | Refer<User> | 이 토큰을 발급한 실제 사용자(권한 주체는 위 user). |
createdAt | string (date-time) | 생성 시각. |
updatedBy | Refer<User> | 마지막으로 수정한 실제 사용자. |
updatedAt | string (date-time) | 마지막 수정 시각. |
accessToken | string | CDA 호출에 쓰는 비밀 토큰 값. 발급 후 조회에도 그대로 나오므로 외부에 노출되지 않게 다뤄야 합니다. |
scopes | string array | 토큰의 권한 범위. DeliveryAccessToken은 항상 ["DELIVERY_ACCESS_TOKEN"]. |
본문 속성:
| 속성 | 타입 | 설명 |
|---|---|---|
name | string (1~64) | 토큰 이름. 생성 시 지정합니다. |
description | string (≤128) | 토큰 설명. 선택입니다. |
보안: 최소 권한 바인딩
DeliveryAccessToken은 브라우저와 방문자에게 노출된 채로 CDA를 호출하는 토큰입니다. 그래서 어떤 SpaceRole에 바인딩하느냐가 곧 이 토큰의 보안 경계가 됩니다.
- 생성 요청의
role에는 필요한 Content Type만 읽는 최소 권한 SpaceRole의sys.id를 넣습니다. 공개 전달에는 읽기 전용 역할을 권장합니다. Administrator역할을 절대 바인딩하지 않습니다. 이 토큰은 클라이언트에 노출되므로, 관리 권한이 달린 역할을 바인딩하면 그 권한이 그대로 외부에 새어 나갑니다. 또한 SpaceRole 목록의 첫 번째 항목을 무심코 쓰지 말고, 의도한 최소 권한 역할의sys.id를 명시적으로 지정합니다.accessToken은 발급 후에도 같은 값으로 조회되는 비밀 값입니다. 클라이언트 빌드에 안전하게 주입하되, 외부에 그대로 노출하지 않습니다.
API
아래 모든 엔드포인트의 기준 URL은 https://cma.weegloo.com/v1이며, Authorization 헤더에 CMA를 인증하는 Bearer 토큰이 필요합니다. DeliveryAccessToken의 수정·부분 수정에는 X-Weegloo-Version 헤더가 필요하지 않습니다.
관련 문서
- SpaceRole: 이 토큰에 바인딩할 역할(읽기 범위)을 정의.
- CDA 개요: 이 토큰으로 발행 콘텐츠를 읽는 전달 API.
- Personal Access Token: 서버·CI용 Weegloo User 토큰.
