DRM-X 6.0 dove 및 올리브 지점 로고DRM-X 6.0문서
◎ 한국어

백엔드 언어별 예제

일반적인 재생 흐름을 이해하고 Node.js, Django, Laravel, PHP, ASP.NET 또는 Java에서 수정하기 위해 정확한 콜백을 찾으십시오.

Markdown 보기실행 예제2026-09-25 업데이트

시청 권한은 고객 웹사이트가 결정합니다.#

기존 로그인, 구매, 멤버십, 수강 등록 시스템을 유지하세요. 애플리케이션이 현재 사용자와 권한이 확인된 Content ID를 제공합니다. SDK는 DRM-X를 호출하고 플레이어는 보호된 동영상을 로드합니다.

기존 애플리케이션에 한 번 연결

로그인과 접근 허용 여부는 고객이 결정합니다. SDK와 플레이어는 보호된 재생을 처리합니다.

  1. 기존 로그인 유지

    시청자는 기존 웹사이트에서 로그인합니다.

  2. 콘텐츠 조회 연결

    애플리케이션이 접근 권한을 확인하고 선택한 강의의 DRM-X Content ID를 반환합니다.

  3. SDK를 통해 호출

    백엔드 SDK는 서버 자격 증명을 사용하여 DRM-X에 허용된 재생을 요청합니다.

  4. 플레이어 표시

    플레이어는 DRM 라이센스를 획득하고 게시 된 암호화 된 콘텐츠를 재생합니다.

2개의 영상 ID를 이해하십시오#

값예값의 출처
웹 사이트 비디오 IDlesson-123수업, 제품 또는 비디오 기록.
DRM-X Content IDyour-published-content-idDRM-X에 게시 된 보호 된 내용.
사용자 IDcustomer-456인증된 로그인 세션.

기존 데이터베이스, API 또는 애플리케이션 코드를 사용해 강의를 Content ID에 연결합니다. 동영상을 찾았다고 해서 해당 사용자가 볼 수 있는 것은 아닙니다. 반환 전에 권한을 검사합니다.

한 번 준비, 다음 통합#

  1. 동영상 하나를 암호화하고 게시한 뒤 Content ID를 복사합니다.
  2. 같은 환경에서 사용할 재생 자격 증명을 생성합니다. Site ID, Site Key, Access Key는 서버에서 사용합니다.
  3. 완전한 키트 또는 플랫폼 키트를 다운로드하십시오. 패키지 관리자를 사용하여 SDK를 설치하십시오.
  4. 사용자와 콘텐츠에 대한 권한 검사 콜백을 연결한 다음 페이지에 플레이어를 추가합니다.

SDK는 이미 게시된 콘텐츠를 사용합니다. 패키저나 결제 시스템을 대체하지 않습니다. 타사 런타임 의존성을 설치할 때 인터넷 연결이 필요할 수 있습니다.

프로그래밍 언어 선택#

프로그래밍 언어를 선택하면 수정 위치를 확인할 수 있습니다.

Node.js / Express

애플리케이션 수정 위치: server.mjs

연결할 함수: authorize(userId, videoId)

접근이 허용된 콘텐츠 매핑 또는 null을 반환합니다. 기존 로그인 미들웨어에서 사용자를 읽습니다.

튜토리얼 및 설치 명령 열기 →

Python / Django

애플리케이션 수정 위치: authorization.py

연결할 함수: authorize(user, video_id)

content_id를 포함한 사전 또는 None을 반환합니다. settings.py에서 DRMX['AUTHORIZE']로 등록합니다.

튜토리얼 및 설치 명령 열기 →

PHP / Laravel

애플리케이션 수정 위치: app/Services/DrmxAccess.php

연결할 함수: ContentAuthorizer.authorize(user, videoId)

접근이 허용된 콘텐츠 배열 또는 null을 반환합니다. AppServiceProvider에서 서비스를 바인딩합니다.

튜토리얼 및 설치 명령 열기 →

프레임워크 없는 PHP

애플리케이션 수정 위치: index.php

연결할 함수: findAuthorizedVideo(userId, videoId)

접근이 허용된 콘텐츠 배열 또는 null을 반환합니다. 기존 PHP 세션의 사용자 신원을 연결합니다.

튜토리얼 및 설치 명령 열기 →

C# / ASP.NET Core

애플리케이션 수정 위치: Program.cs

연결할 함수: QuickStartCatalog.FindAuthorizedVideoAsync

QuickStartVideo 또는 null를 반환합니다. IDrmXContentEntitlement는 그 결과에 대한 요청된 Content ID를 검증합니다.

튜토리얼 및 설치 명령 열기 →

C# / ASP.NET Framework

애플리케이션 수정 위치: App_Code/DrmXPlayback.cs

연결할 함수: ApplicationServices.Authorize

