FairPlay Streaming License 발급
- 인쇄
- PDF
FairPlay Streaming License 발급
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
One Click Multi DRM 상품을 통해 발행하는 라이선스 발급을 위한 API입니다.
본 가이드에서는 FairPlay Streaming 타입의 DRM 라이선스 발급 API 를 설명하며, Widevine 또는 PlayReady 타입 DRM 라이선스는 라이선스 발급 API 로 제공합니다.
참고
FairPlay Streaming 라이선스 발급 유의 사항은 다음과 같습니다.
- FairPlay Streaming 라이선스 발급 전 사이트 수정 등을 통해 FPS 라이선스가 사전에 등록되어있어야 합니다.
- One Click Multi DRM은 FPS 라이선스 발행 시 Binary 타입과 JSON 타입 라이선스 응답을 지원합니다.
- 모든 라이선스 요청은 DRM 콘텐츠를 재생할 단말 기기 정보와 플레이어 구현을 통해 요청하셔야 합니다.
경고
- Fairplay Streaming 라이선스 경우 1) 라이선스 요청 (
POST /api/v1/license
) 과 2) 라이선스 요청 처리를 위한 FPS 인증서 요청 (GET /api/v1/license/fairPlay
) 모두 요청하셔야 합니다. - One Click Multi DRM 상품에서는 X-DRM-TOKEN 헤더의 유효성을 확인하며, 선택한 사이트 설정에 맞는 라이선스를 발급합니다. 만약 헤더 값이 유효하지 않으면 라이선스 발행이 되지 않습니다.
- 라이선스 응답 유형은 플레이어의 라이선스 파싱 유형에 맞춰 선택 해주셔야 합니다.
HTML5 플레이어와 같이 일반적인 멀티 DRM 연동만 지원하는 클라이언트에 대해서는 보통 ORIGINAL 로 라이선스 응답을 지원합니다. - One Click Multi DRM 상품에서는 FairPlay Streaming 인증서 등록을 지원하되, 신규 인증서 발급 기능을 지원하지 않습니다. FPS 인증서 발급은 Apple 사로부터 직접 획득해 주셔야 하며, 보다 자세한 사항은 가이드를 참고하실 수 있습니다. : FairPlay Streaming 인증서 발급
- One Click Multi DRM 상품에 업로드한 FairPlay Streaming 인증서에 대해서는 유효성 체크를 지원하지 않습니다.
- One Click Multi DRM 라이선스 요청을 위한 X-DRM-TOKEN 헤더에는 콘텐츠를 재생할 사용자의 고유 ID (서비스 사이트에서 관리하는 유저 ID 혹은 DRM 컨텐츠를 이용할 사용자 계정)인 userId 를 필수로 포함해야 합니다.
- Video Player Enhancement를 활용하여 One Click Multi DRM 라이선스를 요청할 경우 1.1.1 이후 버전에서만 지원합니다.
요청
Method | Endpoint | 설명 |
---|---|---|
POST | POST https://multi-drm.apigw.ntruss.com/api/v1/license | FairPlay Streaming 라이선스 발급 요청 |
GET | GET https://multi-drm.apigw.ntruss.com/api/v1/license/fairPlay | FairPlay Streaming 라이선스 발급을 위한 JSON 타입 인증서 요청 |
GET | GET https://multi-drm.apigw.ntruss.com/api/v1/license/fairPlay | FairPlay Streaming 라이선스 발급을 위한 ORIGINAL 타입 (바이너리) 인증서 요청 |
요청 헤더
헤더명 | 필수 여부 | 설명 |
---|---|---|
x-ncp-apigw-timestamp | YES | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타냄 API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주 x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-iam-access-key | YES | 네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값x-ncp-iam-access-key:{Sub Account Access Key} |
x-ncp-apigw-signature-v2 | YES | Access Key ID 값과 Secret Key로 암호화한 서명x-ncp-apigw-signature-v2:{API Gateway Signature} |
Content-Type | YES | Request body content type을 application/json으로 지정Content-Type: application/json |
x-ncp-region_code | YES | 리전 코드 (KR) |
x-drm-token | YES | One Click Multi DRM 라이선스 발급에 필수 데이터가 포함된 암호화된 토큰값 x-drm-token:{X-DRM-TOKEN} |
X-DRM-TOKEN 헤더
One Click Multi DRM API를 통해 라이선스를 발급하기 위해 X-DRM-TOKEN 헤더 인증이 필수로 필요합니다.
X-DRM-TOKEN 헤더 값 경우, 아래 JSON 데이터를 Base64 문자열로 변환한값을 입력합니다.
- One Click Multi DRM 상품에서는 X-DRM-TOKEN 헤더를 통해 해당 콘텐츠와 사이트의 권한이 있는 사용자인지 확인하며, 요청한 사이트에 설정된 콘텐츠 보안 정책에 따라 DRM 라이선스 규칙을 설정합니다.
필드명 | 필수 여부 | 유효 값 | 설명 |
---|---|---|---|
siteId | YES | 라이선스 발행을 위한 사이트 ID | |
contentId | YES | 재생하려는 콘텐츠의 고유 ID DRM 패키징 시에 사용된 값으로 최소 3글자 이상 영문/숫자 또는 ‘-'(하이픈), ‘_'(언더바) 포함 최대100자 문자까지 입력 가능합니다. | |
drmType | YES | WIDEVINE PLAYREADY FAIRPLAY | 라이선스를 요청하는 DRM 타입 |
responseFormat | YES | ORIGINAL JSON | 라이선스 요청에 대한 응답 데이터 유형. (기본값 : ORIGINAL) * ORIGINAL: 요청한 바이너리 라이선스 데이터 응답 * JSON : 라이선스 데이터와 추가 정보(클라이언트 기기 ID 등)를 포함한 JSON 형식으로 응답. 토큰 프록시 또는 클라이언트 SDK를 사용하는 경우에만 적용 가능. |
userId | YES | 콘텐츠를 재생할 사용자의 고유 ID (서비스 사이트에서 관리하는 유저 ID 혹은 DRM 컨텐츠를 이용할사용자 계정)인 userId |
X-DRM-TOKEN 헤더 생성하기
X-DRM-TOKEN을 생성 하는 방법은 다음과 같습니다.
- 라이선스 요청을 위해 필수적인 siteId, contentId, drmType, responseFormat, userId 를 JSON으로 입력합니다.
# json
{"siteId":"drm-20231115142326-nHyNw","contentId":"my-drm-content-sample","drmType":"FAIRPLAY","responseFormat":"ORIGINAL","userId":"d41d8cd98f00b204e9800998ecf8427e"}
- 입력한 JSON 데이터를 Base64 URL 로 인코딩 합니다.
# Base64 Encrypted String
eyJzaXRlSWQiOiJkcm0tMjAyMzExMTUxNDIzMjYtbkh5TnciLCJjb250ZW50SWQiOiJteS1kcm0tY29udGVudC1zYW1wbGUiLCJkcm1UeXBlIjoiRkFJUlBMQVkiLCJyZXNwb25zZUZvcm1hdCI6Ik9SSUdJTkFMIiwidXNlcklkIjoiZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UifQ==
주의
Base64 로 인코딩 되는 과정에 JSON 의 공백값이나 엔터값을 포함하지 않도록 주의 부탁드립니다.
예시
x-drm-token 헤더 포함 라이선스 발급 요청 예시
POST https://multi-drm.apigw.ntruss.com/api/v1/license
curl -i -X POST \
-H "x-ncp-apigw-timestamp:1505290625682" \
-H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
-H "x-ncp-apigw-signature-v2:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
-H "x-ncp-region_code:KR" \
-H "accept: application/json" \
-H "X-DRM-TOKEN: eyJzaXRlSWQiOiJkcm0tMjAyMzExMTUxNDIzMjYtbkh5TnciLCJjb250ZW50SWQiOiJteS1kcm0tY29udGVudC1zYW1wbGUiLCJkcm1UeXBlIjoiRkFJUlBMQVkiLCJyZXNwb25zZUZvcm1hdCI6Ik9SSUdJTkFMIiwidXNlcklkIjoiZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UifQ== \
'https://multi-drm.apigw.ntruss.com/api/v1/license'
x-drm-token 헤더 포함 FPS 인증서 발급 요청 예시
GET https://multi-drm.apigw.ntruss.com/api/v1/license/fairPlay
curl -i -X GET \
-H "x-ncp-apigw-timestamp:1505290625682" \
-H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
-H "x-ncp-apigw-signature-v2:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
-H "x-ncp-region_code:KR" \
-H "accept: application/json" \
-H "X-DRM-TOKEN: eyJzaXRlSWQiOiJkcm0tMjAyMzExMTUxNDIzMjYtbkh5TnciLCJjb250ZW50SWQiOiJteS1kcm0tY29udGVudC1zYW1wbGUiLCJkcm1UeXBlIjoiRkFJUlBMQVkiLCJyZXNwb25zZUZvcm1hdCI6Ik9SSUdJTkFMIiwidXNlcklkIjoiZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UifQ== \
'https://multi-drm.apigw.ntruss.com/api/v1/license/fairPlay'
응답
참고
- ORIGINAL 타입 라이선스에 대해서는 binary 응답으로 제공됩니다.
- binary 라이선스 요청 응답에 대해서는 응답 예시가 제공되지 않습니다.
JSON 타입 라이선스 요청 응답
필드명 | 필수 여부 | 타입 | 설명 |
---|---|---|---|
license | Yes | String | 라이선스 JSON 데이터 |
licenseCreatedTime | Yes | Timestamp | 라이선스 발행 시간 |
tokenCreatedTime | Yes | Timestamp | X-DRM-TOKEN 헤더 유효성 통과 후 유효 시간 |
tokenExpireTime | Yes | Timestamp | 요청한 X-DRM-TOKEN 헤더 토큰 유효 시간 |
응답 예시
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 20 Nov 2023 20:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4
{
"license": "080512BF050AB9020803121044E0A85CB19D0441AC6C66B3D6ABBCC218E39FC48D06228E023082010A0282010100B2FB0D937113004C0F805C6C57DE7B266E2B5E2FE12241FF1421ED55DE2C3F73F62891D7587A8ED153F4009D9522C3609A5DC3C4E43891F8F2D7B448B36E8B77AD96DC795795706D4289F8E61FBDF564AB57E5A5EDDB64FC4EA6891C793B3FC615998CB01214D769F5BC9F93DD96D5ACB7E7239F0C3749309C55C41DD889277B28D74ADA5CB9B3F760318B55EE7FB9336283E3792EA360CC3BD32F4FDB49C4D33A5836DE3428B62D027964A989F42AB37E123BE5EFC15285090B2601F09A93AAD66546D8F85820B882A1AA3D320A8759628BB177484A660D54711FDC338DB6119E34B49F927942A343F5AD069C06DBCAF3958F83F796EAC7BF5C860B893D6CB102030100013A08696E6B612E636F6D400248011280030078BF2DF3FF6F3A488B86023BD961B3FCA718DAA38976B74620A560A8524E53C16F064CB7528F174162F331C32AA0E72296DD15BB79CA986B7739A85C7A4AB4B06D8665CDD166C58C1E030D6232AEC7970801125CC59FB988265FFFD38BD04241AAFEBB91F8C933A9E70A3B52F0FBF29306F10A2AF91B30BD3EBE24D7890778898A4999F0F7D28BFFBBD6647B08D93EDEE309C2B4B9E3080F269A1C3DE899FDA800C277EC6D0882365B1C9805D0FF4DBEB2E8BA5C51F86F910F73C1776761B85F88943E44DDCD7ABF797C4A4BE2489D6BE4FAAE4569A435E5D5E3773636EF872706F155B271D6E49D4C750A51614DBBD5D2A0F9B8E352FA91B52EC19593F215BCEB2E8401CCC9757C48793C9AB4904B93C7D326BFFBB5E24CDBF297599FB22724C95C9D40D44455586B188A6D10658BEBE5F6CE812FABB8CA58282B5D28176D5DFF3B358692CC4FC6895A06C0B90A192D65F69AE07415DCEF6E54A677D5C769BA6E9CC24E2B968BC3E6E4D4E099E446D9F7E38740DBB708023E6D35D99F1B10",
"licenseCreatedTime": 1700476438204,
"tokenCreatedTime": 1700476438107,
"tokenExpireTime": 1700477038107
}
이 문서가 도움이 되었습니까?