---
title: "라이선스 발급 방식"
description: "토큰 방식과 토큰 프록시 방식의 라이선스 발급 과정과 선택 기준, 클라이언트에서 라이선스 유효기간이 적용되는 방식을 설명합니다."
---
> For the complete documentation index, see [llms.txt](https://docs.doverunner.com/llms.txt).

패키징된 콘텐츠를 재생하려면 클라이언트 기기에서 DRM 라이선스를 발급받아야 합니다. 도브러너는 **토큰 방식**과 **토큰 프록시 방식**으로 라이선스를 발급합니다. 이 문서에서는 두 방식의 동작 과정과 선택 기준, 라이선스 유효기간이 적용되는 방식을 설명합니다. 토큰 자체의 규격은 [라이선스 토큰 가이드](https://docs.doverunner.com/ko/content-security/multi-drm/license/license-token/)를 참고하시기 바랍니다.

## 연동 방식 선택

|<div style="width:70px">연동 방식</div>|설명|장점|단점|
|-----|-----|-----|-----|
| **토큰 방식** |사용자 인증 과정이 토큰 생성 전 단계에 고객사의 백엔드 시스템과 클라이언트 애플리케이션 간 통신을 통해 구현됨.|라이선스 발급 프로세스가 콜백 방식보다 간단하기 때문에 지연시간이 짧고, 대량의 라이선스 요청 발생 시 더 높은 성능을 제공.|토큰의 생성, 전달 및 추가적인 보안 처리를 고객사에서 직접 구현 필요.|
| **토큰 프록시 방식** | 고객사 백엔드의 프록시 서버가 클라이언트 애플리케이션과 도브러너 라이선스 서버 사이에서 라이선스 요청/응답을 중계하는 방식. | 라이선스 발급 과정에 고객사 임의로 추가적인 보안 처리가 가능. 커스텀 타입 DRM 라이선스 데이터를 통해 기기 대수 제한 등의 기능 구현 가능. | 고객사에서 구현해야 하는 부분이 많아 적용 난이도가 높음. |

> 이전에 지원되던 콜백 방식 라이선스 연동은 고객사 시스템의 상황에 따라 재생 시점에 지연 현상이나 오류가 발생할 수 있어 지원 중단(Deprecated) 되었습니다. 일반적인 경우라면 라이선스 토큰을 이용하시기 바라며, 추가적인 보안 처리 등 고객사 임의로 DRM 연동을 구현하려면 프록시 방식을 사용할 수도 있습니다.

## 토큰 방식 라이선스 발급 과정

```mermaid
sequenceDiagram
    box 최종 사용자
    participant A as 사용자(클라이언트)
    end
    box 콘텐츠 서비스
    participant B as 콘텐츠 서비스 사이트
    end
    box 도브러너
    participant C as 도브러너 클라우드 서버
    end
    A ->> B: 서비스 로그인
    B -->> B: 사용자 인증
    B ->> A: 콘텐츠 목록 전송
    A -->> A: 재생할 콘텐츠 선택
    opt 라이선스 토큰 연동
    A ->> B: 토큰 요청
    B -->> B: 콘텐츠 사용 권한 설정 및 토큰 생성
    B ->> A: 토큰 발급
    end
    A ->> C: 토큰을 통한 라이선스 요청
    C -->> C: 토큰 유효성 확인 
    C ->> A: DRM 라이선스 발급
    A -->> A: 콘텐츠 재생
```

(1) 토큰 요청

- 클라이언트는 재생하려는 콘텐츠의 DRM 라이선스 발급에 필요한 토큰을 서비스 사이트에 요청합니다.

(2) 토큰 생성 ([토큰 생성 규격](https://docs.doverunner.com/ko/content-security/multi-drm/license/license-token/#%ED%86%A0%ED%81%B0-json-%ED%98%95%EC%8B%9D) 참조)

- 서비스 사이트는 클라이언트에서 받은 요청을 확인하고, 해당 사용자가 콘텐츠 사용 권한이 있는 경우 토큰을 생성합니다.
- 토큰에는 Content ID, 사용자 ID, 타임 스템프, 라이선스 룰 정보 등이 포함됩니다.

(3) 토큰 전달

- 서비스 사이트는 위 과정에서 생성된 토큰을 요청한 클라이언트에 전달합니다.
- 토큰의 생성 및 요청/전달 기능은 도브러너 SDK 제품으로 제공되지 않으며, 서비스 사이트 측에서 본 규격을 참고해 직접 구현하셔야 합니다.

(4) 라이선스 요청

- 클라이언트는 서비스 사이트로부터 전달받은 토큰(base64 문자열)을 'pallycon-customdata-v2'라는 헤더 또는 파라미터에 담아 도브러너 클라우드 서버에 라이선스를 요청합니다.

(5) 라이선스 발급

- 도브러너 클라우드 서버는 해당 토큰의 유효성을 확인하고 설정된 룰에 따라 라이선스를 발급합니다.

## 토큰 프록시 방식 라이선스 발급 과정

토큰 방식 라이선스 발급은 아래와 같이 서비스 사이트의 프록시 서버를 통해 처리할 수도 있습니다.

```mermaid
sequenceDiagram
    box 최종 사용자
    participant A as 사용자(클라이언트)
    end
    box 콘텐츠 서비스
    participant B as 콘텐츠 서비스 사이트
    end
    box 도브러너
    participant C as 도브러너 클라우드 서버
    end
    A ->> B: 서비스 로그인
    B -->> B: 사용자 인증
    B ->> A: 콘텐츠 목록 전송
    A -->> A: 재생할 콘텐츠 선택
    A ->> B: DRM 라이선스 요청 (챌린지 + 인증 데이터)
    opt 토큰 프록시 연동
    B -->> B: 사용자 확인 및 라이선스 토큰 생성
    B ->> C: 생성된 토큰과 라이선스 챌린지로 라이선스 요청
    C -->> C: 토큰 유효성 확인
    C ->> B: DRM 라이선스 발급
    end
    B ->> A: DRM 라이선스 전달
    A -->> A: 콘텐츠 재생
```

(1) 프록시 서버로 라이선스 요청

* 클라이언트(Player)에서 DRM 콘텐츠 재생을 위해 서비스 사이트의 프록시 서버로 DRM 라이선스를 요청합니다.
* DRM LA_URL 설정에 도브러너 라이선스 서버 URL 대신 프록시 서버의 URL을 입력하며, 커스텀 헤더, 쿠키, 또는 URL 파라미터 등의 방식으로 사용자 인증에 필요한 임의의 정보를 프록시 서버에 전달합니다. (고객사 자체 인증 데이터 규격 적용)
* 프록시 서버로 전달되는 라이선스 요청(Request Body)에는 클라이언트의 DRM 모듈에서 생성된 챌린지 데이터가 포함됩니다.

(2) 사용자 권한 확인 및 토큰 생성

* 서비스 사이트는 프록시 서버로 전달된 사용자 인증 정보와 콘텐츠 정보를 이용해 해당 콘텐츠에 권한이 있는 사용자인지 확인합니다.
* 프록시 서버는 서비스 사이트의 비즈니스 모델 및 콘텐츠 보안 정책에 따라 DRM 라이선스 규칙을 설정하여 토큰을 생성합니다.
* 기기 대수 제한 등 추가 기능 구현을 위해 커스텀 타입 라이선스 응답을 받기 원하는 경우, 토큰 데이터에 해당 옵션(response_format)을 설정합니다.

(3) 라이선스 요청 및 발급

* 프록시 서버는 생성된 토큰을 클라이언트에서 보내온 라이선스 챌린지 데이터와 함께 도브러너 라이선스 서버에 전송해 DRM 라이선스를 요청합니다.
* 도브러너 서버는 토큰의 유효성을 확인하고 챌린지 데이터를 이용해 DRM 라이선스를 발급합니다.

(4) 라이선스 전달 및 재생

* 프록시 서버는 도브러너 라이선스 서버로부터 발급받은 DRM 라이선스 데이터를 클라이언트에 전달합니다.
* 토큰에 커스텀 타입 응답 옵션을 설정한 경우, 라이선스 서버가 응답한 JSON 형식의 데이터를 파싱해 원본 형태의 라이선스 응답을 클라이언트에 전달합니다.
* 클라이언트 플레이어는 전달된 DRM 라이선스를 이용해 콘텐츠 재생을 시작합니다.

## 라이선스 유효기간

라이선스의 유효기간과 만료 시 동작은 재생 시나리오와 클라이언트 환경에 따라 달라집니다. 관련 설정 항목은 라이선스 토큰 가이드의 [playback_policy](https://docs.doverunner.com/ko/content-security/multi-drm/license/license-token/#playback_policy) 규격을 참고하시기 바랍니다.

### 각종 라이선스 유효기간 관련 유의사항

콘텐츠 재생 중에 라이선스가 만료되는 경우, 재생 중단 여부는 클라이언트 환경과 해당 DRM 규격에 따라 다음과 같이 나뉘어집니다.
- `즉시 재생 중단(Hard expiry)`: 라이선스가 만료된 시점에 바로 콘텐츠 복호화가 중단되어 재생이 중지됩니다.
- `재생 종료 시 만료(Soft expiry)`: 콘텐츠 재생 중에는 라이선스가 만료되어도 계속 재생이 진행됩니다. 콘텐츠의 마지막 지점까지 재생이 되거나 사용자에 의해 재생 중단된 이후에는 해당 라이선스로 다시 재생을 시작할 수 없습니다.

동일한 `playback policy` 설정에 대해서도 클라이언트 기기와 OS 버전 등에 따라 다른 방식이 적용될 수 있기 때문에, 콘텐츠 재생 중에 라이선스가 만료되는 경우에 대한 재생 중단 여부는 클라이언트 환경에 따라 달라질 수 있음을 유의하시기 바랍니다.

### 스트리밍 시나리오에서의 라이선스 유효기간 적용

스트리밍 시나리오에서는 동일한 콘텐츠에 대해서도 재생 시작 시점마다 사용자 권한 확인과 새로운 라이선스 발급이 이루어집니다. 따라서 콘텐츠의 길이가 유한한 VOD(Video On Demand) 콘텐츠 또는 특정 이벤트를 대상으로 한시적으로 서비스되는 라이브 콘텐츠에 대해서는 일반적으로 스트리밍용 라이선스에 유효기간을 적용하지 않습니다.

콘텐츠의 길이가 정해져있지 않은 24/7 리니어 채널의 경우에도 대부분 라이선스에 유효기간을 설정하는 대신 키 로테이션 기능을 통해 주기적인 권한 확인을 수행합니다.

특별한 요구사항이 없는 경우, 스트리밍 라이선스의 `playback policy`는 다음과 같이 기본값(무제한)으로 적용하기를 권장합니다.

```json
    "playback_policy": {
        "persistent": false
    }
```

### 오프라인 시나리오에서의 라이선스 유효기간 적용

`오프라인 렌탈`은 온라인 환경에서 콘텐츠와 DRM 라이선스를 다운로드 후에 오프라인 환경에서 기기에 저장된 콘텐츠와 라이선스로 콘텐츠를 재생하는 시나리오입니다.
해당 시나리오에서는 일반적으로 다음과 같은 두 가지 유효기간을 적용합니다.

- `rental duration`: 라이선스를 다운로드 받은 시점부터 최초 재생을 시작할 때까지의 유효기간 (다운로드 콘텐츠의 보관 가능 기간, 예: 30일) 해당 기간 동안 한 번도 재생을 하지 않은 콘텐츠는 라이선스가 만료되어 재생 불가.
- `playback duration`: 최초 재생 시작 시점부터의 라이선스 유효기간 (재생 가능 기간, 예: 24시간) `rental duration` 이내라도 최초 재생 시작 이후 `playback duration` 기간이 지나면 콘텐츠 재생 불가.

콘텐츠와 라이선스를 다운로드 받은 시점에는 `rental duration`에 대한 카운트다운만 시작되며, 다운로드 받은 콘텐츠의 최초 재생 시점부터는 `rental duration` 값은 더 이상 사용되지 않고 `playback duration`만 적용됩니다.

위에서 예시된 유효기간(보관 30일, 재생 24시간)으로 오프라인 렌탈용 라이선스를 요청하는 `playback policy`는 다음과 같습니다.

```json
    "playback_policy": {
        "persistent": true,
        "rental_duration": 2592000,
        "playback_duration": 86400
    }
```