멀티DRM 네이티브 클라이언트 연동 가이드

개요

PallyCon 멀티DRM 클라우드 서버는 Google Widevine Modular, Apple FairPlay Streaming, Microsoft PlayReady DRM 라이선스를 발급하는 기능을 제공합니다. 클라이언트에서 멀티DRM 라이선스를 발급받기 위해서는 해당 서비스 사이트와의 연동을 통해 사용자 인증을 해야 하며, 연동 방식은 다음과 같이 두 가지 방식이 있습니다.

  1. 콜백 방식

    • 클라이언트에서 라이선스 요청 시, PallyCon 클라우드 서버에서 각 서비스 사이트 별로 등록된 콜백 페이지를 호출해 인증하는 방식입니다.
  2. 토큰 방식

    • 서비스 사이트에서 미리 정의된 규격에 따라 라이선스 토큰을 생성해 클라이언트에 전달하고, 클라이언트는 해당 토큰을 이용해 라이선스를 발급받는 방식입니다.
    • 라이선스 토큰 가이드 참조

본 문서는 멀티DRM 클라이언트(HTML5 플레이어, iOS/Android 앱, 스마트TV, 셋탑박스 등)에서 PallyCon 클라이언트 SDK를 사용하지 않고 직접 각 기기의 네이티브 DRM을 사용해 개발할 경우에 PallyCon 멀티DRM 클라우드 서버로부터 라이선스를 발급받기 위한 연동 가이드 문서입니다.

멀티DRM 라이선스 발급 과정

  1. 콘텐츠 재생 준비
  • 클라이언트(Player)에서 DRM 콘텐츠 재생을 위해 서비스 사이트 백엔드로부터 DRM 연동을 위한 커스텀 데이터(사용자 인증 데이터 또는 라이선스 토큰)를 전달받아 DRM 콘텐츠 재생을 시도합니다.
  1. 라이선스 요청
  • 클라이언트에서 설정한 사용자 인증 데이터(Auth Data) 또는 라이선스 토큰 정보는 네이티브 DRM 모듈이 생성한 License Challenge 정보와 함께 PallyCon 멀티DRM 클라우드 서버로 전송됩니다.
  1. 콜백 사용자 인증
  • 콜백 방식으로 연동된 경우, PallyCon 멀티DRM 클라우드 서버는 해당 서비스 사이트의 콜백 페이지로 사용자 인증 데이터를 전송해 인증 요청을 합니다. 콜백 페이지에서는 사용자 인증 및 권한 확인 후 콘텐츠 사용 권한 정보를 회신합니다.
  • 토큰 방식 연동에서는 토큰 발급 전에 서비스 사이트에서 사용자 인증이 처리되므로, 본 과정은 생략됩니다.
  1. 라이선스 발급
  • PallyCon 멀티DRM 클라우드 서버는 콜백 페이지 응답이나 토큰 요청 정보에 설정된 권한 정보를 이용해 클라이언트의 DRM 종류에 따라 라이선스를 발급합니다.

Widevine Modular / PlayReady DRM 라이선스 연동

Request

  • Request URI : https://license-global.pallycon.com/ri/licenseManager.do
  • Request Method : POST
  • 커스텀 HTTP 헤더, URL 파라미터 등의 방식으로 PallyCon 커스텀 데이터의 전송이 가능하며, PlayReady의 경우에는 PlayReady Challenge의 customdata 필드도 이용 가능합니다. (이 경우 라이선스 토큰만 가능)
Name Value
pallycon-customdata-v2 라이선스 연동 방식에 따라 콜백용 사용자 인증 데이터(auth data) 또는 토큰 값을 사용합니다.
1) base64 encoding (콜백용 인증 데이터)
2) 라이선스 토큰 문자열 (License Token Guide 참조)

POST 바디에는 네이티브 DRM 클라이언트 모듈에서 생성한 라이선스 챌린지 데이터를 입력합니다.

Response

  • 라이선스 정상 발급
Name Value
status code 200 OK
response body DRM 라이선스 데이터
- Widevine Modular: 바이너리 데이터
- PlayReady DRM : base64 인코딩된 문자열
  • 라이선스 발급 오류
Name Value
status code 200 OK
response body JSON Data {“eccorCode”: “error code”,“message”: “error message”}

FairPlay Streaming DRM 라이선스 연동

