License 클라이언트 연동
- 인쇄
- PDF
License 클라이언트 연동
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
One Click Multi DRM 상품을 통해 발행하는 라이선스를 Player 에 연동하기 위해 이해를 돕기 위해 작성된 가이드입니다.
참고
라이선스 발급 유의 사항은 다음과 같습니다.
- 클라이언트(Player) 연동을 위해 DRM 타입별 라이선스 발급 가이드를 반드시 참고하시기 바랍니다.
- 라이선스 발급은 플레이어 요청/구현 방안에 맞춰 맞는 타입으로 요청해야 합니다.
- 보편적인 상용 플레이어(html5/videojs/shaka)에서는 라이선스를 json 이 아닌 original (binary) 타입을 지원합니다.
- fairplay 라이선스 경우 ceritificateUri 및 certificateRequestHeader 헤더를 반드시 활용하여 라이선스를 요청합니다.
- fairplay 라이선스 대한 응답이 binary로 필요한 경우, GET /license/fairPlayBinary 를 통해 응답을 획득합니다.
- NCP VPE (Video Player Enhancement) 를 통해 DRM 을 연동할 경우 VPE 콘텐츠 인증 가이드를 참고합니다
- Video Player Enhancement를 활용하여 One Click Multi DRM 라이선스를 요청할 경우 1.1.1 이후 버전에서만 지원합니다.
- 모든 라이선스 요청은 DRM 콘텐츠를 재생할 단말 기기 정보와 플레이어 구현을 통해 요청하셔야 합니다.
Player 연동 하기
요청 헤더
헤더명 | 필수 여부 | 설명 |
---|---|---|
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 | String | 라이선스를 요청한 사용자의 고유 ID (서비스 사이트에서 관리하는 유저 ID 혹은 DRM 컨텐츠를 재생한 사용자 계정) |
x-drm-token 헤더 생성하기
x-drm-token 을 생성 하는 방법은 다음과 같습니다.
- 라이선스 요청을 위해 필수적인 siteId, contentId, drmType, responseFormat, userId 를 JSON으로 입력합니다.
# json
{"siteId":"drm-20231115142326-nHyNw","contentId":"my-drm-content-sample","drmType":"WIDEVINE","responseFormat":"original","userId":"d41d8cd98f00b204e9800998ecf8427e"}
- 입력한 JSON 데이터를 Base64 URL 로 인코딩 합니다.
# Base64 Encrypted String
eyJzaXRlSWQiOiJkcm0tMjAyMzExMTUxNDIzMjYtbkh5TnciLCJjb250ZW50SWQiOiJteS1kcm0tY29udGVudC1zYW1wbGUiLCJkcm1UeXBlIjoiV0lERVZJTkUiLCJyZXNwb25zZUZvcm1hdCI6Im9yaWdpbmFsIiwidXNlcklkIjoiZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UifQ==
주의
Base64로 인코딩 되는 과정에 JSON의 공백값이나 엔터값을 포함하지 않도록 주의 부탁드립니다.
Player 구현 예시
x-drm-token 헤더 포함 예시
//widevine license request sample
'com.widevine.alpha': {
src: 'https://uz1urqjj2471.beta-edge.naverncp.com/live/video/ls-20231031105925-YvxnQ/live.mpd', //DRM Encryption 이 적용된 DRM 콘텐츠 재생 경로
licenseUri: 'https://multi-drm.apigw.ntruss.com/api/v1/license', //DRM license 발급을 위한 경로
licenseRequestHeader: {
'X-NCP-REGION_CODE': 'KR',
'X-ncp-apigw-timestamp': 1698832564997,
'X-ncp-iam-access-key': 'ft1GKEpjSc53lHuqtAxE',
'x-ncp-apigw-signature-v2': 'Z0LjTbqFjWtxlRskM8vDj5Uha1FGhE4fzdds2ZO8FrQ=',
'X-DRM-TOKEN': 'eyJyZXNwb25zZUZvcm1hdCI6Im9yaWdpbmFsIiwic2l0ZUlkIjoiZHJtLTIwMjMxMTAxMDgyMzE2LWRKREdhIiwiY29udGVudElkIjoidGVzdENvbnRlbnRJZCIsImRybVR5cGUiOiJXSURFVklORSJ9'
} //One Click Multi DRM 상품 활용을 위한 apigw 필수 인증 및 X-DRM-TOKEN 헤더값
},
//playready license request sample
'com.microsoft.playready': {
src: 'https://uz1urqjj2471.beta-edge.naverncp.com/live/video/ls-20231031105925-YvxnQ/live.mpd', //DRM Encryption 이 적용된 DRM 콘텐츠 재생 경로
licenseUri: 'https://multi-drm.apigw.ntruss.com/api/v1/license', //DRM license 발급을 위한 경로
licenseRequestHeader: {
'X-NCP-REGION_CODE': 'KR',
'X-ncp-apigw-timestamp': 1698832564997,
'X-ncp-iam-access-key': 'ft1GKEpjSc53lHuqtAxE',
'x-ncp-apigw-signature-v2': 'Z0LjTbqFjWtxlRskM8vDj5Uha1FGhE4fzdds2ZO8FrQ=',
'X-DRM-TOKEN': 'eyJyZXNwb25zZUZvcm1hdCI6Im9yaWdpbmFsIiwic2l0ZUlkIjoiZHJtLTIwMjMxMTAxMDgyMzE2LWRKREdhIiwiY29udGVudElkIjoidGVzdENvbnRlbnRJZCIsImRybVR5cGUiOiJXSURFVklORSJ9'
} //One Click Multi DRM 상품 활용을 위한 apigw 필수 인증 및 X-DRM-TOKEN 헤더값
},
//fairplay streaming license request sample
'com.apple.fps': {
src: 'https://uz1urqjj2471.beta-edge.naverncp.com/live/video/ls-20231031105925-YvxnQ/playlist.m3u8', //DRM Encryption 이 적용된 DRM 콘텐츠 재생 경로
certificateUri: 'https://multi-drm.apigw.ntruss.com/api/v1/license/fairPlay', //DRM license 발급을 위해 필요한 인증서 요청 경로
certificateRequestHeader: {
'X-NCP-REGION_CODE': 'KR',
'X-ncp-apigw-timestamp': 1698832564997,
'X-ncp-iam-access-key': 'ft1GKEpjSc53lHuqtAxE',
'x-ncp-apigw-signature-v2': 'Z0LjTbqFjWtxlRskM8vDj5Uha1FGhE4fzdds2ZO8FrQ=',
'X-DRM-TOKEN': 'eyJyZXNwb25zZUZvcm1hdCI6Im9yaWdpbmFsIiwic2l0ZUlkIjoiZHJtLTIwMjMxMTAxMDgyMzE2LWRKREdhIiwiY29udGVudElkIjoidGVzdENvbnRlbnRJZCIsImRybVR5cGUiOiJXSURFVklORSJ9'
}, //One Click Multi DRM 상품 활용을 위한 apigw 필수 인증 및 X-DRM-TOKEN 헤더값
licenseUri: 'https://multi-drm.apigw.ntruss.com/api/v1/license', //DRM license 발급을 위한 경로
licenseRequestHeader: {
'X-NCP-REGION_CODE': 'KR',
'X-ncp-apigw-timestamp': 1698832564997,
'X-ncp-iam-access-key': 'ft1GKEpjSc53lHuqtAxE',
'x-ncp-apigw-signature-v2': 'Z0LjTbqFjWtxlRskM8vDj5Uha1FGhE4fzdds2ZO8FrQ=',
'X-DRM-TOKEN': 'eyJyZXNwb25zZUZvcm1hdCI6Im9yaWdpbmFsIiwic2l0ZUlkIjoiZHJtLTIwMjMxMTAxMDgyMzE2LWRKREdhIiwiY29udGVudElkIjoidGVzdENvbnRlbnRJZCIsImRybVR5cGUiOiJXSURFVklORSJ9'
} //One Click Multi DRM 상품 활용을 위한 apigw 필수 인증 및 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
이 문서가 도움이 되었습니까?