사용자, Content ID, 콘텐츠 유형에 대한 권한이 모두 확인된 경우에만 true를 반환하세요. Windows/IIS용 소스 어댑터입니다.

튜토리얼 및 설치 명령 열기 →

Java / Spring Boot

애플리케이션 수정 위치: DrmxAccess.java

연결할 함수: ContentEntitlement.authorize(userId, videoId)

Optional<AuthorizedVideo> 또는 Optional.empty()를 반환합니다. 컨트롤러와 권한 검사 bean을 기존 저장소에 연결합니다.

튜토리얼 및 설치 명령 열기 →

서버 구성#

예제환경 변수
Node, Django, Java, PHP SDK, LaravelDRMX_SITE_ID, DRMX_SITE_KEY, DRMX_ACCESS_KEY
ASP.NET Core 및 ASP.NET FrameworkDRMX_PLAYBACK_SITE_ID, DRMX_PLAYBACK_SITE_KEY, DRMX_PLAYBACK_ACCESS_KEY

서버 프로세스에서 이 값을 로드하세요. Content ID는 동영상별 값입니다. 사용자나 동영상을 전환하기 위해 공유 자격 증명이나 전역 설정을 덮어쓰지 마세요. 정책 선택은 서버에서 처리하세요.

PHP: 기존 웹 사이트를 연결#

이 플랫폼 키트 다운로드

미리보기 SDK, 응용 예제 및 소스. 추출된 폴더 레이아웃을 유지하십시오.

전체 플랫폼 및 전체 키트 · 통합 과정 이해하기

  1. 설정

    서버 환경

    DRMX_SITE_ID, DRMX_SITE_KEY 및 DRMX_ACCESS_KEY를 설정합니다.

  2. 권한 부여examples/sdk/php/index.php

    findAuthorizedVideo($userId, $videoId)를 편집하고 기존 세션 사용자 ID를 읽으십시오.

  3. 삽입

    수업 페이지

    플레이어 마크 업을 재사용하고 세션 엔드포인트에서 선택한 videoId를 유지합니다.

cd examples/sdk/php
composer install
# Set server credentials and DRMX_LOCAL_DEMO=1 for a localhost demo only.
php -S 127.0.0.1:8106 index.php

첫 테스트에서는 findAuthorizedVideo 안의 your-published-content-id을 교체합니다. http://127.0.0.1:8106/?videoId=1를 열고 Local demo sign in을 사용합니다. PHP에는 cURL과 ZIP 지원이 필요하며 PHP 8.2 이상을 사용합니다.

실제 애플리케이션에서는 데모 함수를 기존 조회로 교체합니다. 다음 저장소 호출은 예시이므로 고객의 데이터베이스를 사용해 구현합니다.

function findAuthorizedVideo(string $userId, string $videoId): ?array {
    $video = customerFindAuthorizedVideo($userId, $videoId);
    if ($video === null) return null;
    return ['contentId' => $video['drmx_content_id'],
            'contentType' => 'vod', 'title' => $video['title'],
            'policy' => 'multi-tier-standard'];
}

기존 서버 인증에서 $userId을 읽습니다. 예제의 출처 검사, 요청 검증, 정확한 콘텐츠 및 유형 검사를 유지합니다. 게시된 콘텐츠에 맞는 정책을 선택합니다. PlaybackClient은 DRM-X 요청을 수행할 뿐 고객의 구매 규칙을 추론하지 않습니다.

다른 언어 및 API 통합#

Go, Ruby 등 다른 서버 언어에서도 사용자 인증과 콘텐츠 접근 검사 후 재생 세션 API를 호출할 수 있습니다. 이번 릴리스에는 Go 또는 Ruby SDK 라이브러리가 없습니다. 위의 일곱 가지 통합 방식에는 포함된 SDK 사용을 권장합니다.

운영 배포 전 확인#

  • 접근이 허용된 사용자로 로그인하여 지원되는 브라우저에서 게시된 동영상을 재생합니다.
  • 로그아웃 사용자와 미결제 사용자를 테스트하고 권한 철회 및 만료도 확인합니다. 새 세션 요청은 거부되어야 합니다.
  • 브라우저의 Content ID 또는 사이트 동영상 ID를 변경해 봅니다. 서버는 새 선택 항목을 검사해야 합니다.
  • 정확한 공개 HTTPS 출처를 설정하고 프레임워크의 세션 및 CSRF 보호를 유지하며 데모 신원 코드를 비활성화합니다.

기존 세션과 DRM 라이선스에는 자체 유효기간이 있습니다. 새 요청에서는 권한 변경을 검사하지만 이미 발급된 라이선스를 삭제하지는 않습니다.

PHP: 전체 데모 웹사이트 실행#

온라인 PHP 데모 사용하기 · 전체 PHP 데모 다운로드 · SHA-256

