MENU
      One Click Multi DRM 개요
        • PDF

        One Click Multi DRM 개요

        • PDF

        기사 요약

        개요

        One Click Multi DRM은 국내외에서 검증된 INKA Entworks의 PallyCon과 협력하여 높은 성능과 안정성이 보장된 콘텐츠 보안 서비스를 제공합니다.
        표준 DRM인 Widevine, FairPlay, PlayReady를 지원하여 운영 체제나 플랫폼의 장벽 없이 원하는 동영상에 강력한 보안을 적용할 수 있습니다. 네이버 클라우드 플랫폼의 미디어 스트리밍 서비스와 연동하면 복잡한 절차를 거치지 않아도 손쉽게 암호화된 스트리밍 서비스를 구축할 수 있습니다.
        네이버 클라우드 플랫폼의 미디어 스트리밍 서비스인 Live Station, VOD Station(24년 예정) 서비스와 간편한 연동 플로우를 통해 DRM을 적용할 수 있습니다.

        공통 설정

        One Click Multi DRM API URL

        https://multi-drm.apigw.ntruss.com/api/v1
        HTTP

        요청 헤더

        헤더명필수 여부설명
        x-ncp-apigw-timestampYES1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며 API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주
        x-ncp-apigw-timestamp:{Timestamp}
        x-ncp-iam-access-keyYES네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값
        x-ncp-iam-access-key:{Sub Account Access Key}
        x-ncp-apigw-signature-v2YESAccess Key ID 값과 Secret Key로 암호화한 서명
        x-ncp-apigw-signature-v2:{API Gateway Signature}
        Content-TypeYESRequest body content type을 application/json으로 지정
        Content-Type: application/json
        x-ncp-region_codeYES리전 코드 (KR)

        인증 헤더

        One Click Multi DRM API를 사용하기 위해서는 API Gateway 인증이 필요합니다.

        상세한 API Gateway 인증 관련 가이드는 NAVER Cloud Platform API를 참고 부탁드립니다.

        AUTHPARAMS 생성하기

        AUTHPARAMS 요청 예시

        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" \
        'https://multi-drm.apigw.ntruss.com/api/v2/sites'
        Plain text
        • Signature 생성(개행 문자는 \n을 사용)

          • 요청에 맞게 StringToSign을 생성하고 SecretKey로 HmacSHA256 알고리즘으로 암호화한 후 Base64로 인코딩합니다.

          • 이 값을 x-ncp-apigw-signature-v2로 사용합니다.

            요청StringToSign
            GET /api/v2/channels?pageNo=1
            x-ncp-apigw-timestamp={timestamp}
            x-ncp-iam-access-key={accesskey}
            x-ncp-apigw-signature-v2={signature}
            GET /api/v2/channels?pageNo=1
            {timeStamp}
            {accessKey}
        • 샘플 코드

        public String makeSignature() {
            String space = " ";					// 공백
            String newLine = "\n";  				// 줄바꿈
            String method = "GET";  				// HTTP 메서드
            String url = "/api/v2/channels?pageNo=1";	// 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
            String accessKey = "{accessKey}";		// access key id (from portal or Sub Account)
            String secretKey = "{secretKey}";		// secret key (from portal or Sub Account)
            String timestamp = String.valueOf(System.currentTimeMillis());		// 현재 타임스탬프 (epoch, millisecond)
        
            String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(url)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();
        
            SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(signingKey);
        
            byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
            String encodeBase64String = Base64.encodeBase64String(rawHmac);
        
          return encodeBase64String;
        }
        Java
        /*
        https://code.google.com/archive/p/crypto-js/
        https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/crypto-js/CryptoJS%20v3.1.2.zip
        */
        
        /*
        CryptoJS v3.1.2
        code.google.com/p/crypto-js
        (c) 2009-2013 by Jeff Mott. All rights reserved.
        code.google.com/p/crypto-js/wiki/License
        */
        <script type="text/javascript" src="./CryptoJS/rollups/hmac-sha256.js"></script>
        <script type="text/javascript" src="./CryptoJS/components/enc-base64.js"></script>
        
        function makeSignature(secretKey, method, url, timestamp, accessKey) {
        	var space = " ";
        	var newLine = "\n";
        
        	var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey); // secret key
        	hmac.update(method);		// HTTP 메서드
        	hmac.update(space);		// 공백
        	hmac.update(url);		// 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
        	hmac.update(newLine);		// 줄바꿈
        	hmac.update(timestamp);		// 현재 타임스탬프 (epoch, millisecond)
        	hmac.update(newLine);		// 줄바꿈
        	hmac.update(accessKey);		// access key (from portal or iam)
        
        	var hash = hmac.finalize();
        
        	return hash.toString(CryptoJS.enc.Base64);
        }
        JavaScript
        import sys
        import os
        import hashlib
        import hmac
        import base64
        import requests
        import time
        
        def	make_signature():
        	timestamp = int(time.time() * 1000)
        	timestamp = str(timestamp)				# 현재 타임스탬프 (epoch, millisecond)
        
        	access_key = "{accessKey}"				# access key id (from portal or Sub Account)
        	secret_key = "{secretKey}"				# secret key (from portal or Sub Account)
        	secret_key = bytes(secret_key, 'UTF-8')
        
        	method = "GET"						# HTTP 메서드
        	uri = "/api/v2/channels?pageNo=1"			# 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
        
        	message = method + " " + uri + "\n" + timestamp + "\n"
        	+ access_key
        	message = bytes(message, 'UTF-8')
        	signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
        	return signingKey
        Python
        function makeSignature() {
        	nl=$'\\n'
        
        	TIMESTAMP=$(echo $(date +%s000))	# 현재 타임스탬프 (epoch, millisecond)
        	ACCESSKEY="{accessKey}"				# access key id (from portal or Sub Account)
        	SECRETKEY="{secretKey}"				# secret key (from portal or Sub Account)
        	METHOD="GET"					# HTTP 메서드
        	URI="/api/v2/channels?pageNo=1"		# 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
        
        	SIG="$METHOD"' '"$URI"${nl}
        	SIG+="$TIMESTAMP"${nl}
        	SIG+="$ACCESSKEY"
        
        	SIGNATURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $SECRETKEY -binary|openssl enc -base64)
        }
        Bash

        One Click Multi DRM API 요청 구성

        Header
          x-ncp-apigw-timestamp:{Timestamp}
          x-ncp-iam-access-key:{Sub Account Access Key}
          x-ncp-apigw-signature-v2:{API Gateway Signature}
          x-ncp-region_code:KR
          Content-Type:application/json
        Body
          Json Object
        URL
          https://multi-drm.apigw.ntruss.com/api/v1/{action}
        Plain text

        One Click Multi DRM API 요청 샘플

        curl -i -s -X GET \
           -H "Content-Type:application/json" \
           -H "x-ncp-apigw-timestamp:1521787414578" \
           -H "x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy" \
           -H "x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=" \
           -H "x-ncp-region_code:KR" \
           "https:///multi-drm.beta-apigw.ntruss.com/api/v1/sites"
        Plain text

        One Click Multi DRM API Content-Type

        Multi DRM API HTTP Request와 Response Body를 통해 전달되는 모든 데이터의 Content-type은 application/json을 사용합니다.


        이 문서가 도움이 되었습니까?

        Changing your password will log you out immediately. Use the new password to log back in.
        First name must have atleast 2 characters. Numbers and special characters are not allowed.
        Last name must have atleast 1 characters. Numbers and special characters are not allowed.
        Enter a valid email
        Enter a valid password
        Your profile has been successfully updated.