FPS License 발급을 연동하기 위해서는 콘텐츠 서비스 측에서 Apple로부터 아래 정보를 발급 받아 PallyCon 멀티DRM 서버에 설정해 주어야 합니다.

  1. Apple 개발자 계정 생성 ( https://developer.apple.com/support/enrollment/ )
  2. Apple에 FPS Deployment Package 신청 ( https://developer.apple.com/streaming/fps/ )
  3. Deployment Package를 이용해 생성한 다음 4가지 정보를 PallyCon 콘솔 사이트의 연동 설정에 등록
- FPS Certificate 파일 (.der or .cer)
- Private key 파일 (.pem)
- Private key 암호 문자열
- Application secret key (ASK) 문자열

위 등록 과정에 대한 상세한 설명은 FairPlay 인증서 등록 자습서를 참고하시기 바랍니다.

1. FPS Certification File 다운로드 연동 규격

FPS 클라이언트에서는 FPS 연동을 하기 위해 사전에 등록된 인증서 데이터를 PallyCon 서버로부터 아래 연동 규격을 통해 다운 받아야 합니다.

Request

Parameter Value
siteId PallyCon Service에서 발급 받은 서비스 사이트 ID (4 byte)

Response

  • 정상
Name Value
status code 200 OK
response body base64 인코딩 (FPS 인증서 데이터)
  • 오류
Name Value
status code 200 OK
response body JSON Data {“errorCode”: “error code”, “message”: “error message”}

FPS 인증서 URL은 고객사의 편의를 위해 제공되는 것으로, 필요에 따라 위 규격 대신 해당 Cert 파일(.cer 또는 .der)을 고객사에서 자체 서버에 호스팅하고 해당 URL을 사용할 수도 있습니다.

2. FPS 라이선스 연동 규격

Request

Name Value
pallycon-customdata-v2 라이선스 연동 방식에 따라 콜백용 사용자 인증 데이터(Auth data) 또는 라이선스 토큰 값을 사용합니다.
1) base64 encoding (콜백용 인증 데이터)
2) 라이선스 토큰 문자열 (License Token API 참조)
  • POST 바디에는 Base64 인코딩된 SPC 데이터를 입력합니다.
Parameter Value
spc base64 인코딩 (네이티브 DRM 클라이언트에서 생성한 SPC 데이터)

Response

  • 라이선스 정상 발급
Name Value
status code 200 OK
response body base64 인코딩 (PallyCon FPS 서버에서 생성한 CKC 데이터)
  • 라이선스 발급 오류
Name Value
response body JSON Data {“errorCode”: “error code”, “message”: “error message”}

콜백용 사용자 인증 데이터 (Auth Data) 형식

{
    "drm_type": "<DRM 종류>",
    "site_id": "<사이트 아이디>",
    "data": "<base64 인코딩(aes256 암호화(인증 정보 JSON))>"
}
Name Value
drm_type DRM 종류 (“NCG”, “Widevine”, “PlayReady”, “FairPlay”)
site_id PallyCon 클라우드 서비스에서 발급받은 서비스 사이트 ID (4byte)
data 인증 정보(JSON 문자열)를 AES256 암호화 후 base64 인코딩한 값

인증 정보 형식

{
    "user_id": "사용자 아이디",
    "cid": "콘텐츠 아이디",
    "oid": "부가 정보"
}
Name Value
user_id 서비스 사이트의 사용자 ID
cid 콘텐츠 고유 ID
oid 부가 연동 정보. 주문 정보 등 추가적으로 서비스 사이트에 전달되기를 원하는 정보를 입력합니다. (선택 사항)

AES256 암호화

aes256 암호화 처리는 PallyCon Cloud 서비스 사이트 생성 시 발급 되는 사이트 키 값을 이용하여 다음과 같이 처리합니다. ( PallyCon 콘솔 사이트에서 확인 가능)

AES256 Encryption
- mode : CBC
- key : 32 byte (PallyCon 콘솔 사이트에서 발급되는 사이트 키)
- iv : 16 byte (0123456789abcdef)
- padding : pkcs7

예제

인증 정보 JSON 예제
{"user_id":"test", "cid":"test cid"}

콜백용 인증 데이터 (Base64 인코딩 전)
{
     "drm_type":"Widevine",
     "site_id":"DEMO",
     "data":"4wvWFelCQ4ynPUaCSWeb1fcNuFUFqFhEH0jivn11OStvVPP/05wUkNhdKCGchNz1"
}

1) 커스텀 HTTP 헤더 이용 시

setRequestHeader("pallycon-customdata-v2", "eyJkcm1fdHlwZSI6IldpZGV2aW5lIiwgInNpdGVfaWQiOiJERU1PIiwgImRhdGEiOiI0d3ZXRmVs
Q1E0eW5QVWFDU1dlYjFmY051RlVGcUZoRUgwaml2bjExT1N0dlZQUC8wNXdVa05oZEtDR2NoTnox
In0NCg==");

2) URL 파라미터 이용 시

license url = "https://license-global.pallycon.com/ri/licenseManager.do?pallycon-customdata-v2=eyJkcm1fdHlwZSI6IldpZGV2aW5lIiwgInNpdGVfaWQiOiJERU1PIiwgImRhdGEiOiI0d3ZXRmVs
Q1E0eW5QVWFDU1dlYjFmY051RlVGcUZoRUgwaml2bjExT1N0dlZQUC8wNXdVa05oZEtDR2NoTnox
In0NCg=="

3) PlayReady customdata 필드 이용 시 (토큰 방식 전용)

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>AcquireLicense
    xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols">
<challenge>
...

<ClientInfo> ... </ClientInfo>
<CustomData>eyJ0b2tlbiI6IlRhXC9SdkJBZ1U4ZDdwSExqeXVyK2MxTU05N1pXUm1pSmdXYzJcL1U5MnBPbWJhOXNtXC9ybHdmc0lNM2ZValhzSTUiLCJzaXRlX2lkIjoiREVNTyIsImRybV90eXBlIjoiUGxheVJlYWR5IiwiY2lkIjoidHJheSJ9</CustomData>
이전
다음