이 가이드에서는 토큰 생성 방법과 토큰의 필수 및 선택적 필드에 대해 설명합니다.
토큰을 만들려면 이 가이드에서 서명 값이라고 부르는 서명할 문자열을 구성합니다. 서명 값에는 보호 대상 콘텐츠, 서명 값의 만료 시간 등을 기술하는 매개변수가 포함됩니다.
토큰 문자열을 만드는 동안 서명 값을 사용합니다. 서명 값의 대칭 키 해시 기반 메시지 인증 코드(HMAC)와 같이 토큰의 매개변수를 구성하여 토큰 문자열을 만듭니다.
Media CDN은 콘텐츠 보호를 돕기 위해 최종 구성 토큰을 사용합니다.
토큰 만들기
필수 토큰 필드와 원하는 선택적 토큰 필드가 포함된 문자열을 연결하여 서명 값을 만듭니다. 틸드
~
문자를 사용해서 각 필드와 매개변수를 분리합니다.Ed25519 서명 또는 대칭 키 HMAC를 사용해서 서명된 키를 서명합니다.
필수 토큰 필드와 선택적 토큰 필드가 포함된 문자열을 연결하여 토큰을 구성합니다. 틸드
~
문자를 사용해서 각 필드와 매개변수를 분리합니다.토큰을 구성할 때 각 매개변수의 값은 서명 값과 토큰 문자열 사이에 동일하지만, 다음과 같은 예외가 있습니다.
FullPath
Headers
다음 코드 샘플은 토큰을 프로그래매틱 방법으로 만드는 방법을 보여줍니다.
Python
Media CDN에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Media CDN에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 섹션에서는 토큰에 사용되는 필드에 대해 설명합니다.
필수 토큰 필드
다음 필드는 모든 토큰에 필요합니다.
Expires
- 다음 중 하나:
PathGlobs
URLPrefix
FullPath
- 다음 중 하나:
Signature
hmac
달리 지정되지 않은 한 매개변수 이름과 값은 대소문자를 구분합니다.
다음 표에서는 각 매개변수에 대해 설명합니다.
필드 이름/별칭 | 토큰 매개변수 | 서명 값 |
---|---|---|
|
유닉스 시간(1970-01-01T00:00:00Z)을 기준으로 경과한 정수 초입니다. | Expires=EXPIRATION_TIME , 이후에는 토큰이 더 이상 유효하지 않습니다. |
|
액세스 권한을 부여할 최대 5개의 경로 세그먼트 목록입니다. 세그먼트는 쉼표(
세미콜론( 따라서 URL에 다음 특수 문자가 포함되지 않도록 해야 합니다. |
PathGlobs=PATHS |
URLPrefix |
원하는 지점까지 예를 들어 `https://example.com/foo/bar.ts`에서 유효한 URLPrefix 값은 `https://example.com`, `https://example.com/foo`, `https://example.com/foo/bar`입니다. |
URLPrefix=BASE_64_URL_PREFIX |
FullPath |
없음 토큰에 FullPath 를 지정할 때는 서명 값에 지정한 경로를 복제하지 마세요. 토큰에서 = 없이 토큰 이름을 포함합니다. |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
서명의 웹 보안 base64 인코딩 버전입니다. | 해당 사항 없음 |
hmac |
HMAC 값의 웹 보안 base64 인코딩 버전입니다. | 해당 사항 없음 |
PathGlobs
와일드 카드 문법
다음 표에서는 PathGlobs
와일드 카드 문법을 설명합니다.
연산자 | 일치 | 예시 |
---|---|---|
* (별표) |
정방향 슬래시(/ ) 문자를 포함하여 URL 경로에서 0개 이상의 문자와 일치합니다.
|
|
? (물음표) |
URL 경로의 단일 문자와 일치하며, 정방향 슬래시(/ ) 문자를 포함하지 않습니다.
|
/videos/s?main.m3u8 은 /videos/s1main.m3u8 과 일치합니다. /videos/s01main.m3u8 또는 /videos/s/main.m3u8 과는 일치하지 않습니다.
|
Globs는 URL 경로의 별표(*
) 또는 정방향 슬래시(/
)로 시작해야 합니다.
*
및 /*
는 모든 URL 경로와 일치하기 때문에 서명된 토큰에서 사용하지 않는 것이 좋습니다. 최대한의 보호를 위해서는 globs가 액세스를 부여하려는 콘텐츠와 일치하는지 확인합니다.
선택적 토큰 필드
달리 지정되지 않은 한 매개변수 이름과 값은 대소문자를 구분합니다.
다음 표에서는 매개변수 이름, 별칭, 선택적 매개변수의 세부정보에 대해 설명합니다.
필드 이름/별칭 | 매개변수 | 서명 값 |
---|---|---|
|
유닉스 시간(1970-01-01T00:00:00Z) 이후의 정수 초입니다. | Starts=START_TIME |
IPRanges |
이 URL이 웹 안전 base64 형식으로 유효한 CIDR 형식에서 최대 5개의 IPv4 및 IPv6 주소 목록입니다. 예를 들어 IP 범위를 "192.6.13.13/32,193.5.64.135/32"로 지정하려면 클라이언트에 WAN 마이그레이션 위험이 있거나 애플리케이션 프런트엔드에 대한 네트워크 경로가 전송 경로와 다른 경우에는 IPRanges를 토큰에 포함하는 것이 유용하지 않을 수 있습니다.
Media CDN은 서명된 요청에 속하지 않는 IP 주소로 연결될 때 다음은 Media CDN이
이러한 모든 요소는 지정된 클라이언트가 동영상 재생 세션 중 비결정적 IP 주소를 갖도록 하는 데 기여할 수 있습니다. 접근이 허용된 후 클라이언트 IP 주소가 변경되고 클라이언트가 동영상 세그먼트를 재생 버퍼에 다운로드하려고 시도하면 Media CDN에서 |
IPRanges=BASE_64_IP_RANGES |
|
로그 분석 또는 재생 추적에 유용한 임의 문자열입니다. 부적합한 토큰을 만들지 않도록 %-encoded 또는 웹 안전 base64 인코딩 문자열을 사용합니다. 다음 문자는 토큰을 무효화하기 때문에 |
SessionID=SESSION_ID_VALUE |
|
로그 분석에 유용한 임의 문자열입니다. 부적합한 토큰을 만들지 않도록 %-encoded 또는 웹 안전 base64 인코딩 문자열을 사용합니다. 다음 문자는 토큰을 무효화하기 때문에 |
data=DATA_VALUE |
Headers |
쉼표로 구분된 헤더 필드 이름 목록입니다. 헤더 이름은 요청에서 조회할 때 대소문자를 구분하지 않습니다. 서명 값의 헤더 이름은 대소문자를 구분합니다. 헤더가 누락된 경우에는 값이 빈 문자열입니다. 헤더 사본이 여러 개 있으면 쉼표로 연결됩니다. | Headers=HEADER_1_NAME=HEADER_1_EXPECTED_VALUE,
HEADER_2_NAME=HEADER_2_EXPECTED_VALUE |
예시
다음 섹션에서는 토큰 생성 예시를 보여줍니다.
FullPath
사용 예시
FullPath
필드를 사용하는 다음 예시를 고려하세요.
- 요청한 항목:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- 만료 시간: 160000000
서명 값은 다음과 같습니다.
Expires=160000000~FullPath=/tv/my-show/s01/e01/playlist.m3u8
토큰을 만들려면 Ed25519 서명 또는 대칭 키 HMAC를 사용하여 서명 값을 서명합니다.
다음은 서명 값에서 생성된 토큰 예시입니다.
Ed25519 서명
Expires=160000000~FullPath~Signature=SIGNATURE_OF_SIGNED_VALUE
여기서 SIGNATURE_OF_SIGNED_VALUE는 이전에 생성된 서명 값의 ED25519 서명입니다.
대칭 키 HMAC
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
여기서 HMAC_OF_SIGNED_VALUE는 이전에 생성된 서명 값의 대칭 키 HMAC입니다.
앞의 예시에서 FullPath
는 토큰에 제공되지만 서명 값에 지정된 경로에서 값이 반복되지 않습니다. 이렇게 하면 토큰에서 요청을 복제하지 않고 요청의 전체 경로를 서명할 수 있습니다.
URLPrefix
사용 예시
URLPrefix
필드를 사용하는 다음 예시를 고려하세요.
- 요청한 항목:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- 만료 시간: 160000000
서명 값은 다음과 같습니다.
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
이전 예시에서는 요청된 항목에 대한 경로 http://example.com/tv/my-show/s01/e01/playlist.m3u8
을 웹 안전 Base64 형식의 항목 경로 aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
로 바꿨습니다.
토큰을 만들려면 Ed25519 서명 또는 대칭 키 HMAC를 사용하여 서명 값을 서명합니다.
다음은 서명 값에서 생성된 토큰 예시입니다.
Ed25519 서명
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~Signature=SIGNATURE_OF_SIGNED_VALUE
여기서 SIGNATURE_OF_SIGNED_VALUE는 이전에 생성된 서명 값의 ED25519 서명입니다.
대칭 키 HMAC
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
여기서 HMAC_OF_SIGNED_VALUE는 이전에 생성된 서명 값의 대칭 키 HMAC입니다.
Headers
사용 예시
Headers
필드를 사용하는 다음 예시를 고려하세요.
- 요청한 항목:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- 만료 시간: 160000000
- PathGlobs 값:
*
- 예상 요청 헤더:
user-agent: browser
accept: text/html
서명 값은 다음과 같습니다.
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
토큰을 만들려면 Ed25519 서명 또는 대칭 키 HMAC를 사용하여 서명 값을 서명합니다.
다음은 서명 값에서 생성된 토큰 예시입니다.
Ed25519 서명
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~Signature=SIGNATURE_OF_SIGNED_VALUE
여기서 SIGNATURE_OF_SIGNED_VALUE는 이전에 생성된 서명 값의 ED25519 서명입니다.
대칭 키 HMAC
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
여기서 HMAC_OF_SIGNED_VALUE는 이전에 생성된 서명 값의 대칭 키 HMAC입니다.
앞의 예시에서 Headers=user-agent,accept
는 토큰에 제공되지만 예상 헤더 값이 서명 값에서 반복되지 않습니다. 이렇게 하면 토큰에서 값을 복제하지 않고 특정 요청 헤더 키-값 쌍을 서명할 수 있습니다.