기존 사이트에 Composer 기반으로 간단히 통합하려면 위의 PHP SDK 예제를 선택합니다. 바로 실행할 수 있는 사이트와 재생목록, 토큰 프록시, 진단 예제가 필요하면 전체 데모를 선택합니다. 전체 데모는 소스 어댑터를 사용하며 PHP 8.2+와 cURL이 필요하지만 Composer나 데이터베이스는 필요하지 않습니다. 두 방식 모두 자격 증명을 서버에 보관하며 고객의 권한 검사가 필요합니다.

  1. 첫 번째 재생config/drmx.php

    siteId, siteKey, accessKey, content.id, content.type 및 매칭 licensePolicyTemplate를 설정합니다. 배열의 나머지를 지키십시오.

  2. 당신의 고객src/bootstrap.php

    authenticated_user_id()를 로그인 시스템에 연결하고, user_can_play_content()를 현재 구매·멤버십·수강 등록 상태를 검사하는 코드로 교체합니다.

  3. 동영상 카탈로그src/bootstrap.php + public/index.php

    데모 카탈로그 도우미를 기존 동영상 조회로 교체합니다. 허용된 Content ID와 유형만 페이지에 출력하고 모든 세션 요청에서 서버 검사를 유지합니다.

# Windows, inside the extracted drmx-php-sample folder:
powershell -NoProfile -ExecutionPolicy Bypass -File .\run-local.ps1
# macOS / Linux:
bash ./run-local.sh

http://127.0.0.1:8086/를 열고 Play를 누릅니다. 온라인 재생은 등록된 매니페스트를 자동으로 찾습니다. 로컬 데모는 테스트 시청자를 로그인시키며, 이는 첫 재생 확인용입니다.

실제 사이트에서는 config/drmx.php의 demo.allowLogin, demo.autoAuthenticateLocalhost, demo.autoAuthenticatePublicDemo를 false로 설정하거나 대응하는 프로세스 변수를 비활성화합니다. 기존 로그인과 최신 권한 검사를 사용하고, 데모 세션의 권한 목록을 구매 데이터베이스로 사용하지 않습니다. 포함된 public/api/playback-session.php와 playback-release.php가 재생 API를 처리하며, 요청 검증과 콘텐츠 바인딩을 유지해야 합니다. 웹 문서 루트를 public/로 지정하고 웹 서버 라우팅을 사용합니다. 내장 실행기는 로컬 테스트용입니다.

카탈로그 도우미 함수는 demo_content_id(), demo_content_type(), player_playlist() 및 configured_content()입니다. 여러 동영상을 제공하는 사이트에서는 기존 카탈로그에서 이 값을 조회하고, 권한 검사에서 선택한 콘텐츠를 정확히 검증해야 합니다. 구매 기록을 DRM-X 테이블에 동기화할 필요는 없습니다. 기존 DRM 라이선스에는 자체 유효기간이 있으며, 새 세션에서는 권한 철회 여부를 다시 검사합니다.

정책, 호스팅, 토큰 프록시, 네이티브 오프라인에 관한 전체 설명은 포함된 README를 참고합니다. 릴리스 전에 HTTPS와 지원 브라우저에서 허용된 재생, 거부되거나 권한이 철회된 사용자, 콘텐츠 바꿔치기, Stop을 테스트합니다.

어떤 저장소를 사용해도 Content ID 하나로 통합#

스트리밍 통합 코드에 매니페스트 URL을 입력할 필요가 없습니다. 1aicloud 또는 설정된 S3 저장소를 사용하면 DRM-X가 패키지 게시 시 기록한 미디어 URL을 사용합니다. 암호화 파일을 고객 서버에 업로드했다면 먼저 해당 DASH/HLS 미디어 URL을 DRM-X에 등록합니다. 이후 PHP, ASP.NET 또는 다른 통합에서도 같은 Content ID를 사용합니다. 서버는 재생을 요청하기 전에 현재 사용자의 권한을 계속 검사해야 합니다.

  1. 게시 또는 등록은 한 번만DRM-X content settings

    해당 Content ID에 올바른 보호된 DASH/HLS 미디어 URL이 등록되어 있는지 확인합니다.

  2. 웹 사이트 연결

    권한 확인 콜백

    로그인 상태와 구매, 멤버십 또는 수강 등록을 확인하고 허용된 Content ID를 반환하세요.

  3. 재생DRM-X playback session

    DRM-X는 게시된 패키지를 확인하여 적절한 매니페스트와 DRM License Token을 반환합니다.

등록된 매니페스트가 없다면 DRM-X의 게시 설정이나 미디어 URL 등록을 수정합니다. 브라우저에서 임의로 전달된 URL을 대체 주소로 사용하지 않습니다. 전체 PHP 데모의 네이티브 오프라인 엔드포인트는 별도의 고급 예제이며, 현재 필요한 수동 매핑은 advanced/OFFLINE.md에 설명되어 있습니다.