Token Authentication

최신 업데이트:2025-09-05 17:34:19

이 가이드는 토큰 인증(타임스탬프 핫링크 방지라고도 함)의 구성 및 사용 방법을 설명합니다. 이 보안 기능은 라이브 스트리밍 콘텐츠를 무단 액세스와 핫링킹으로부터 보호하기 위해 설계되었습니다.

스트리밍 URL에 암호화된 토큰과 타임스탬프를 추가하여, 누가 얼마 동안 스트림에 접근할 수 있는지 제어할 수 있습니다. 이를 통해 유효한 시간 제한이 있는 URL을 가진 사용자만 콘텐츠를 시청할 수 있으므로, 스트림을 안전하게 보호하고 무단 배포를 방지할 수 있습니다.

동작 원리

인증 프로세스는 세 가지 주요 구성 요소로 이루어져 있습니다:

  1. 시크릿 키: 콘솔에서 구성하는 프라이빗 키입니다. 이 키는 고객님과 저희 서버만 알고 있습니다.
  2. 타임스탬프: URL의 만료 시간 또는 생성 시간을 나타내는 타임스탬프입니다.
  3. Token(서명): 비밀키, URL 경로, 타임스탬프를 사용하여 귀하의 서버에서 생성한 암호화된 서명(해시)입니다.

시청자가 인증된 URL을 사용하여 스트림에 접근하려고 할 때, 당사의 엣지 서버는 다음과 같은 작업을 수행합니다:

  1. 요청을 수신하고 URL에서 토큰, 타임스탬프 및 기타 파라미터를 추출합니다.
  2. 동일한 비밀키와 로직을 이용하여 서버에서 토큰을 다시 생성합니다.
  3. URL의 토큰과 서버에서 생성한 토큰을 비교합니다.
  4. 타임스탬프를 기준으로 URL의 만료 여부를 확인합니다.

토큰이 일치하고 URL의 유효기간이 만료되지 않은 경우, 시청자는 스트림 접근 권한을 부여받습니다. 그렇지 않으면 요청이 거부됩니다.

콘솔 구성

토큰 인증을 활성화하고 구성하려면 다음 단계를 따르십시오:

  1. Low Latency Streaming으로 이동합니다.
  2. 구성하려는 Domain을 선택합니다.
  3. Edit Configuration을 클릭합니다.
  4. Timestamp anti-hotlinking (Live) 섹션으로 이동합니다.

아래는 구성 패널의 각 필드에 대한 자세한 설명입니다:

필드 설명 예시/기본값
애플리케이션 이름 이 규칙이 적용될 애플리케이션을 지정합니다. 비워두면 모두 적용됩니다.
참고: 이 애플리케이션 이름은 현재 Domain에 구성한 이름과 일치해야 합니다.
live,vod
암호문 파라미터 이름 암호화된 토큰의 URL 파라미터 이름입니다. 기본값: wsSecret
시간 파라미터 이름 타임스탬프의 URL 파라미터 이름입니다. 기본값: wsTime
KEY 토큰의 암호화 서명을 생성하는 데 사용되는 개인 비밀 키입니다. mysecretkey
암호화 시간 포맷 타임스탬프의 포맷입니다. UNIX 타임스탬프 또는 16진수
유효 기간 URL이 만료되는 방식입니다. 기간별, 절대 시간별, 유효 시간별, 또는 시간 확인 안 함.
유효 시간 링크가 유효한 시간(초)입니다. (“기간별 유효” 방식에 필수) 3600 (1시간)
오류 허용 시간 서버와 에지 서버 간의 작은 시간 차이로 인해 유효한 URL이 실패하는 것을 방지하기 위해 허용하는 시간(초)입니다. 시계 오차를 보정합니다. 300 (5분)
암호문 조합 방식 토큰 생성을 위해 사용하는 공식입니다. KEY+Path+Time 이 일반적으로 사용됩니다.

인증된 URL 생성하기

콘솔에서 기능을 구성한 후에는, 사용자를 위한 동적으로 인증된 URL을 생성하도록 애플리케이션 또는 백엔드 서버를 업데이트해야 합니다.

