멀티DRM 직접 연동 가이드

개요

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

  1. 게이트웨이 방식

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

    • 서비스 사이트에서 PallyCon 클라우드 서버로부터 라이선스 토큰을 발급 받아 클라이언트에 전달하고, 클라이언트는 해당 토큰을 이용해 라이선스를 발급받는 방식입니다.
    • 라이선스 토큰 API 문서 참조

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

멀티DRM 라이선스 발급 과정

overview

1) 콘텐츠 재생 준비

  • 클라이언트(Player)에서 DRM 콘텐츠 재생을 위해 서비스 사이트로부터 DRM 연동을 위한 정보(PallyCon Custom Data 또는 토큰)를 전달받아 DRM 콘텐츠 재생을 시도합니다.

2) 라이선스 요청

  • 클라이언트에서 설정한 PallyCon Custom Data 또는 토큰 정보는 네이티브 DRM 모듈이 생성한 License Challenge 정보와 함께 PallyCon 멀티DRM 클라우드 서버로 전송됩니다.

3) 콜백 사용자 인증

  • 게이트웨이 방식으로 연동된 경우, PallyCon 멀티DRM 클라우드 서버는 해당 서비스 사이트에 사용자 인증 요청을 합니다. 게이트웨이 페이지에서는 사용자 인증 확인 후 콘텐츠 사용 권한 정보를 회신합니다.
  • 토큰 방식 연동에서는 토큰 발급 전에 서비스 사이트에서 사용자 인증이 처리되므로, 본 과정은 생략됩니다.

4) 라이선스 발급

  • PallyCon 멀티DRM 클라우드 서버는 게이트웨이 페이지 응답이나 토큰 요청 정보에 설정된 권한 정보를 이용해 클라이언트의 DRM 종류에 따라 라이선스를 발급합니다.

Widevine Modular / PlayReady DRM 라이선스 연동

Request

  • Request URI : https://tokyo.pallycon.com/ri/licenseManager.do
  • Request Method : POST
  • Custom HTTP Header, URL Parameter 두 가지 방식으로 custom data 전송이 가능하며, PlayReady의 경우에는 PlayReady Challenge의 customdata 필드도 이용 가능합니다 ( only license token ).
Name Value
pallycon-customdata-v2 사용자 인증 방식에 따라 custom data 또는 token 값을 사용합니다.
1) base64 encoding (PallyCon Custom Data v2 Format 참조)
2) 라이선스 토큰 문자열 (License Token API 참조)

POST body : Native DRM Client 모듈에서 생성한 License Challenge Data

Response

  • 라이선스 정상 발급
Name Value
status code 200 OK
response body native DRM license data
- Widevine Modular: binary data
- PlayReady DRM : base64 encoding string
  • 라이선스 발급 오류
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. FPS Deployment Package 신청 ( https://developer.apple.com/streaming/fps/ )
  3. Apple로부터 Package 받은 후 다음 3가지 정보를 INKA 개발 담당자에게 전달
- FPS Certification File ( .der or .cer format )
- FPS Private Key File ( .pem format )
- FPS Application Secret Key (ASK)

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

FPS Client App에서는 FPS 연동을 하기 위해 사전에 등록된 FPS Certification (.cer) File을 PallyCon Server로부터 아래 연동 규격을 통해 다운 받아야 합니다.

Request

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

Response

  • 정상
Name Value
status code 200 OK
response body base64 encoding (fps certification cer)
  • 오류
Name Value
status code 200 OK
response body JSON Data {"errorCode": "error code", "message": "error message"}

2. FPS 라이선스 연동 규격

Request

Name Value
pallycon-customdata-v2 사용자 인증 방식에 따라 custom data 또는 token 값을 사용합니다.
1) base64 encoding (PallyCon Custom Data v2 Format 참조)
2) 라이선스 토큰 문자열 (License Token API 참조)
  • POST body : spc='base64 encoding(spc data)'
Parameter Value
spc base64 encoding (native DRM client에서 생성한 SPC Data)

