--- title: "콘텐츠 인증" slug: "vpe-example-auth" tags: ["Video Player Enhancement", "VPE"] updated: 2026-09-17T09:08:00Z published: 2026-09-17T09:08:00Z canonical: "guide.ncloud-docs.com/vpe-example-auth" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # 콘텐츠 인증 Classic/VPC 환경에서 이용 가능합니다. 콘텐츠 인증에서는 스크립트 코드를 수정하여 재생 소스에 Secure Token을 적용하는 방법과 MultiDRM을 설정하는 방법을 설명합니다. ## Secure Token `token` 속성으로 재생 소스에 Secure Token을 적용하여 OneTimeUrl을 지원할 수 있습니다. 또한, `player.tokenChange` 속성으로 동영상 재생 중 중단 없이 Secure Token을 교체할 수 있습니다. 예제는 다음과 같습니다. ``` // 동영상(MP4) new ncplayer('video1', { autostart: true, playlist: [ { file: 'https://CDN도메인/example_video_01.mp4', }, ], token: 'token=st=1675320871~exp=1675320901~acl=....', // Secure Token }); // 토큰 교체 player.tokenChange('token=st=1675320871~exp=1675320901~acl=....') // 재생 중 신규 토큰으로 교체 ``` ## MultiDRM `playlist.drm` 속성으로 MultiDRM을 설정할 수 있습니다. 예제는 다음과 같습니다. ``` let player; document.addEventListener('DOMContentLoaded', async ()=> { await ncplayerDRM('video1',{ playlist: [ { drm:{ 'com.apple.fps':{ certificateUrl: '{Certificate URL}', licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do', licenseRequestHeader:{ 'Content-type': 'application/x-www-form-urlencoded', 'pallycon-customdata-v2':'{FairPlay용 Token}' }, src : '{hls url}' }, 'com.widevine.alpha':{ licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do', licenseRequestHeader:{ 'pallycon-customdata-v2':'{Widevine용 Token}' }, src : '{dash url}' }, 'com.microsoft.playready':{ licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do', licenseRequestHeader:{ 'pallycon-customdata-v2':'{PlayReady용 Token}' }, src : '{dash url}' }, }, poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png', description: { title: "네이버클라우드", create_at: "2022-12-31", profile_name: "Naver Cloud Platform", profile_image: "https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png }, } ], controlBtn: { play: true, fullscreen: true, volume: true, times: true, pictureInPicture: true, setting: true, subtitle: true }, autostart: false }); }); ``` 참고 - MultiDRM을 사용하려면 HLS, DASH 두 가지를 모두 지원하도록 VOD Station 서비스에서 두 개의 채널로 구성해야 합니다. - MultiDRM은 SSL/TSL이 적용된 https 환경에서만 작동합니다. - MultiDRM은 Widevine, PlayReady, FairPlay(FPS)를 지원합니다. - Video Player Enhancement 서비스는 DoveRunner(구 PallyCon) MultiDRM을 공식 지원합니다. - DRM 기능을 사용하려면 사전에 외부 DRM 공급사와 계약해야 합니다. - DRM 유형 - Widevine: Google에서 제공하는 DRM 기술 규격으로, Common Encryption 규격에 따라 AES-128 방식으로 암호화합니다. - PlayReady: Microsoft에서 제공하는 DRM 기술 규격으로, Common Encryption 규격에 따라 AES-128 방식으로 암호화합니다. - FairPlay: Apple에서 제공하는 DRM 기술 규격으로, 각각의 HLS 세그먼트를 Sample-AES 방식으로 암호화합니다. - 지원 현황 | 브라우저 | Widevine | PlayReady | FairPlay | | --- | --- | --- | --- | | 인터넷 익스플로러(11+ on Windows 8.1+) | X | O (MPEG-DASH) | X | | 마이크로소프트 엣지(Windows 10+) | X | O (MPEG-DASH) | X | | 크롬(35+ on Windows 7.0+, 57+ on Android 4.4+) | O (MPEG-DASH) | X | X | | 파이어폭스(47+ on Windows 7.0+) | O MPEG=DASH | X | X | | 사파리(8+ on Mac OS 10.10+, 11.2+ on iOS 11.2+) | X | X | O (HLS) | - Video Player Enhancement 서비스는 사용 중인 브라우저가 지원하는 DRM에 따라 상황에 맞는 재생 소스(HLS 또는 DASH)를 자동으로 선택합니다. ### One Click Multi DRM Video Player Enhancement 서비스와 One Click Multi DRM 서비스를 연동하여 DRM을 적용할 수 있습니다. FPS Certificate 및 라이선스 발급을 요청하기 위한 Endpoint(엔드포인트) 및 요청 헤더를 확인해 주십시오. - [FPS Certificate 요청(Apple FairPlay 전용)](/docs/vpe-example-auth#FPSCertificate%EC%9A%94%EC%B2%ADAppleFairPlay%EC%A0%84%EC%9A%A9) - [라이선스 발급 요청(FairPlay, Widevine, PlayReady 공용)](/docs/vpe-example-auth#%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4%EB%B0%9C%EA%B8%89%EC%9A%94%EC%B2%ADFairPlayWidevinePlayReady%EA%B3%B5%EC%9A%A9) 참고 - One Click Multi DRM 서비스와의 연동은 Video Player Enhancement 버전 1.1.1 이상부터 가능합니다. - Apple FairPlay의 경우 FPS Certificate와 라이선스의 시그니처(X-NCP-APIGW-SIGNATURE-V2)를 각각 생성해야 합니다. 시그니처 생성에 관한 자세한 내용은 [시그니처 생성 가이드](https://api.ncloud-docs.com/docs/common-ncpapi#%EC%8B%9C%EA%B7%B8%EB%8B%88%EC%B2%98%EC%83%9D%EC%84%B1)를 참고해 주십시오. #### FPS Certificate 요청(Apple FairPlay 전용) FPS Certificate를 요청하기 위한 엔드포인트 및 요청 헤더는 다음과 같습니다. - Endpoint ``` GET https://multi-drm.apigw.ntruss.com/api/v1/license/fairplay ``` - 요청 헤더 | 항목 | 필수 여부 | 설명 | | --- | --- | --- | | X-NCP-REGION_CODE | O | 이용 중인 서비스 리전 코드 - 한국: KR - 싱가포르: SGN - 미국: USWN - 일본: JPN - 독일: DEN | | X-NCP-IAM-ACCESS-KEY | O | 포털 또는 Sub Account에서 발급받은 Access Key ID | | X-NCP-APIGW-TIMESTAMP | O | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며, API Gateway 서버와 시간 차가 5분 이상 나는 경우에는 유효하지 않은 요청으로 간주 | | X-NCP-APIGW-SIGNATURE-V2 | O | Access Key ID 값과 Secret Key로 암호화한 서명으로, HMAC 암호화 알고리즘은 HmacSHA256 사용 | #### 라이선스 발급 요청(FairPlay, Widevine, PlayReady 공용) 라이선스 발급을 요청하기 위한 엔드포인트 및 요청 헤더는 다음과 같습니다. - Endpoint ``` POST https://multi-drm.apigw.ntruss.com/api/v1/license ``` - 요청 헤더 | 항목 | 필수 여부 | 설명 | | --- | --- | --- | | X-DRM-TOKEN | O | One Click Multi DRM 라이선스 발급에 필수 데이터가 포함된 암호화된 토큰값 | | X-NCP-REGION_CODE | O | 이용 중인 서비스 리전 코드 - 한국: KR - 싱가포르: SGN - 미국: USWN - 일본: JPN - 독일: DEN | | X-NCP-IAM-ACCESS-KEY | O | 포털 또는 Sub Account에서 발급받은 Access Key ID | | X-NCP-APIGW-TIMESTAMP | O | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며, API Gateway 서버와 시간 차가 5분 이상 나는 경우에는 유효하지 않은 요청으로 간주 | | X-NCP-APIGW-SIGNATURE-V2 | O | Access Key ID 값과 Secret Key로 암호화한 서명으로, HMAC 암호화 알고리즘은 HmacSHA256 사용 | #### 예제 One Click Multi DRM 적용을 위한 Apple FairPlay 및 Widevine/PlayReady 예제는 다음과 같습니다. - Apple FairPlay ``` document.addEventListener('DOMContentLoaded', async ()=> { await ncplayerDRM('myElement',{ playlist: [ { drm:{ 'com.apple.fps':{ certificateUri: '{FPS Certificate Endpoint}', certificateRequestHeader:{ 'X-NCP-REGION_CODE': 'KR', 'X-NCP-IAM-ACCESS-KEY': accessKey, 'X-NCP-APIGW-TIMESTAMP': timestamp, 'X-NCP-APIGW-SIGNATURE-V2': signature, }, licenseUri : '{License Endpoint}', licenseRequestHeader:{ 'X-DRM-TOKEN': '{One Click Multi DRM FPS TOKEN}', 'X-NCP-REGION_CODE': 'KR', 'X-NCP-IAM-ACCESS-KEY': accessKey, 'X-NCP-APIGW-TIMESTAMP': timestamp2, 'X-NCP-APIGW-SIGNATURE-V2': signature2, }, src : 'http://example.com/index.m3u8' } }, poster: 'http://example.com/myVideoThumb.png', } ], autostart: true }); }); ``` - Widevine/PlayReady ``` document.addEventListener('DOMContentLoaded', async ()=> { await ncplayerDRM('myElement',{ playlist: [ { drm:{ 'com.widevine.alpha':{ licenseUri : '{License Endpoint}', licenseRequestHeader:{ 'X-DRM-TOKEN': '{One Click Multi DRM WIDEVINE TOKEN}', 'X-NCP-REGION_CODE': 'KR', 'X-NCP-IAM-ACCESS-KEY': accessKey, 'X-NCP-APIGW-TIMESTAMP': timestamp2, 'X-NCP-APIGW-SIGNATURE-V2': signature2, }, src : 'http://example.com/index.mpd' }, 'com.microsoft.playready':{ licenseUri : '{License Endpoint}', licenseRequestHeader:{ 'X-DRM-TOKEN': '{One Click Multi DRM PLAYREADY TOKEN}', 'X-NCP-REGION_CODE': 'KR', 'X-NCP-IAM-ACCESS-KEY': accessKey, 'X-NCP-APIGW-TIMESTAMP': timestamp2, 'X-NCP-APIGW-SIGNATURE-V2': signature2, }, src : 'http://example.com/index.mpd' }, poster: 'http://example.com/myVideoThumb.png', } } ], autostart: true }); }); ``` ## DRM 테스트 스크립트 코드를 작성하여 DRM 테스트를 진행할 수 있습니다. 참고 DRM 테스트를 진행하려면 기본 플레이어 실행 스크립트(`ncplayer()`)가 아닌 별도의 실행 스크립트(`ncplayerDRM()`)를 이용해야 합니다. ``` // DRM 전용 스크립트 코드를 이용합니다. // DOM이 완전히 로드되고 실행해야 DRM이 에러 없이 실행됩니다. document.addEventListener('DOMContentLoaded', async ()=> { await ncplayerDRM('video1',{}); }) ``` #### Widevine/PlayReady Widevine 또는 PlayReady 유형의 DRM을 테스트하는 스크립트는 다음과 같습니다. 참고 - Widevine 또는 PlayReady DRM 테스트를 위해 다음 정보가 필요합니다. - DASH 재생 소스의 URL - DRM 토큰 값 - Widevine은 Chrome 브라우저, PlayReady는 Windows OS Edge 브라우저에서 테스트할 수 있습니다. ``` document.addEventListener('DOMContentLoaded', async ()=> { await ncplayerDRM('video1',{ playlist: [ { drm:{ 'com.widevine.alpha':{ licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do', licenseRequestHeader:{ 'pallycon-customdata-v2':'{Token}' }, src : '{dash url}' }, 'com.microsoft.playready':{ licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do', licenseRequestHeader:{ 'pallycon-customdata-v2':'{Token}' }, src : '{dash url}' }, }, poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png', } ], }); }); ``` #### FairPlay(FPS) FairPlay 유형의 DRM을 테스트하는 스크립트는 다음과 같습니다. 참고 - FairPlay DRM 테스트를 위해 다음 정보가 필요합니다. - HLS 재생 소스의 URL - Certificate URL(인증 URL) - DRM 토큰 값 - Mac OS Safari 브라우저에서 테스트할 수 있습니다. ``` document.addEventListener('DOMContentLoaded', async ()=> { await ncplayerDRM('video1',{ playlist: [ { drm:{ 'com.apple.fps':{ certificateUrl: '{Certificate URL}', licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do', licenseRequestHeader:{ 'Content-type': 'application/x-www-form-urlencoded', 'pallycon-customdata-v2':'{Token}' }, src : '{hls url}' }, }, poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png', } ], }); }); ```