핵심 로직은 선택한 암호문 조합 방식에 따라 문자열을 만든 후, 해당 문자열의 MD5 해시 값을 계산하는 것입니다. 참고: 해시화할 문자열에 포함되는 구성 요소는 선택한 유효 기간 방식에 따라 달라질 수 있습니다.

예시: “지속 시간별” 사용

구성이 다음과 같다고 가정해보겠습니다:

  • KEY: mysecretkey
  • 암호문 조합 방식: KEY+Path+Time
  • 암호문 파라미터 이름: wsSecret
  • 시간 파라미터 이름: wsTime
  • 암호화 시간 형식: UNIX timestamp
  • 지속 시간: 3600초 (1시간)
  • 원본 스트림 URL: http://your.domain.com/live/stream1.flv

서버에서 서명된 URL을 생성하는 방법은 다음과 같습니다:

  1. URL 경로 얻기: 경로는 퍼블리싱 지점부터 시작하는 URL 부분입니다. 이 예에서는 /live/stream1.flv입니다.
  2. 현재 시간 가져오기: 현재 시간을 UNIX 타임스탬프로 가져옵니다. 예: 1678886400.
  3. 문자열 결합: 선택한 방식에 따라 Key, Path, Time을 결합합니다.
    중요: 경로 요소는 반드시 퍼블리싱 지점 이후의 URI와, 선행 슬래시를 포함하여, 정확히 일치해야 합니다.
    string_to_hash = "mysecretkey/live/stream1.flv1678886400"
  4. MD5 해시 계산: string_to_hash의 MD5 해시를 계산합니다.
    wsSecret_value = md5("mysecretkey/live/stream1.flv1678886400")
    결과가 b1b5c2c7e8e5e8e5c2c7b1b5c2c7e8e5라고 가정해봅시다.
  5. 최종 URL 구성: 원본 URL에 Token과 Timestamp를 쿼리 파라미터로 추가하십시오.
    http://your.domain.com/live/stream1.flv?wsSecret=b1b5c2c7e8e5e8e5c2c7b1b5c2c7e8e5&wsTime=1678886400

이 URL을 사용하는 시청자는 1678886400 + 3600 = 1678890000까지 스트림에 접근할 수 있습니다.

예시: “By Valid Time” 사용하기

이 방법은 생성하는 각 URL에 대해 유효 기간을 동적으로 정의하고 싶을 때 유용합니다. 설정이 이전 예제와 같지만, By Valid Time을 선택한 상황을 가정해보겠습니다.

  • KEY: mysecretkey
  • 암호문 조합 방법: KEY+Path+Time (참고: 이 모드에서 해시 계산 시 타임스탬프 뒤에 wsKeepTime 값이 추가됩니다.)
  • 암호문 파라미터명: wsSecret
  • 시간 파라미터명: wsTime
  • 암호화 시간 형식: UNIX 타임스탬프
  • 요청 유효 기간: 7200초 (2시간)
  • 원본 스트림 URL: https://your.domain.com/live/stream1.sdp

다음은 서버에서 서명된 URL을 생성하는 방법입니다:

  1. URL 경로를 가져옵니다: /live/stream1.sdp.
  2. 현재 시간을 가져옵니다: 1678886400.
  3. 유효 기간을 정의합니다: 7200.
  4. 문자열을 연결합니다: Key, Path, 현재 시간, 그리고 유효 기간(wsKeepTime 값)을 결합합니다.
    string_to_hash = "mysecretkey/live/stream1.sdp16788864007200"
  5. MD5 해시를 계산합니다: 이 새로운 문자열의 MD5 해시 값을 계산합니다.
    wsSecret_value = md5("mysecretkey/live/stream1.sdp16788864007200")
    결과는 20722b11be862a6563657a70a8a8167입니다.
  6. 최종 URL을 구성합니다: wsSecret, wsTime, wsKeepTime을 쿼리 파라미터로 추가합니다.
    https://your.domain.com/live/stream1.sdp?wsSecret=20722b11be862a26563657a70a8a8167&wsTime=1678886400&wsKeepTime=7200

이 방법은 URL을 생성하는 서버가 만료 시간을 실시간으로 설정할 수 있어 더 유연하게 활용할 수 있습니다.

이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.