Response

  • 라이선스 정상 발급
Name Value
status code 200 OK
response body base64 encoding (CKC data from FPS KSM)
  • 라이선스 발급 오류
Name Value
response body JSON Data {"errorCode": "error code", "message": "error message"}

PallyCon Custom Data v2 Format

JSON Format

{
    "drm_type": "<multi-drm type>",
    "site_id": "<site id>",
    "data": "<base64 encoding(aes256 encryption(custom data json string))>"
}
Name Value
drm_type DRM 종류
("NCG", "Widevine", "PlayReady", "FairPlay")
SiteID PallyCon 클라우드 서비스에서 발급받은 서비스 사이트 ID (4byte)
JSON Data 사용자 인증 관련 정보 (custom data json string)
AES256 암호화 후 base64 encoding

Custom Data JSON Format

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

예제

PallyCon Customdata v2 string
{
     "drm_type":"Widevine",
     "site_id":"DEMO",
     "data":"4wvWFelCQ4ynPUaCSWeb1fcNuFUFqFhEH0jivn11OStvVPP/05wUkNhdKCGchNz1"
}

custom data json string
{"user_id":"test", "cid":"test cid"}

"pallycon-customdata-v2" : "eyJkcm1fdHlwZSI6IldpZGV2aW5lIiwgInNpdGVfaWQiOiJERU1PIiwgImRhdGEiOiI0d3ZXRmVs
Q1E0eW5QVWFDU1dlYjFmY051RlVGcUZoRUgwaml2bjExT1N0dlZQUC8wNXdVa05oZEtDR2NoTnox
In0NCg=="

AES256 암호화

aes256 Encryption/Decryption 처리는 PallyCon Cloud 서비스 사이트 생성 시 발급 되는 사이트 키 값을 이용하여 다음과 같이 처리합니다. ( PallyCon 어드민 사이트에서 확인 )

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

에러 코드

에러 코드 에러 메시지
1002 트라이얼 플랜의 라이선스 제한 또는 유저수 제한이 초과하였습니다.
1003 등록되지 않은 Site ID 입니다.
1004 서비스가 종료된 Site ID 입니다.
1005 트라이얼 플랜 기간이 종료 되었습니다.
1006 SITE KEY 복호화에 실패하였습니다.
2001 DB 접속에 실패하였습니다.
2701 DB에 라이선스 발급 이력 저장이 실패하였습니다.
2702 DB에 실패한 라이선스 발급 이력 저장이 실패하였습니다.
7001 패키징 정보를 찾을 수 없습니다.
7002 콘텐츠 사용 정보 URL에 전달될 데이터 생성에 실패하였습니다.
7006 키 복호화를 실패하였습니다. (라이선스 요청 시)
7007 pallycon-customdata 파싱에 실패하였습니다.
7008 pallycon-customdata 복호화에 실패하였습니다.
7009 Token 파싱에 실패하였습니다.
7010 Token 정보를 찾을 수 없습니다.
7011 Token 기간이 만료되었습니다.
7012 Token CID와 일치하지 않습니다.
7013 Token Json 형식이 잘못되었습니다.
7016 사용할 수 없는 Token 입니다.
7017 Token 사용 이력 저장에 실패하였습니다.
7018 Token DRM 타입이 잘못되었습니다.
7101 Widevine 라이선스 요청 데이터 생성이 실패하였습니다.
7102 Widevine 라이선스 생성이 실패하였습니다.
7103 Widevine 라이선스 발급 서버와 통신을 실패하였습니다.
7104 Widevine 서비스를 지원하지 않는 Site ID 입니다.
7105 Widevine Device ID를 찾을 수 없습니다.
7106 Widevine 서비스 인증서를 받아오는데 실패하였습니다.
7201 PlayReady 라이선스 생성이 실패하였습니다.
7202 PlayReady 라이선스 발급 서버와 통신이 실패하였습니다.
7203 PlayReady 라이선스 요청 데이터 생성이 실패하였습니다.
7204 PlayReady 라이선스 요청 데이터 읽기가 실패하였습니다.
7205 PlayReady 요청 데이터 파싱에 실패하였습니다.
7206 PlayReady Customdata 가 없습니다.
7300 FairPlay Streaming 서비스 인증서 복호화에 실패하였습니다.
7301 FairPlay Streaming 서비스를 신청하지 않은 Site ID 입니다.
7302 FairPlay Streaming 용 개인키를 찾을 수 없습니다.
7303 Site ID의 FairPlay Streaming 키 정보가 잘못 되었습니다.
7304 FairPlay Streaming 라이선스 생성이 실패하였습니다.
7305 FairPlay Streaming SPC 값이 Null 입니다.
7306 FairPlay Streaming Device ID 값이 Null 입니다.
8002 Custom Error. Callback gateway 통한 User 인증 시 반환 되는 Error code, message 값. json 형식으로 표시 {"ERROR":"custom error code", "MESSAGE":"custom error message"}
8004 nonce 값이 잘못되었습니다.
8006 게이트웨이로 전달받은 XML 값이 잘못되었습니다.
8701 콘텐츠 사용 정보 URL에 접근이 실패하였습니다.
8705 콘텐츠 사용 정보 URL이 유효한 URL이 아닙니다.
8706 콘텐츠 사용 정보 URL로부터 전달받은 데이터 복호화가 실패하였습니다.
8707 재생 기간 정보의 시작 시간 또는 종료 시간이 제대로 입력되지 않았습니다.
8708 재생 기간 정보 포맷이 잘못 입력되었습니다.
8709 재생 기간 정보의 시작 시간이 종료 시간보다 뒤로 설정되었습니다.
8710 재생 기간이 아직 되지 않았습니다.
8711 재생 기간이 종료되었습니다.
8712 HDCP 설정 값이 잘못되었습니다.
8715 CGMS-A 설정 값이 잘못되었습니다.
8716 APS 설정 값이 잘못되었습니다.
9001 요청 파라미터가 없습니다.
9999 지원하지 않는 모드입니다.

