최신 업데이트:2024-01-02 10:46:35
당사 CDN에서 검색한 DRM으로 암호화된 스트림을 재생하려면 먼저 라이선스를 취득해야 합니다. 라이선스에는 콘텐츠의 암호를 해독하는 데 필요한 암호화 키와 콘텐츠 사용 방법을 지정하는 권한 및 기타 속성이 포함되어 있습니다. 예를 들어 라이선스에는 만료일 또는 스트림을 재생할 수 있는 횟수에 대한 정보가 포함될 수 있습니다. 이러한 속성은 모두 보호된 스트림 콘텐츠와 별도로 라이선스에서 설정할 수 있습니다.
Media Acceleration Live Broadcast DRM을 사용하려면 특정 지침에 따라 라이선스 획득 URL을 생성해야 합니다. 이 URL은 재생할 스트림의 암호를 해독할 수 있는 라이선스를 얻는 데 사용됩니다. 이 문서에서는 라이선스 획득 URL을 생성하는 방법에 대한 지침을 제공합니다.
다음은 라이선스 취득 URL을 생성할 때 따라야 할 단계입니다:
접근 토큰으로 Irdeto에 접근하여 서명 키를 등록할 수 있습니다. 이 키를 통해 다음과 같이 라이선스 취득 URL 토큰을 생성할 수 있습니다.
다음 curl 스크립트를 실행하여 액세스 토큰을 검색합니다:
curl -X POST \
'http://ca.haplat.net/wslive/drm/getToken.action?sign=query_token&time=current_timestamp&n=accountId' \
-H 'Authorization: Bearer {access_token}' \
-H 'Host: ca.haplat.net'
이 요청에 필요한 요청 헤더 및 매개 변수를 제공하는지 확인하십시오.
파라미터/헤더 | 필수 여부 | 설명 |
---|---|---|
Host | 예 | 고정 값: ca.haplat.net |
n | 예 | 계정 이름입니다. |
r | 예 | 최대 길이가 13인 고유한 임의 문자열, 타임스탬프 사용을 권장합니다. |
k | 예 | MD5 인증 값입니다. k = md5 (r + apikey) 즉, ‘k’ 값을 가져오려면 문자열 ‘r’ 끝에 문자열 apikey를 추가한 후 결과 문자열에 대해 MD5 계산을 수행합니다. 참고: apikey는 고객 서비스에서 검색할 수 있습니다. 예를 들어, 1. 요청(Request) 및 apikey=012f37a3f2952 2. 문자열 r=1409284800 3을 무작위로 생성합니다. apikey를 ‘r’ 끝에 추가하여 문자열 '1409284800012f37a3f2952’ 4를 생성합니다. 새 문자열의 MD5 해시를 계산하여 ‘k’ 값을 가져옵니다, 즉 ‘b9fed80be752551834eec3e52fa94115’ |
이 API를 사용하려면 먼저 고객 서비스에 문의하여 활성화하고 액세스 토큰을 제공해야 합니다.
요청을 제출하면 API가 필요한 상세 정보로 응답합니다. 응답 본문은 다음 단계를 진행하는 데 필요한 액세스 토큰을 포함하는 ’ accessToken ’ 필드를 포함하여 다양한 필드를 포함할 수 있습니다.
{
"msg": {
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlJEUkROVEl3TTBSRU1USXlPVVZCTURKRU56RkNNamRFUVVRM1JFUXlSRFE1T1VRMU1ESXlNUSJ9.eyJodHRwOi8vaXJkZXRvLmNvbS9yb2xlcyI6W3sic2VydmljZSI6IlJpZ2h0c05HIiwiYWNjb",
"expiresIn": 36000,
"tokenType": "Bearer"
},
"code": 200,
"callTime": "2023-04-20 15:42:53"
}
이 토큰은 라이선스 취득 URL을 생성할 수 있는 접근 권한을 부여하므로 안전하게 저장하십시오.
일반적인 라이선스 취득 URL은 다음과 같은 형식을 가질 수 있습니다:
https://wangsuusa.live.ott.irdeto.com/licenseServer/widevine/v1/wangsuusa/license?ls_session=eyJhbGciOiJIUzI1NiIs****&contentId=eae3246f8bb4dba67b6328e2b9656a5b
URL은 “ls_session” 파라미터를 포함하고 있습니다. 세션 토큰은 “세션 서명 키”가 필요한 서명된 JWT 형식으로 생성됩니다. 따라서 세션 토큰을 생성하려면 먼저 세션 서명 키를 생성하여 Irdeto Control에 등록해야 합니다.
다음은 세션 서명 키를 생성하여 Irdeto Control에 등록하는 요청(Request)의 예입니다:
curl -X PUT \
'https://wangsuusa.live.ott.irdeto.com/ls/v1.1/wangsuusa/sessionSigningKeys/{sessionSigningKeyId}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"id": "testkey0412",
"displayName": "Example Session Signing Key",
"keyType": "sha256",
"keyData": "W1HCQPNg7PXlo4WZsGM5h5oZ3M2CaAkUMZ6AEzdLeaY=",
"validityStart": "2023-03-01T00:00:00.000Z",
"validityEnd": "2024-03-01T00:00:00.000Z"
}'
특정 요청을 하려면 일반적으로 다음과 같은 필드 및 파라미터를 포함해야 합니다: 아래 필드 및 파라미터를 입력합니다:
이름 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
sessionSigningKeyId | 문자열(경로) | 예 | 세션 서명 키의 ID로, 문자열 길이가 255자를 초과하지 않습니다.중요: ID 충돌이나 실패를 방지하려면 CDNetworks 계정 을 sessionSigningKeyId로 사용하는 것을 권장합니다. |
Authorization | 베어러 인증(헤더) | 예 | 1단계에서 얻은 액세스 토큰. |
content-Type | 문자열(헤더) | 예 | application/json |
또한 요청 본문에 관련 필드를 포함해야 합니다:
이름 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id | string (255) | 예 | 세션 서명 키의 유일한 식별자. id는 요청 경로의 sessionSigningKeyId와 일치해야 합니다 . |
displayName | string (255) | 아니오 | 키의 표시 이름입니다. 지정하지 않으면 키는 “default”로 표시됩니다. |
keyType | string | 예 | 아래의 키 유형을 지원합니다:- sha256 : HS256 algorithm- rsa2048 : RSA-2048 public key- rsa4096 : RSA-4096 public key |
keyData | string | 예 | 키 데이터.- keyType sha256 : HS256 알고리즘을 사용하여 세션 토큰에 서명하기 위해 base64로 인코딩된 32바이트 키.- keyType rsa2048 및 rsa4096 : 세션 토큰에 서명하는 키 RS256 또는 RS512 알고리즘으로. |
validationStart | datetime(ISO8601) | 예 | 키가 유효하게 되는 시기를 나타내는 타임스탬프입니다. 예를 들어: 2023-01-01T00:00:00Z |
validationEnd | datetime(ISO8601) | 예 | 키가 더 이상 유효하지 않은 시기를 나타내는 타임스탬프입니다.예: 2023-12-31T23:59:59Z |
요청이 성공적으로 전송되면 세션 토큰에 서명하고 검증하기 위해 세션 서명 키가 허용되고 Irdeo Control에 등록됩니다.
2단계에서 언급한 것처럼 ID를 인증하려면 라이선스 획득 URL에 “ 세션 토큰 ”을 포함해야 합니다. 성공적으로 인증된 클라이언트에게 라이선스 획득 접근이 허용되지만 일치하지 않는 세션 토큰은 라이선스 접근을 차단합니다.
Irdeto Control에서, 세션 토큰은 서명된 JWT로 허용됩니다 (RFC 7519), 이는 헤더 , 페이로드 및 서명 세 부분으로 구성됩니다.
base64UrlEncode( HMACSHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload), your signing key) )
“인타이틀먼트 정책” 정보
권한 부여 정책은 콘텐츠에 대한 접근이 부여되는 이용약관을 지정합니다, 예:
– 자격이 유효한 시기와 장소
– 소비자의 클라이언트 장치/플레이어 애플리케이션이 충족해야 하는 보안 요구사항
– 소비자에게 허용되는 동시 스트림 수
하나의 자격이 하나의 자격 정책만 가질 수 있지만 동일한 자격 정책을 여러 자격에 적용할 수 있습니다.
다음은 세션 토큰 값의 예입니다:
Header
{
"alg": "HS256",
"typ": "JWT",
"kid": "testkey0412"
}
Payload
{
"jti": "VbY_HmmLmyut8geag52f11KiCnZ8ZzFcYtiB3H3jIbw=",
"sub": "_authenticated",
"aid": "wangsuusa",
"ent": [
{
"epid": "anonymous-entitlement-policy",
"bid": "linxf"
}
],
"iat": 1681296770,
"exp": 1682851970,
"iss": "IrdetoControlHandsOn"
}
JWT 토큰을 쉽게 생성할 수 있도록 다양한 온라인 JWT 생성기가 있습니다. 아래 캡처는 https://jwt.io/ 에서 접근할 수 있는 온라인 도구를 사용하여 세션 토큰을 생성하는 방법을 보여줍니다
사용하려면 다음을 확인하십시오.:
오른쪽에 헤더와 페이로드를 모두 입력하면 왼쪽 상자에 결과 JWT 토큰이 표시됩니다:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InRlc3RrZXkwNDEyIn0.eyJqdGkiOiJWYllfSG1tTG15dXQ4Z2VhZzUyZjExS2lDblo4WnpGY1l0aUIzSDNqSWJ3PSIsInN1YiI6Il9hdXRoZW50aWNhdGVkIiwiYWlkIjoid2FuZ3N1dXNhIiwiZW50IjpbeyJlcGlkIjoiYW5vbnltb3VzLWVudGl0bGVtZW50LXBvbGljeSIsImJpZCI6ImxpbnhmIn1dLCJpYXQiOjE2ODEyOTY3NzAsImV4cCI6MTY4Mjg1MTk3MCwiaXNzIjoiSXJkZXRvQ29udHJvbEhhbmRzT24ifQ.aXg6alLfnl7gm3ye3XBQTPQl5M0Mc4IsID_IIkyYGhg
이전 단계에서 세션 토큰을 생성한 후 마지막 단계는 라이선스 획득 URL을 생성하는 것입니다. 라이선스 취득 URL의 형식은 사용하는 DRM 시스템에 따라 다릅니다. 다음은 PlayReady, FairPlay Streaming 및 Widevine의 표준 URL입니다:
URL
라이선스 취득 URL은 사용하는 DRM 시스템에 따라 다릅니다:
contentId
파라미터 “contentId”는 콘텐츠 ID를 나타내며 도메인, 애플리케이션 이름, 스트림 이름의 MD5 값을 사용하여 계산됩니다. 예를 들어 스트림이 https://drmtest-pull.cdnetworks.com/live/drmtest.mpd 에 있을 경우 해당 콘텐츠 ID는 다음과 같습니다:
MD5(drmtest-pull.cdnetworks.com/live/drmtest)=d8c1d35c93df672a61c735487a145064
ls_session
“ls_session”은 3단계의 세션 토큰입니다.
URL, contentId 및 ls_session이 있으면 이를 연결하여 라이센스 획득 URL을 형성합니다.
예를 들어, 다음은 Widevine의 라이선스 취득 URL입니다:
https://wangsuusa.live.ott.irdeto.com/licenseServer/widevine/v1/wangsuusa/license?contentId=d8c1d35c93df672a61c735487a145064?ls_session=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InRlc3RrZXkwNDEyIn0.eyJqdGkiOiJWYllfSG1tTG15dXQ4Z2VhZzUyZjExS2lDblo4WnpGY1l0aUIzSDNqSWJ3PSIsInN1YiI6Il9hdXRoZW50aWNhdGVkIiwiYWlkIjoid2FuZ3N1dXNhIiwiZW50IjpbeyJlcGlkIjoiYW5vbnltb3VzLWVudGl0bGVtZW50LXBvbGljeSIsImJpZCI6ImxpbnhmIn1dLCJpYXQiOjE2ODEyOTY3NzAsImV4cCI6MTY4Mjg1MTk3MCwiaXNzIjoiSXJkZXRvQ29udHJvbEhhbmRzT24ifQ.aXg6alLfnl7gm3ye3XBQTPQl5M0Mc4IsID_IIkyYGhg
Widevine 및 PlayReady의 재생을 테스트하려면 테스트 플레이어, MPEG-DASH 재생 URL 및 라이선스 획득 URL이 필요합니다. 여기에서는 테스트를 위해 Bitmovin 데모 플레이어를 사용합니다: https://bitmovin.com/demos/stream-test .
재생 프로세스 동안 암호화된 콘텐츠가 플레이어에 로드되면 라이센스 요청이 자동으로 생성됩니다. 플레이어가 필요한 라이선스를 성공적으로 취득한 후에만 재생이 시작됩니다.
Chrome에서 Widevine을 테스트하고 Microsoft Edge에서 PlayReady를 테스트할 것을 적극 권장합니다.