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.gov-ntruss.com/api/v1/license | FairPlay Streaming 라이선스 발급 요청 |
GET | GET https://multi-drm.apigw.gov-ntruss.com/api/v1/license/fairPlay | FairPlay Streaming 라이선스 발급을 위한 JSON 타입 인증서 요청 |
GET | GET https://multi-drm.apigw.gov-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.gov-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.gov-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
}
이 문서가 도움이 되었습니까?