예제

PallyCon Customdata v2 string
{
     "drm_type":"Widevine",
     "site_id":"DEMO",
     "data":"4wvWFelCQ4ynPUaCSWeb1fcNuFUFqFhEH0jivn11OStvVPP/05wUkNhdKCGchNz1"
}
custom data json string
{"user_id":"test", "cid":"test cid"}

1) Using Custom HTTP Header

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

2) Using URL parameter

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

3 Using PlayReady customdata ( only license token string )

<?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>

구버전 PallyCon Custom Data Format

  • 2가지 방식 지원: Custom HTTP Header, URL Parameter
DRMType(1) + SiteID(4) + base64 E(aes256 E(custom data json string))
Name Value
DRMType Native DRM 종류
("W": Widevine, "P": PlayReady, "F": FairPlay)
SiteID PallyCon 클라우드 서비스에서 발급받은 서비스 사이트 ID (4byte)
JSON Data 사용자 인증 관련 정보 (custom data json string)
AES256 암호화 후 base64 인코딩

custom data json format

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

예제

DRMType : Widevine Modular,
SiteID : DEMO,
custom data json string : {"user_id":"test","cid":"test_cid"}

"pallycon-customdata" :
"WDEMO4wvWFelCQ4ynPUaCSWeb1fcNuFUFqFhEH0jivn11OStvVPP/05wUkNhdKCGchNz1"

1) Using Custom HTTP Header

setRequestHeader("pallycon-customdata", "WDEMO4wvWFelCQ4ynPUaCSWeb1fcNuFUFqFhEH0jivn11OStvVPP/05wUkNhdKCGchNz1");

2) Using URL parameter

license url = "https://tokyo.pallycon.com/ri/licenseManager.do?pallycon-customdata=WDEMO4wvWFelCQ4ynPUaCSWeb1fcNuFUFqFhEH0jivn11OStvVPP/05wUkNhdKCGchNz1"

results matching ""

    No results matching ""