KR20230118627A - 분산형 컴퓨팅 시스템에서 클라이언트 인증 프로세스동안 콘텐츠를 전달하기 위한 시스템들 및 방법들 - Google Patents

분산형 컴퓨팅 시스템에서 클라이언트 인증 프로세스동안 콘텐츠를 전달하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20230118627A
KR20230118627A KR1020237023030A KR20237023030A KR20230118627A KR 20230118627 A KR20230118627 A KR 20230118627A KR 1020237023030 A KR1020237023030 A KR 1020237023030A KR 20237023030 A KR20237023030 A KR 20237023030A KR 20230118627 A KR20230118627 A KR 20230118627A
Authority
KR
South Korea
Prior art keywords
content
client device
authentication token
playback
based authentication
Prior art date
Application number
KR1020237023030A
Other languages
English (en)
Inventor
콜린 휘태커
데이비드 리
하이둥 사오
아드리안 이스레스
존 드라퍼
맥심 코발코브
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20230118627A publication Critical patent/KR20230118627A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1073Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1014Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to tokens
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • G06F21/1083Partial license transfers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/254Management at additional data server, e.g. shopping server, rights management server
    • H04N21/2541Rights Management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25816Management of client data involving client authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)

Abstract

방법은, 콘텐츠 공유 플랫폼에 의해, 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신하는 단계를 포함하고, 콘텐츠에 대한 요청은, 클라이언트 디바이스와 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함한다. 콘텐츠 공유 플랫폼은 추가로 세션 기반 인증 토큰을 유효성 검사하고 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 시작되게 할 수 있다. 유효한 콘텐츠 기반 인증 토큰이 클라이언트 디바이스에 의해 공급된 것에 응답하여, 콘텐츠 공유 플랫폼은 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 계속되게 할 수 있고, 여기서 유효한 콘텐츠 기반 인증 토큰은 요청된 콘텐츠의 식별자에 기초한다.

Description

분산형 컴퓨팅 시스템에서 클라이언트 인증 프로세스 동안 콘텐츠를 전달하기 위한 시스템들 및 방법들
본 개시내용의 양태들 및 실시예들은 콘텐츠 공유 플랫폼들에 관한 것으로, 더 구체적으로는, 클라이언트 인증 프로세스를 수행하는 동안 콘텐츠 전달을 가능하게 하는 것에 관한 것이다.
인터넷을 통해 연결된 콘텐츠 전달 플랫폼들은 사용자들이 서로 연결되게 하고 정보를 서로 공유하게 한다. 많은 콘텐츠 전달 플랫폼들은, 사용자들이 비디오 아이템들, 이미지 아이템들, 오디오 아이템들 등과 같은 콘텐츠를 업로드, 뷰잉, 및 공유하게 하는 콘텐츠 공유 양태를 포함한다. 콘텐츠 전달 플랫폼의 다른 사용자들이 공유된 콘텐츠에 대해 코멘트하고, 새로운 콘텐츠를 발견하고, 업데이트들을 로케이팅하고, 콘텐츠를 공유하며, 그렇지 않으면 제공된 콘텐츠와 상호작용할 수도 있다. 공유된 콘텐츠는 전문 콘텐츠 크리에이터들로부터의 콘텐츠, 예를 들어, 영화 클립들, TV 클립들, 및 뮤직 비디오 아이템들뿐만 아니라, 아마추어 콘텐츠 크리에이터들로부터의 콘텐츠, 예를 들어, 비디오 블로깅 및 짧은 오리지널 비디오 아이템들을 포함할 수도 있다.
본 개시내용의 일 양태는 방법을 제공하는데, 이 방법은: 콘텐츠 공유 플랫폼에 의해, 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신하는 단계 - 콘텐츠에 대한 요청은, 클라이언트 디바이스와 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함함 -; 세션 기반 인증 토큰을 유효성 검사(validating)하는 단계; 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 시작되게 하는 단계; 및 유효한 콘텐츠 기반 인증 토큰이 클라이언트 디바이스에 의해 공급된 것에 응답하여, 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 계속되게 하는 단계를 포함하고, 여기서 유효한 콘텐츠 기반 인증 토큰은 요청된 콘텐츠의 식별자에 기초한다.
본 개시내용의 추가 양태는 시스템을 제공하는데, 이 시스템은: 메모리; 및 메모리에 커플링되는 프로세싱 디바이스를 포함하고, 프로세싱 디바이스는, 본 명세서에서 설명되는 임의의 양태 또는 실시예에 따른 방법을 수행하기 위한 것이다.
본 개시내용의 추가 양태는 방법을 제공하는데, 이 방법은: 클라이언트 디바이스에 의해, 원하는 콘텐츠를 식별하는 사용자 입력을 수신하는 단계; 클라이언트 디바이스에 의해, 원하는 콘텐츠에 기초하는 콘텐츠 기반 인증 토큰의 생성을 개시하는 단계; 클라이언트 디바이스에 의해, 원하는 콘텐츠에 대한 제1 요청을 콘텐츠 공유 플랫폼에 전송하는 단계 - 제1 요청은, 클라이언트 디바이스와 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함함 -; 클라이언트 디바이스에 의해, 콘텐츠 공유 플랫폼으로부터 원하는 콘텐츠의 초기 부분을 수신하는 단계; 클라이언트 디바이스에서, 초기 부분을 사용하여 원하는 콘텐츠의 재생을 개시하는 단계; 콘텐츠 기반 인증 토큰의 생성의 완료 시에, 원하는 콘텐츠의 추가 부분에 대한 제2 요청을 전송하는 단계 - 제2 요청은 콘텐츠 기반 인증 토큰을 포함함 -; 원하는 콘텐츠의 추가 부분을 수신하는 단계; 및 추가 부분을 사용하여 원하는 콘텐츠의 재생을 계속하는 단계를 포함한다.
본 개시내용의 양태들 및 실시예들은 아래에 제공되는 상세한 설명으로부터 그리고 본 개시내용의 다양한 양태들 및 실시예들의 첨부 도면들로부터 더 완전히 이해될 것이지만, 이 첨부 도면들은 본 개시내용을 특정 양태들 또는 실시예들로 제한하는 것으로 취급되어서는 안 되고, 설명과 이해를 위한 것이다.
도 1은 본 개시내용의 일 실시예에 따른, 예시적인 시스템 아키텍처를 예시한다.
도 2는 본 개시내용의 실시예들에 따른, 콘텐츠의 초기 재생을 가능하게 하는 동안 콘텐츠의 나머지 재생을 가능하게 하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하기 위한 동작들의 다이어그램이다.
도 3은 본 개시내용의 실시예들에 따른, 콘텐츠의 재생을 개시하는 동안 재생의 계속을 가능하게 하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하기 위한 동작들의 다이어그램이다.
도 4는 본 개시내용의 실시예들에 따른, 클라이언트 디바이스 상의 콘텐츠의 초기 재생을 인가(authorizing)하는 동안 나머지 재생을 가능하게 하기 위해 사용될 콘텐츠 기반 인증 토큰을 기다리기 위한 방법의 플로 다이어그램(flow diagram)을 도시한다.
도 5는 본 개시내용의 실시예들에 따른, 재생을 요청하는 동안 재생의 종료를 방지하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하기 위한 방법의 플로 다이어그램을 도시한다.
도 6은 본 개시내용의 일 실시예에 따른, 예시적인 컴퓨터 시스템을 예시하는 블록 다이어그램이다.
콘텐츠 공유 플랫폼(본 명세서에서 "콘텐츠 전달 플랫폼"이라고도 또한 지칭됨)이 클라이언트 디바이스들을 통해 사용자들에게 비디오 아이템들, 오디오 아이템들, 또는 게이밍 아이템들과 같은 콘텐츠를 공급할 수도 있다. 사용자가 콘텐츠 공유 플랫폼에 액세스하고 콘텐츠를 업로드 및/또는 소비하기 위해 콘텐츠 공유 플랫폼과 연관된 사용자 계정에 로그인할 수도 있다. 콘텐츠 공유 플랫폼은 콘텐츠를 클라이언트 디바이스들에게 전달하기 위해 콘텐츠 배포 네트워크(content distribution network)(CDN)(본 명세서에서 "콘텐츠 전달 네트워크"라고도 또한 지칭됨)를 사용할 수도 있다. CDN은, 콘텐츠의 전달 시에 높은 가용성과 높은 성능을 제공하기 위해 함께 작동하는 서버들의 지리적으로 분산된 네트워크를 포함할 수 있다. 예를 들어, 클라이언트 디바이스 A와 지리적으로 동일한 근접도로 있는 CDN의 서버 A가 클라이언트 디바이스 A에 콘텐츠를 전달하도록 선택될 수 있다. 서버 A에 의해 전달된 콘텐츠가, 클라이언트 디바이스 A와 지리적으로 동일한 근접도로 위치되지 않은 다른 서버, 즉, CDN의 서버 B보다 더 빠르게 클라이언트 디바이스 A에 전달될 수 있다.
일부 시스템들에서, 사용자가, 클라이언트 디바이스의 인가된 미디어 플레이어(예를 들어, 모바일 애플리케이션, 웹 브라우저 등에 의해 제공됨)를 통해, 콘텐츠 공유 플랫폼으로부터 콘텐츠를 요청할 수 있다. 인가 서비스를 사용하는 콘텐츠 공유 플랫폼은, 사용자가 요청된 콘텐츠에 액세스하기 위한 권한을 갖는지 여부를 결정하기 위해 사용자와 연관된 사용자 계정을 인가할 수 있다. 사용자 계정이 콘텐츠에 액세스하도록 인가되는 경우, 콘텐츠 공유 플랫폼은, CDN으로부터 요청된 콘텐츠를 획득하기 위해 클라이언트 디바이스에 의해 사용될 수 있는 하나 이상의 리소스 로케이터(예를 들어, URL(uniform resource locator))를 생성할 수 있다.
그러나, 일부 경우들에서, 사용자는 비인가된 미디어 플레이어(예를 들어, 오버레이 애플리케이션, 제3자 미디어 플레이어, 수정된 미디어 플레이어 등)를 사용하여 CDN으로부터의 콘텐츠에 액세스하고 수신된 콘텐츠에 대해 비인가된 기능들을 수행할 수 있다. 예를 들어, 비인가된 미디어 플레이어는 수신된 콘텐츠, 즉, 인가된 미디어 플레이어들에 의해 금지될 수 있는 피처(feature)를 저장 매체 상에 다운로드하는 것이 가능할 수 있다. 현재 시스템들에서는, 비인가된 미디어 플레이어들로부터의 콘텐츠 요청들을 식별하기가 어렵다. 이것은, 콘텐츠 공유 플랫폼으로 하여금, 비인가된 미디어 플레이어가 요청된 콘텐츠에 액세스하기 위한 권한을 실수로 승인하게 하여, 비인가된 미디어 플레이어가 수신된 콘텐츠에 대한 비인가된 기능들을 수행하는 것으로 이르게 할 수 있다. 게다가, 인가된 미디어 플레이어가 각각의 콘텐츠 요청에 대해 위조하기 어려운 인증 토큰들 - 이들은 인가된 미디어 플레이어의 진위를 증명할 수 있다 - 을 생성할 수 있지만, 이들 콘텐츠 관련 인증 토큰들을 생성하는 것은 시간 소비적일 수 있다. 이와 같이, 콘텐츠 관련 인증 토큰들의 사용은 각각의 콘텐츠 요청에 대해 바람직하지 않은 레이턴시(latency)를 야기시킬 수 있는데, 이는 사용자에게 불편을 줄 수 있다.
본 개시내용의 양태들 및 구현들은, 클라이언트 디바이스가 원하는 콘텐츠의 일 부분을 소비하는 동안 원하는 콘텐츠의 나머지 부분을 획득하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하는 것을 가능하게 함으로써 기존 기술의 이들 그리고 다른 단점들을 해결한다. 특히, 사용자는 클라이언트 디바이스 상에서 소비할 콘텐츠를 선택할 수 있다. 그 후에, 클라이언트 디바이스는 원하는 콘텐츠에 기초하는 인증 토큰(콘텐츠 기반 인증 토큰)의 생성을 개시하고, 원하는 콘텐츠에 대한 요청을 콘텐츠 공유 플랫폼에 전송할 수 있다. 일부 실시예들에서, 이 요청에 응답하여, 콘텐츠 공유 플랫폼은 요청된 콘텐츠에 액세스하기 위해 CDN 서버와 연관된 어드레스들(CDN 리소스 로케이터들)을 식별하고, CDN 리소스 로케이터들에 하나 이상의 암호화 서명된 파라미터를 첨부하며 결과적인 리소스 로케이터들을 리턴할 수 있다. 파라미터들은, 예를 들어, 리소스 로케이터들의 사용을 위한 만료 시간을 표시하기 위한 만료 파라미터, 요청된 콘텐츠에 대한 원하는 비트 레이트를 표시하기 위한 비트 레이트 파라미터, 콘텐츠 요청과 연관된 재생 이벤트를 식별하기 위한 재생 이벤트 식별자 파라미터 등)을 포함할 수 있는데, 이들은 리소스 로케이터들을 통해 액세스된 요청된 콘텐츠가 서빙되어야 하는 방법을 CDN에 표시하는 데 사용될 수 있다. 파라미터들은 또한, CDN이 요청된 콘텐츠의 초기 재생(예를 들어, 요청된 비디오의 초기 5초와 같은, 요청된 콘텐츠의 제1 부분)을 클라이언트 디바이스에 제공해야 함, 그리고 원하는 콘텐츠의 나머지 부분에 대한 각각의 추가 요청이 콘텐츠 기반 인증 토큰을 포함해야 함을 표시할 수 있다.
초기 재생을 소비하는 동안, 클라이언트 디바이스는 콘텐츠 기반 인증 토큰의 생성을 완료할 수 있다. 이에 따라, 클라이언트 디바이스는 그 후에, 콘텐츠 기반 인증 토큰과 함께, 요청된 콘텐츠의 다른 부분에 대한 요청을 CDN에 전송할 수 있다. 그 후에, CDN은 콘텐츠 기반 인증 토큰을 인증할 수 있고, CDN이 콘텐츠 기반 인증 토큰의 진위를 검증하는 것에 응답하여, CDN은 요청된 콘텐츠의 다른 부분에 대한 추가 리소스 로케이터를 클라이언트 디바이스에 전송할 수 있다. 일부 실시예들에서, 나머지 콘텐츠의 일 부분에 대한 각각의 추가 요청에는 콘텐츠 기반 인증 토큰이 동반되어야 한다.
CDN이 콘텐츠 기반 인증 토큰과 함께 추가 요청을 수신하고 콘텐츠 기반 인증 토큰을 인증하는 것에 응답하여, CDN은 추가 콘텐츠 요청에 대응하는 콘텐츠 부분을 제공한다. CDN이 콘텐츠 기반 인증 토큰 없이 추가 요청을 수신하는 것에 응답하여(또는 CDN이 콘텐츠 기반 인증 토큰을 인증하는 것에 실패한 경우), CDN은 추가 콘텐츠 요청을 거부할 수 있다.
요청된 콘텐츠가 단일 리소스 로케이터를 통해 액세스될 수 있는 일부 실시예들에서, 콘텐츠 공유 플랫폼은, CDN이, 미리 결정된 양의 시간(예를 들어, 5초) 동안 요청된 콘텐츠의 재생 - 그 후에 재생이 계속 또는 종료되어야 한다 - 을 클라이언트 디바이스에 제공해야 함을 표시하는 하나 이상의 암호화 서명된 파라미터를 리소스 로케이터에 첨부할 수 있다. 특히, CDN이 미리 결정된 양의 시간 내에 콘텐츠 기반 인증 토큰을 수신하지 않은 경우 CDN은 재생을 종료해야 한다. 대안적으로, CDN이 미리 결정된 양의 시간 내에 콘텐츠 기반 인증 토큰을 수신하는 경우 CDN은 재생을 계속해야 한다. 일부 구현들에서, 클라이언트 디바이스는 1차 통신 채널을 사용하여 콘텐츠의 소비를 시작하고, 일단 콘텐츠 기반 인증 토큰이 생성되면, 예를 들어, 사이드 채널(예를 들어, 별개의 통신 채널, 상이한 포트 등)을 사용하여 토큰을 CDN에 전송할 수 있다. CDN이 콘텐츠 기반 인증 토큰을 수신하는 것에 응답하여, CDN은 클라이언트 디바이스가 요청된 콘텐츠의 소비를 완료하게 할 수 있다.
본 개시내용의 양태들은 클라이언트 디바이스의 미디어 플레이어의 성능을 개선시키고 콘텐츠 공유 플랫폼의 성능을 개선시키는 결과로 된다. 특히, 본 개시내용의 양태들은, 콘텐츠 공유 플랫폼 및 CDN이, 위조하기 어려운 인증 토큰들을 사용함으로써 미디어 플레이어가 요청한 콘텐츠의 진위를 검증하는 것을 가능하게 하고, 그에 의해 비인가된 미디어 플레이어들이 CDN으로부터의 콘텐츠에 액세스하고 콘텐츠에 대한 비인가된 기능들을 수행하는 것을 방지한다. 추가로, 본 명세서에 개시된 기술은 바람직하지 않은 레이턴시가 사용자에게 초래되지 않고도 위조하기 어려운 인증 토큰들의 생성을 가능하게 한다. 이와 같이, 본 명세서에 개시된 기술은 사용자가 안정적이고 중단없는 뷰잉 경험을 갖는 것을 가능하게 한다.
본 개시내용의 구현들은 단순성과 간결성을 위해 비디오들을 종종 참조한다. 그러나, 본 개시내용의 교시는 일반적으로 미디어 아이템들에 적용되고, 예를 들어, 비디오, 오디오, 텍스트, 이미지들, 프로그램 명령어들 등을 포함하는 다양한 타입들의 콘텐츠에 적용될 수도 있다.
도 1은 본 개시내용의 하나의 구현에 따른, 예시적인 시스템 아키텍처(100)를 예시한다. 시스템 아키텍처(100)(본 명세서에서 "시스템"이라고도 또한 지칭됨)는, 콘텐츠 공유 플랫폼(120)(본 명세서에서 "콘텐츠 배포 플랫폼"이라고도 또한 지칭됨), 데이터 스토어(data store)(106), 네트워크(104)에 연결된 클라이언트 디바이스들(110A 내지 110Z)(본 명세서에서 "클라이언트 디바이스(들)(110)"라고 일반적으로 지칭됨), 프록시 서버(140), 및 콘텐츠 배포 네트워크(CDN)(130)(본 명세서에서 "콘텐츠 전달 네트워크"라고도 또한 지칭됨)를 포함한다. CDN(130)은 복수의 서버 머신들(132A 내지 132Z)(본 명세서에서 "서버(들)(132A 내지 132Z)"라고도 또한 지칭됨)을 포함할 수도 있다.
네트워크(104)는 공용 네트워크(예를 들어, 인터넷), 사설 네트워크(예를 들어, 근거리 네트워크(local area network)(LAN) 또는 광역 네트워크(wide area network)(WAN)), 유선 네트워크(예를 들어, 이더넷 네트워크), 무선 네트워크(예를 들어, 802.11 네트워크 또는 Wi-Fi 네트워크), 셀룰러 네트워크(예를 들어, 롱 텀 에볼루션(Long Term Evolution)(LTE) 네트워크), 라우터들, 허브들, 스위치들, 서버 컴퓨터들, 및/또는 이들의 조합을 포함할 수도 있다.
데이터 스토어(106)는, 콘텐츠 아이템들(예컨대, 미디어 아이템들)뿐만 아니라, 콘텐츠 아이템들을 태깅, 조직화, 및 인덱싱하기 위한 데이터 구조들을 저장하는 것이 가능한 영구적 스토리지일 수도 있다. 데이터 스토어(106)는 메인 메모리, 자기 또는 광학 저장 기반 디스크들, 테이프들 또는 하드 드라이브들, NAS, SAN 등과 같은 하나 이상의 저장 디바이스에 의해 호스팅될 수도 있다. 일부 실시예들에서, 데이터 스토어(106)는, 네트워크-어태치된 파일 서버일 수도 있는 한편, 다른 실시예들에서 데이터 스토어(106)는, 콘텐츠 공유 플랫폼(120) 또는 그 콘텐츠 공유 플랫폼(120)에 커플링되는 하나 이상의 상이한 머신에 의해 호스팅될 수도 있는, 객체 지향 데이터베이스, 관계형 데이터베이스 등과 같은 일부 다른 타입의 영구적 스토리지일 수도 있다. 일부 실시예들에서, 데이터 스토어(106)는 네트워크(104)를 통해 콘텐츠 공유 플랫폼(120)에 커플링될 수도 있다.
클라이언트 디바이스들(110A 내지 110Z)은 각각 퍼스널 컴퓨터(personal computer)(PC)들, 랩톱들, 모바일 폰들, 스마트 폰들, 태블릿 컴퓨터들, 넷북 컴퓨터들, 네트워크 연결된 텔레비전들 등과 같은 컴퓨팅 디바이스들을 포함할 수도 있다. 일부 실시예들에서, 클라이언트 디바이스들(110A 내지 110Z)은 "사용자 디바이스들"이라고도 또한 지칭될 수도 있다. 일부 실시예들에서, 각각의 클라이언트 디바이스(110A 내지 110Z)는 미디어 플레이어(112)(또는 미디어 뷰어) 및 토큰 모듈(114)을 포함할 수도 있다. 일부 실시예들에서, 미디어 플레이어들(112)은, 사용자들이 이미지들, 비디오 아이템들, 웹 페이지들, 문서들, 오디오 아이템들 등과 같은 콘텐츠를 재생, 뷰잉, 또는 업로드하게 하는 애플리케이션들일 수도 있다. 예를 들어, 미디어 플레이어(112)는, 웹 서버에 의해 서빙되는 콘텐츠(예를 들어, 웹 페이지들 예컨대 하이퍼 텍스트 마크업 언어(Hyper Text Markup Language)(HTML) 페이지들, 디지털 미디어 아이템들 등)를 액세스, 검색, 제시, 또는 내비게이팅할 수 있는 웹 브라우저일 수도 있다. 미디어 플레이어(112)는 콘텐츠(예를 들어, 웹 페이지, 미디어 뷰어)를 사용자에게 렌더링, 디스플레이, 또는 제시할 수 있다. 미디어 플레이어(112)는 웹 페이지(예를 들어, 온라인 머천트(online merchant)에 의해 판매되는 제품에 관한 정보를 제공할 수도 있는 웹 페이지)에 임베딩되는 임베딩된 미디어 플레이어(예를 들어, 플래시® 플레이어 또는 HTML5 플레이어)를 또한 포함할 수 있다. 다른 예에서, 미디어 플레이어(112)는, 사용자들이 디지털 미디어 아이템들(예를 들어, 디지털 비디오 아이템들, 디지털 이미지들, 전자 서적들 등)을 재생하게 하는 독립형 애플리케이션(예를 들어, 모바일 애플리케이션, 또는 네이티브 애플리케이션(native application))일 수 있다. 본 개시내용의 양태들에 따르면, 미디어 플레이어(112)는, 사용자들이 콘텐츠 공유 플랫폼 상에서 공유하기 위한 콘텐츠를 레코딩, 편집, 및/또는 업로드하기 위한 콘텐츠 공유 플랫폼 애플리케이션일 수 있다. 이와 같이, 미디어 플레이어들(112)은 콘텐츠 공유 플랫폼(120)에 의해 클라이언트 디바이스들(110A 내지 110Z)에 제공될 수 있다. 예를 들어, 미디어 플레이어들(112)은, 콘텐츠 공유 플랫폼(120)에 의해 제공되는 웹 페이지들에 임베딩되는 임베딩된 미디어 플레이어들일 수 있다. 다른 예에서, 미디어 플레이어들(112)은, 콘텐츠 공유 플랫폼(120)으로부터 다운로드되는 애플리케이션들일 수도 있다.
클라이언트 디바이스(110)에 의해 호스팅되는 토큰 모듈(114)은 하나 이상의 인증 토큰을 생성하는 데 사용될 수 있다. 디지털 미디어 아이템들의 각각의 콘텐츠 요청에 대해 인증 토큰(들)이 생성될 수 있다. 인증 토큰은 클라이언트(110)에 의해 콘텐츠 공유 플랫폼(120), 콘텐츠 배포 네트워크(130), 및/또는 프록시 서버(140)에 전송될 수 있는데, 이들은 그 후에, 인증 토큰을 암호화해제하는 것, 인증 토큰의 암호화 서명을 결정하는 것, 인증 토큰의 스팸 비트를 검사하는 것, 그리고/또는 토큰의 인증과 연관된 임의의 다른 프로세스를 수행하는 것에 의해 인증 프로세스를 수행할 수 있다. 인증 토큰(들)을 인증하는 것에 응답하여, 콘텐츠 공유 플랫폼(120) 및/또는 콘텐츠 배포 네트워크(130)는 요청된 디지털 미디어 아이템의 재생을 개시 또는 계속할 수 있다. 일부 실시예들에서, 인증 토큰(들)은, 아래에 더 상세히 논의되는 바와 같이, 콘텐츠 요청 및/또는 클라이언트(110)의 진위를 재확인하기 위해 콘텐츠 공유 플랫폼(120) 및/또는 콘텐츠 배포 네트워크(130) 중 적어도 하나에 주기적으로 전송될 수 있다.
일부 실시예들에서, 인증 토큰은 세션 기반 인증 토큰 및/또는 콘텐츠 기반 인증 토큰일 수 있다. 세션 기반 인증 토큰은, 디지털 미디어 아이템에 대한 콘텐츠 요청을 개시하는 사용자 또는 사용자 계정과 연관된 데이터를 사용하여 생성되는 인증 토큰일 수 있다. 예를 들어, 세션 기반 인증 토큰은, 클라이언트 디바이스(110) 또는 클라이언트 디바이스(110)의 애플리케이션을 식별하는 정보, 및 해싱 알고리즘을 사용하여 생성될 수 있다. 식별 정보는, 예를 들어, 클라이언트 디바이스(110)에 저장되고 특정 클라이언트 디바이스 또는 애플리케이션(예를 들어, 브라우저)에 특정된 소정량의 데이터를 보유하는 파일을 참조할 수 있는 쿠키의 형태로 될 수 있다. 예를 들어, 사용자는 사용자 계정 정보를 사용하여 콘텐츠 공유 플랫폼(120)에 로그인할 수 있다. 사용자 계정을 인가하는 것에 응답하여, 콘텐츠 공유 플랫폼(120)은 클라이언트 디바이스(110)에 쿠키를 전송할 수 있다. 클라이언트 디바이스(110)는, 토큰 모듈(114)을 통해, 쿠키에 기초하여 세션 기반 인증 토큰을 생성할 수 있다. 클라이언트 디바이스(110)는, 콘텐츠 공유 플랫폼(120)에 대한 콘텐츠 요청들에 세션 기반 인증 토큰을 포함시킬 수 있다. 일부 실시예들에서, 쿠키는, 계정 정보의 암호화된 버전을 포함하는 키-값 쌍을 포함할 수 있다.
콘텐츠 기반 인증 토큰은, 사용자에 의해 요청된 디지털 미디어 아이템과 연관된 데이터를 사용하여 생성되는 인증 토큰일 수 있다. 예를 들어, 콘텐츠 기반 인증 토큰은 디지털 미디어 아이템 식별 및 해싱 알고리즘을 사용하여 생성될 수 있다. 세션 기반 인증 토큰과 비교하면, 예를 들어, 각각의 개개의 디지털 미디어 아이템과 연관된 콘텐츠 식별자에 기초하여 각각의 디지털 미디어 아이템 요청에 대해 새로운 콘텐츠 기반 인증 토큰이 생성될 수 있는 반면, 각각의 디지털 미디어 아이템 요청에 대해 동일한 세션 기반 인증 토큰이 사용될 수 있다. 아래에 상세히 설명되는 바와 같이, 콘텐츠 식별자는 콘텐츠 공유 플랫폼(120)에 의해 재생 프로세스가 개시될 때까지 클라이언트 디바이스(110)에 알려지지 않을 수도 있다. 그러나, 임의의 재생에 앞서 세션 기반 인증 토큰이 생성될 수 있다. 따라서, 클라이언트 디바이스(110)는 세션 기반 인증 토큰을 사용하여 재생을 개시한 후에, 초기 재생의 소비 동안 생성된 콘텐츠 기반 인증 토큰을 사용하여 재생의 종료를 방지하거나 그리고/또는 계속할 수 있다.
일부 실시예들에서, 콘텐츠 요청에 대해, 클라이언트 디바이스(110)는, 세션 기반 인증 토큰과 함께, 초기 콘텐츠 요청을 콘텐츠 공유 플랫폼(120)에 전송할 수 있다. 그 후에, 콘텐츠 공유 플랫폼(120)은 세션 기반 인증 토큰을 인증하고, 콘텐츠 요청에 대한 재생 이벤트를 생성하며, 콘텐츠 요청을 재생 이벤트 식별자와 연관시킬 수 있다. 콘텐츠 공유 플랫폼(120)은 요청된 콘텐츠의 초기 재생을 클라이언트 디바이스(110)에 제공하도록 CDN(130)에 또한 명령할 수 있다. 콘텐츠 공유 플랫폼(120)은 요청된 콘텐츠의 재생을 계속하기 위한 각각의 추가 요청과 함께 콘텐츠 기반 인증 토큰을 CDN(130)에 전송할 것을 클라이언트 디바이스(110)에게 요구하도록 CDN(130)에 추가로 명령할 수 있다. 이것은, 아래에 더욱 상세히 논의되는 바와 같이, 클라이언트 디바이스(110)가 요청된 콘텐츠의 초기 재생을 소비하게 하기에 앞서 콘텐츠 공유 플랫폼(120)이 세션 기반 인증 토큰과 같은 인증 토큰을 수신하고, 클라이언트 디바이스(110)가 요청된 콘텐츠의 나머지 재생을 소비하게 하기에 앞서 CDN(130)이 콘텐츠 기반 인증 토큰과 같은 상대적으로 더 강력한 인증 토큰을 수신하는 것을 가능하게 한다.
일부 실시예들에서, 콘텐츠 공유 플랫폼(120), 프록시 서버(140) 및/또는 서버 머신들(132A 내지 132Z)은 사용자에게 미디어 아이템들에의 액세스를 제공하거나 또는 미디어 아이템들을 사용자에게 제공하기 위해 사용될 수도 있는 (랙마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 퍼스널 컴퓨터, 메인프레임 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터 등과 같은) 하나 이상의 컴퓨팅 디바이스, 데이터 스토어(예를 들어, 하드 디스크, 메모리, 데이터베이스), 네트워크, 소프트웨어 컴포넌트, 또는 하드웨어 컴포넌트일 수도 있다. 예를 들어, 콘텐츠 공유 플랫폼(120)은 사용자가 미디어 아이템들을 소비, 업로드, 탐색, 이들의 승인("좋아요"), 이들의 비승인("싫어요"), 또는 이들에 대해 코멘트하게 할 수도 있다. 콘텐츠 공유 플랫폼(120)은, 사용자에게 미디어 아이템들에의 액세스를 제공하기 위해 사용될 수도 있는 웹사이트(예를 들어, 웹페이지) 또는 애플리케이션 백엔드 소프트웨어를 또한 포함할 수도 있다.
본 개시내용의 일부 실시예들에서, "사용자"는 단일 개체로서 표현될 수도 있다. 그러나, 본 개시내용의 다른 실시예들은, "사용자"가 자동화된 소스 및/또는 사용자들의 세트에 의해 제어되는 엔티티(entity)라는 것을 포괄한다. 예를 들어, 소셜 네트워크에서 커뮤니티로서 연합된 개별 사용자들의 세트는 "사용자"로 간주될 수도 있다. 다른 예에서, 자동화된 소비자는, 콘텐츠 공유 플랫폼(120)의, 토픽 채널과 같은, 자동화된 인제스천 파이프라인(automated ingestion pipeline)일 수도 있다.
콘텐츠 공유 플랫폼(120)은 다수의 채널들(예를 들어, 채널들 A 내지 Z, 그 중에서 도 1에는 단지 채널 A만이 도시되어 있다)을 포함할 수 있다. 채널은, 공통 소스로부터 이용가능한 데이터 콘텐츠이거나 또는 공통 토픽, 테마, 또는 내용을 갖는 데이터 콘텐츠일 수 있다. 데이터 콘텐츠는, 사용자에 의해 선정된 디지털 콘텐츠, 사용자에 의해 이용가능해진 디지털 콘텐츠, 사용자에 의해 업로드된 디지털 콘텐츠, 콘텐츠 제공자에 의해 선정된 디지털 콘텐츠, 브로드캐스터에 의해 선정된 디지털 콘텐츠 등일 수 있다. 예를 들어, 채널 X는 비디오들 Y 및 Z를 포함할 수 있다. 채널은, 채널 상에서 액션들을 수행할 수 있는 사용자인 소유자와 연관될 수 있다. 소유자가 채널 상에서 디지털 콘텐츠를 이용가능하게 하는 것, 소유자가 다른 채널과 연관된 디지털 콘텐츠를 선택(예를 들어, 좋아요 표시)하는 것, 소유자가 다른 채널과 연관된 디지털 콘텐츠에 대해 코멘트하는 것 등과 같은 소유자의 액션들에 기초하여 상이한 활동들이 채널과 연관될 수 있다. 채널과 연관된 활동들은 채널에 대한 활동 피드로 수집될 수 있다. 채널의 소유자 이외의 사용자들은 이들이 관심있는 하나 이상의 채널을 구독할 수 있다. "구독"의 개념은 "좋아요 표시", "팔로잉(following)", "친구추가(friending)" 등이라고도 또한 지칭될 수도 있다. 일단 사용자가 채널을 구독하면, 사용자에게는 채널의 활동 피드로부터의 정보가 제시될 수 있다. 사용자가 다수의 채널들을 구독하는 경우, 사용자가 구독하는 각각의 채널에 대한 활동 피드가 신디케이트(syndicate)된 활동 피드에 조합될 수 있다. 신디케이트된 활동 피드로부터의 정보가 사용자에게 제시될 수 있다. 채널들은 이들 자신의 피드들을 가질 수도 있다. 예를 들어, 콘텐츠 공유 플랫폼 상에서 채널의 홈 페이지로 내비게이팅할 때, 그 채널에 의해 생성된 피드 아이템들이 채널 홈 페이지 상에서 보여질 수도 있다. 사용자들은 신디케이트된 피드를 가질 수도 있는데, 이 신디케이트된 피드는, 사용자가 구독하는 모든 채널들로부터의 콘텐츠 아이템들의 적어도 서브세트를 포함하는 피드이다. 신디케이트된 피드들은, 사용자가 구독하지 않은 채널들로부터의 콘텐츠 아이템들을 또한 포함할 수도 있다. 예를 들어, 콘텐츠 공유 플랫폼(120) 또는 다른 소셜 네트워크들은 추천된 콘텐츠 아이템들을 사용자의 신디케이트된 피드에 삽입할 수 있거나, 또는 사용자의 관련된 연결과 연관된 콘텐츠 아이템들을 신디케이트된 피드에 삽입할 수도 있다.
각각의 채널은 하나 이상의 미디어 아이템(122)을 포함할 수도 있다. 미디어 아이템(122)의 예들은 디지털 비디오, 디지털 영화들, 디지털 사진들, 디지털 음악, 오디오 콘텐츠, 멜로디들, 웹사이트 콘텐츠, 소셜 미디어 업데이트들, 전자 서적(ebook)들, 전자 잡지들, 디지털 신문들, 디지털 오디오 북들, 전자 저널들, 웹 블로그들, RSS(real simple syndication) 피드들, 전자 만화책들, 소프트웨어 애플리케이션들 등을 포함할 수 있고, 이들로 제한되지 않는다. 일부 실시예들에서, 미디어 아이템(122)은 또한 콘텐츠 또는 콘텐츠 아이템이라고도 지칭된다.
제한보다는 오히려, 간결성과 단순성을 위해, 비디오 아이템, 오디오 아이템, 또는 게이밍 아이템이 본 문서 전반에 걸쳐 미디어 아이템(122)의 일 예로서 사용된다. 본 명세서에서 사용되는 바와 같이, "미디어", "미디어 아이템", "온라인 미디어 아이템", "디지털 미디어", "디지털 미디어 아이템", "콘텐츠", 및 "콘텐츠 아이템"은, 디지털 미디어 아이템을 엔티티에 제시하도록 구성된 소프트웨어, 펌웨어 또는 하드웨어를 사용하여 실행 또는 로드될 수 있는 전자 파일을 포함할 수 있다. 하나의 실시예에서, 콘텐츠 공유 플랫폼(120)은 데이터 스토어(106)를 사용하여 미디어 아이템들(122)을 저장할 수도 있다. 다른 실시예에서, 콘텐츠 공유 플랫폼(120)은 데이터 스토어(106)를 사용하여 비디오 아이템들 또는 지문들을 전자 파일들로서 하나 이상의 포맷으로 저장할 수 있다.
일부 실시예들에서, 미디어 아이템들(122)은 비디오 아이템들이다. 비디오 아이템은, 모션 중인 장면을 표현하는 한 세트의 순차 비디오 프레임들(예를 들어, 이미지 프레임들)이다. 예를 들어, 일련의 순차 비디오 프레임들이 연속적으로 캡처되거나 또는 추후에 재구축되어 애니메이션을 생성할 수도 있다. 비디오 아이템들은, 아날로그, 디지털, 2차원 및 3차원 비디오를 포함하지만 이에 제한되지 않는 다양한 포맷들로 제시될 수도 있다. 추가로, 비디오 아이템들은, 영화들, 비디오 클립들 또는 순차적으로 디스플레이되는 임의의 세트의 애니메이션 이미지들을 포함할 수도 있다. 추가적으로, 비디오 아이템은, 비디오 컴포넌트와 오디오 컴포넌트를 포함하는 비디오 파일로서 저장될 수도 있다. 비디오 컴포넌트는 비디오 코딩 포맷 또는 이미지 코딩 포맷(예를 들어, H.264(MPEG-4 AVC), H.264 MPEG-4 Part 2, 그래픽 인터체인지 포맷(Graphic Interchange Format)(GIF), WebP 등)의 비디오 데이터를 지칭할 수도 있다. 오디오 컴포넌트는 오디오 코딩 포맷(예를 들어, 고급 오디오 코딩(advanced audio coding)(AAC), MP3 등)의 오디오 데이터를 지칭할 수도 있다. GIF는 이미지 파일(예를 들어, .gif 파일)로서 세이빙되거나 또는 일련의 이미지들로서 애니메이션 GIF(예를 들어, GIF89a 포맷)로 세이빙될 수도 있다는 것에 주목할 수도 있다. H.264는, 예를 들어, 비디오 콘텐츠의 레코딩, 압축, 또는 배포를 위한 블록 지향 모션 보상 기반 비디오 압축 표준인 비디오 코딩 포맷일 수도 있다는 것에 주목할 수도 있다.
일부 실시예들에서, 미디어 아이템은 예컨대 클라이언트 디바이스들(110A 내지 110Z) 중 하나 이상에 대한 라이브 스트림으로 스트리밍될 수 있다. "스트리밍된(streamed)" 또는 "스트리밍하는(streaming)"이라는 것은 미디어 아이템과 같은 콘텐츠의 송신 또는 브로드캐스트를 지칭하고, 여기서 미디어 아이템의 수신된 부분들은 (기술적 제한들 내에서) 수신 즉시 또는 미디어 콘텐츠의 다른 부분들이 전달되고 있는 동안, 그리고 전체 미디어 아이템이 수신 디바이스에 의해 수신되는 일 없이 수신 디바이스에 의해 재생될 수도 있다는 것에 주목한다. "스트림"은, 스트리밍되거나 또는 스트리밍하고 있는 미디어 아이템과 같은 콘텐츠를 지칭할 수도 있다. 라이브 스트림 미디어 아이템은 라이브 이벤트의 라이브 브로드캐스트 또는 송신을 지칭할 수도 있고, 여기서 미디어 아이템은, 적어도 부분적으로, 이벤트가 수신 디바이스에 발생함에 따라, 동시에 송신되고, 여기서 미디어 아이템은 그 전체가 이용가능하지 않다.
일부 실시예들에서, 콘텐츠 공유 플랫폼(120)은, 사용자들이, 미디어 아이템들을 포함하는 플레이리스트들(예를 들어, 미디어 아이템들(122)을 포함하는 플레이리스트 A 내지 Z)을 생성, 공유, 뷰잉 또는 사용하게 할 수 있다. 플레이리스트는, 어떠한 사용자 상호작용 없이 특정 순서로 차례로 플레이되도록 구성되는 미디어 아이템들의 콜렉션을 지칭한다. 일부 실시예들에서, 콘텐츠 공유 플랫폼(120)은 사용자를 대신하여 플레이리스트를 유지할 수도 있다. 일부 실시예들에서, 콘텐츠 공유 플랫폼(120)의 플레이리스트 피처는 사용자들이 재생을 위해 단일 위치에서 이들의 마음에 드는 미디어 아이템들을 함께 그룹화하게 한다. 실시예들에서, 콘텐츠 공유 플랫폼(120)은 재생 또는 디스플레이를 위해 플레이리스트 상의 미디어 아이템을 클라이언트 디바이스(110)에 전송할 수도 있다. 예를 들어, 미디어 뷰어(112)는 미디어 아이템들이 플레이리스트 상에 리스팅되는 순서대로 플레이리스트 상의 미디어 아이템들을 플레이하는 데 사용될 수도 있다. 다른 예에서, 사용자는 플레이리스트 상의 미디어 아이템들 사이를 전환할 수 있다. 또 다른 예에서, 사용자는 플레이할 플레이리스트 상의 다음 미디어 아이템을 기다릴 수 있거나 또는 재생을 위해 플레이리스트에서의 특정 미디어 아이템을 선택할 수 있다. 일부 실시예들에서, 사용자는 사용자 계정을 통해 공유 플랫폼(120) 상의 콘텐츠에 액세스할 수 있다. 사용자는 클라이언트 디바이스(110)(예를 들어, 미디어 뷰어(112)) 상의 애플리케이션을 통해 사용자 계정 정보(예를 들어, 사용자명 및 패스워드)를 제공함으로써 사용자 계정에 액세스(예를 들어, 로그인)할 수 있다. 일부 실시예들에서, 사용자 계정은 단일 사용자와 연관될 수도 있다. 다른 실시예들에서, 사용자 계정은 공유된 계정(예를 들어, 다수의 사용자들에 의해 공유된 가족 계정)(본 명세서에서 "공유된 사용자 계정"이라고도 또한 지칭됨)일 수 있다. 공유된 계정은, 각각이 상이한 사용자와 연관된 다수의 사용자 프로파일들을 가질 수 있다. 다수의 사용자들은 동일한 계정 정보 또는 상이한 계정 정보를 사용하여 공유된 계정에 로그인할 수 있다. 일부 실시예들에서, 공유된 계정의 다수의 사용자들은 공유된 계정의 상이한 사용자 프로파일들에 기초하여 차별화될 수도 있다.
일부 실시예들에서, 인가 데이터 서비스(124)(본 명세서에서 "코어 데이터 서비스" 또는 "인가 데이터 소스"라고도 또한 지칭됨)는 사용자 계정이 요청된 콘텐츠를 획득하는 것이 허용되도록 사용자 계정을 인가할 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)는 요청된 콘텐츠에 대한 사용자 계정(예를 들어, 사용자 계정과 연관된 클라이언트 디바이스) 액세스를 인가하거나, 요청된 콘텐츠를 클라이언트 디바이스로 전달하는 것을 인가하거나, 또는 이들 양측 모두를 할 수 있다. 요청된 콘텐츠에 액세스하기 위한 사용자 계정의 인가는, 액세스될 콘텐츠가 무엇인지 그리고 콘텐츠의 액세스가 허용된 사람이 누구인지를 인가하는 것을 수반할 수 있다.
콘텐츠의 전달의 인가는, 콘텐츠가 전달되는 방법을 인가하는 것을 수반할 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)는 사용자 계정을 인가하기 위해 사용자 계정 정보를 사용할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(110) 또는 미디어 플레이어(112)와 연관된 인증 토큰(예를 들어, 세션 기반 인증 토큰, 콘텐츠 기반 인증 토큰 등)이 사용자 계정 및/또는 요청된 콘텐츠의 재생을 인가하는 데 사용될 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)는 콘텐츠 공유 플랫폼(120)의 일부이다. 일부 실시예들에서, 인가 데이터 서비스(124)는 콘텐츠 공유 플랫폼(120)의 일부가 아니며, 제3자에 의해 공급된 인가 서비스와 같은 외부 서비스이다.
상기에 언급된 바와 같이, 콘텐츠 배포 네트워크(CDN)(130)는, 서버 머신들(132A 내지 132Z)(본 명세서에서 "서버 머신(들)(132)" 또는 "서버(들)(132)"라고 일반적으로 지칭됨)로서 표현되는 하나 이상의 노드를 포함할 수 있다. 실시예들에서, 콘텐츠 배포 네트워크(130)는, 콘텐츠의 빠른 전달을 제공하기 위해 함께 작동하는 서버들의 지리적으로 분산된 네트워크를 포함한다. 서버들의 네트워크는, 일부 경우들에서, 클라이언트 디바이스들(110)에 대한 근접도에 기초하여 콘텐츠 또는 서비스들을 배포함으로써 높은 가용성과 높은 성능을 제공하도록 지리적으로 분산된다. CDN 서버가 클라이언트 디바이스(110)에 가까울수록, 콘텐츠가 클라이언트 디바이스(110)에 더 빨리 전달될 수 있다.
예를 들어, 상이한 서버 머신들(132A 내지 132Z)은 특정 국가 내에서 또는 상이한 국가들에 걸쳐 지리적으로 분산될 수 있다. 영국에 위치된 클라이언트 디바이스(110A)를 사용하는 사용자 A는, 콘텐츠 공유 플랫폼(120)에 의해 호스팅되는 콘텐츠를 획득하도록 요청할 수 있다. 요청은 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)에 의해 수신될 수 있고, 사용자 A와 연관된 사용자 계정은 요청된 콘텐츠를 획득하도록 인가될 수 있다. 인가에 후속하여, 콘텐츠 공유 플랫폼(120)은 URL(uniform resource locator)과 같은 리소스 로케이터를 클라이언트 디바이스(110A)에 전송할 수 있다. 리소스 로케이터는, 컴퓨터 네트워크 상의 리소스(예를 들어, 콘텐츠)의 위치 및 리소스를 검색하기 위한 메커니즘을 특정하는 레퍼런스를 지칭할 수 있다. 리소스 로케이터는, 클라이언트 디바이스(110A)에 지리적으로 근접하게 위치되는 콘텐츠 배포 네트워크(130)의 서버 머신(132)으로부터 콘텐츠를 획득하도록 클라이언트 디바이스(110A)에 지시할 수 있다. 예를 들어, 리소스 로케이터는, 영국에 또한 위치되는 콘텐츠 배포 네트워크(130)의 특정 서버 머신(132)으로부터 요청된 콘텐츠를 획득하도록 클라이언트 디바이스(110A)에 지시할 수 있다. 다른 예에서, 미국의 서부 해안에 위치된 클라이언트 디바이스(110B)를 사용하는 다른 사용자 B는, 사용자 A와 동일한 콘텐츠를 획득하도록 요청한다. 요청은 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)에 의해 수신될 수 있고, 사용자 B와 연관된 사용자 계정은 요청된 콘텐츠를 획득하도록 인가될 수 있다.
인가에 후속하여, 콘텐츠 공유 플랫폼(120)은 리소스 로케이터를 클라이언트 디바이스(110B)에 전송할 수 있다. 리소스 로케이터는, 클라이언트 디바이스(110B)에 지리적으로 근접하게 위치되는 콘텐츠 배포 네트워크(130)의 서버 머신(132)으로부터 콘텐츠를 획득하도록 클라이언트 디바이스(110B)에 지시할 수 있다. 예를 들어, 리소스 로케이터는, 미국의 서부 해안에 위치된 콘텐츠 배포 네트워크(130)의 서버 머신(132)으로부터 요청된 콘텐츠를 획득하도록 클라이언트 디바이스(110B)에 지시할 수 있다.
일부 실시예들에서, 콘텐츠 배포 네트워크(130)는 콘텐츠 공유 플랫폼(120)의 일부이다. 다른 실시예들에서, 콘텐츠 배포 네트워크(130)는, CDN 서비스들을 콘텐츠 공유 플랫폼(120)에 제공하는 제3자 플랫폼이다. 다른 실시예들에서, 콘텐츠 배포 네트워크(130) 중 일부는 콘텐츠 공유 플랫폼(120)에 의해 동작될 수 있고, 콘텐츠 배포 네트워크(130)의 다른 부분은 제3자에 의해 동작될 수 있다. 실시예들에서, 콘텐츠 배포 네트워크(130)는 데이터 스토어(134)와 같은 데이터 스토어를 포함한다. 데이터 스토어(134)는 데이터 스토어(106)와 유사할 수 있다. 데이터 스토어는 미디어 콘텐츠와 같은 콘텐츠에 대한 데이터 파일들(136)을 포함할 수 있다. 데이터 스토어(106)는 하나 이상의 공개 키 또는 하나 이상의 개인 키와 같은 하나 이상의 암호화 키(137)를 또한 포함할 수 있다.
인가 모듈(138)은 CDN(130)의 서버(132)에 포함될 수 있다. 인가 모듈(138)은, 본 명세서에서 설명되는 본 개시내용의 양태들을 수행할 수 있다. 예를 들어, 인가 모듈(138)은, 클라이언트 디바이스(110)로부터 수신된 세션 기반 인증 토큰 및/또는 콘텐츠 기반 인증 토큰을 인증할 수 있다. 일부 실시예들에서, 인가 모듈(138)은, 클라이언트 디바이스(110)로부터 수신된 세션 기반 인증 토큰 및/또는 콘텐츠 기반 인증 토큰을 인증하기 위해 암호화해제 키들 및/또는 라이브러리들을 사용할 수 있다. 인증 시에, 인가 모듈(138)은 리소스 로케이터들을 릴리스(release)할지 그리고/또는 클라이언트 디바이스(110)에 대한 재생을 개시할지 여부를 인가 데이터 서비스(124) 및/또는 서버(132)에 표시할 수 있다.
프록시 서버(140)는, 재생 스타트업 레이턴시를 개선시키기 위한 프로토콜을 구현하는 것이 가능한 하나 이상의 노드(예를 들어, 서버)를 포함할 수 있다. 프록시 서버(140)는 초기 재생 모듈(142)을 포함할 수 있다. 일부 실시예들에서, 프록시 서버(140)는, 초기 재생 모듈(142)을 통해, 콘텐츠 기반 인증 토큰을 생성하기에 앞서 클라이언트(110)가 미리 결정된 양의 재생 데이터(예를 들어, 초기 재생)를 수신하는 것을 가능하게 할 수 있다. 일부 실시예들에서, 프록시 서버(140)는 콘텐츠 공유 플랫폼(120) 및/또는 콘텐츠 배포 네트워크(130)의 일부이다. 다른 실시예들에서, 프록시 서버(140)는, 클라이언트(110)에 초기 재생 서비스들을 제공하는 제3자 플랫폼이다. 일부 실시예들에서, 프록시 서버(140)는 클라이언트 디바이스(110)의 일부이다. 프록시 서버(140)와 연관된 기능이 아래에 상세히 설명될 것이다.
일반적으로, 콘텐츠 공유 플랫폼(120), 콘텐츠 배포 네트워크(130), 및 또는 프록시 서버(140)에 의해 수행되는 것으로서 하나의 실시예에서 설명된 기능들은 또한, 적절한 경우, 다른 실시예들에서 클라이언트 디바이스들(110A 내지 110Z) 상에서 수행될 수 있다. 추가적으로, 특정 컴포넌트에 기인하는 기능성은, 함께 동작하는 상이한 또는 다수의 컴포넌트들에 의해 수행될 수 있다. 콘텐츠 공유 플랫폼(120), 콘텐츠 배포 네트워크(130), 또는 프록시 서버(140)는 또한, 적절한 애플리케이션 프로그래밍 인터페이스들을 통해 다른 시스템들 또는 디바이스들에 제공되는 서비스로서 액세스될 수 있고, 따라서 웹사이트들에서의 사용으로 제한되지 않는다.
본 개시내용의 실시예들은 콘텐츠 공유 플랫폼들 및 콘텐츠 공유 플랫폼(120) 상의 콘텐츠 아이템의 소셜 네트워크 공유를 촉진하는 것의 관점에서 논의되지만, 실시예들은 또한, 콘텐츠 전달 플랫폼, 또는 사용자들 사이의 연결들을 제공하는 임의의 타입의 소셜 네트워크에 일반적으로 적용될 수도 있다. 본 개시내용의 구현들은, 사용자들에게 채널 구독들을 제공하는 콘텐츠 공유 플랫폼들로 제한되지 않는다.
상기의 설명들에 추가로, 사용자에게는 혹시라도 본 명세서에서 설명되는 시스템들, 프로그램들, 또는 피처들이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션들 또는 활동들, 직업, 사용자의 선호도들, 또는 사용자의 현재 위치에 관한 정보)의 수집을 가능하게 할 수도 있다면, 그리고 사용자가 서버로부터 콘텐츠 또는 통신들을 전송받은 경우 양측 모두에 대해 사용자가 선택을 행하게 하는 컨트롤(control)들이 제공될 수도 있다. 추가적으로, 개인적으로 식별가능한 정보가 제거되도록, 특정 데이터가 저장 또는 사용되기 전에 그 특정 데이터가 하나 이상의 방식으로 처리될 수도 있다. 예를 들어, 사용자에 대해 어떠한 개인적으로 식별가능한 정보도 결정될 수 없도록 사용자의 아이덴티티가 처리될 수도 있거나, 또는 사용자의 특정 위치가 결정될 수 없도록 (예컨대, 도시, 우편 번호(ZIP code), 또는 주 레벨(state level)로) 위치 정보가 획득된 경우 사용자의 지리적 위치가 일반화될 수도 있다. 따라서, 사용자는 어떤 정보가 사용자에 관해 수집되는지, 그 정보가 어떻게 사용되는지, 그리고 어떤 정보가 사용자에게 제공되는지를 제어할 수도 있다.
도 2는 본 개시내용의 실시예들에 따른, 콘텐츠의 초기 재생을 가능하게 하는 동안 콘텐츠의 나머지 재생을 가능하게 하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하기 위한 동작들의 다이어그램이다. 시스템(200)은, 도 1의 시스템 아키텍처(100)와 유사한 컴포넌트들을 포함할 수도 있다. 도 1의 컴포넌트들은 도 2를 설명하는 데 도움이 되도록 사용될 수도 있다는 것에 주목할 수도 있다. 제한보다는 오히려 예시의 목적들을 위해, 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124), CDN(130)의 서버(132), 프록시 서버(140)의 초기 재생 모듈(142), 또는 클라이언트 디바이스(110)에 의해 수행되는 것으로서 설명되는 시스템(200)에 대한 동작들은, 달리 설명되지 않는 한, 이들의 임의의 컴포넌트에 의해 수행될 수도 있다. 도 2와 관련하여 설명된 동작들은 제한보다는 오히려 예시를 위해 순차적으로 수행되는 것으로 도시되어 있다. 동작들은 임의의 순서로 수행될 수도 있고 동작들 중 임의의 것은 하나 이상의 다른 동작과 동시에 수행될 수도 있다는 것에 주목할 수도 있다. 일부 구현들에서, 동일하거나, 상이하거나, 더 적거나, 또는 더 많은 수의 동작들이 임의의 순서로 수행될 수도 있다.
동작 202에서, 클라이언트 디바이스(110)는 세션 기반 인증 토큰을 생성한다. 일부 실시예들에서, 세션 기반 인증 토큰은, 클라이언트 디바이스(110)와 연관된 쿠키들을 사용하여 생성될 수 있다. 예를 들어, 사용자는 사용자 계정 정보를 사용하여 콘텐츠 공유 플랫폼(120)에 로그인할 수 있고, 콘텐츠 공유 플랫폼(120)이 사용자 계정을 인가하는 것에 응답하여, 콘텐츠 공유 플랫폼(120)은 사용자 디바이스(120)에 쿠키를 전송할 수 있다. 그 후에, 클라이언트 디바이스(110)는, 토큰 모듈(114)을 통해, 쿠키에 기초하여 세션 기반 인증 토큰을 생성할 수 있다. 다른 실시예들에서, 세션 기반 토큰은 사용자 또는 사용자 계정과 연관된 다른 데이터(예를 들어, 사용자명 및 패스워드, 인터넷 프로토콜(IP) 어드레스 등)를 사용하여 생성될 수 있다.
동작 204에서, 콘텐츠에 대한 사용자 요청에 응답하여, 클라이언트 디바이스(110)는 콘텐츠 기반 인증 토큰의 생성을 개시한다. 콘텐츠 기반 인증 토큰은, 예를 들어, 이전(캐싱된) 재생 이벤트, 콘텐츠 요청을 발행한 애플리케이션, 및 요청된 콘텐츠를 식별하는 콘텐츠 식별자로부터 도출된 정보를 사용하여 생성될 수 있다. 예를 들어, 클라이언트 디바이스(110)의 사용자는, 브라우저 또는 네이티브 애플리케이션과 같은 애플리케이션을 사용하여 콘텐츠 공유 플랫폼(120)에 의해 호스팅되는 비디오 아이템을 플레이하도록 요청할 수 있다. 비디오 아이템에 대한 사용자 요청 시에, 클라이언트 디바이스(110)는, 비디오 아이템을 식별하는 초기 정보를 검색하고 콘텐츠 기반 인증 토큰의 생성을 개시할 수 있다. 일부 실시예들에서, 초기 식별 정보는, 클라이언트 디바이스(110)의 GUI에 로드된 데이터로부터 검색될 수 있다. 예를 들어, 사용자는, 재생을 개시하기 위한 버튼(플레이 버튼) 및 비디오 아이템을 디스플레이하는 웹페이지를 로드할 수 있다. 웹페이지는, 비디오 아이템을 식별하는 초기 정보를 포함할 수 있다. 사용자가 비디오 아이템의 재생을 요청하는 것(예를 들어, 플레이 버튼을 선택하는 것)에 응답하여, 클라이언트 디바이스(110)는, GUI에 로드된 데이터로부터의 초기 식별 정보를 사용하여 콘텐츠 기반 인증 토큰의 생성을 개시할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(110)는 콘텐츠 식별자 이외의 데이터를 사용하여 콘텐츠 기반 인증 토큰을 생성하는 것을 시작하고 이에 후속하여 콘텐츠 식별자를 사용할 수 있다. 즉, 콘텐츠 식별자는 콘텐츠에 대한 요청이 전송된 후에 인가 데이터 서비스(124)에 의해 제공될 수 있거나, 또는 클라이언트 디바이스(110)에 의해 수신되는 요청된 콘텐츠의 초기 부분으로부터 클라이언트 디바이스(110)에 의해 도출될 수 있다. 예를 들어, 클라이언트 디바이스(110)는 콘텐츠를 획득하라는 요청을 전송할 수 있고(아래에 논의되는 동작 206), 콘텐츠 식별자가 콘텐츠에 대한 요청에 대한 응답에 포함되거나, 또는 클라이언트 디바이스(110)에 의해 수신되는 요청된 콘텐츠의 초기 부분으로부터 도출될 수 있다.
세션 기반 인증 토큰과 비교하면, 콘텐츠 기반 인증 토큰은 더 강력한 인증 토큰인데, 이는 즉시 알지 못하는 콘텐츠 식별자를 요구하여, 그에 의해 딜레이된 생성 프로세스를 초래한다. 이와 같이, 클라이언트 디바이스(110)는 CDN 네트워크(130)로부터 요청된 콘텐츠의 초기 재생을 획득하기 위해 세션 기반 인증 토큰(이는 어떠한 딜레이 없이 그리고 콘텐츠 재생에 앞서 생성될 수 있다)을 사용하고, 재생의 나머지 부분을 획득하기 위해 콘텐츠 기반 인증 토큰을 사용할 수 있다. 초기 재생은 단지 비디오 아이템의 제1 부분(예를 들어, 비디오의 처음 5초)만을 포함할 수 있다. 세션 기반 토큰이 단지 비디오 아이템의 제1 부분만을 획득하는 것을 가능하게 하면, 비디오의 시작부에서 시작되지 않는 콘텐츠 요청들에 대한 보호를 제공한다. 특히, 이것은, 비인가된 사용자가, 유효한 세션 기반 인증 토큰을 생성하고 비디오 아이템 전체를 부분들(예를 들어, 비디오 아이템의 시작으로부터의 처음 5초 부분, 비디오 아이템의 5초 마크로부터의 두 번째 5초 부분 등)로 요청하며 그 부분들을 단일 비디오로 조합하는 것을 방지한다.
동작 206에서, 클라이언트 디바이스(110)는 콘텐츠를 획득하라는 요청을 프록시 서버(140)의 초기 재생 모듈(142)에 전송할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(110)로부터의 요청은, 수신될 데이터의 포맷을 포함할 수 있다. 예를 들어, 요청은, 클라이언트 디바이스(110)에서 미디어 뷰어(112)와 호환되는 비디오 아이템의 포맷을 포함할 수 있다. 일부 실시예들에서, 요청은, 비디오 아이템과 같은 콘텐츠의 재생을 제공하는 미디어 뷰어(112)와 관련된 추가 정보(예를 들어, 타입, 버전 등)를 포함할 수 있다.
일부 실시예들에서, 콘텐츠 요청은, 동작 202에서 생성된 세션 기반 인증 토큰을 포함할 수 있다. 다른 실시예들에서, 세션 기반 인증 토큰 대신에, 콘텐츠 요청은, 콘텐츠를 획득하려고 시도하는 클라이언트 디바이스, 사용자, 또는 사용자 계정의 식별자들을 포함할 수 있다. 예를 들어, 사용자 요청은, 콘텐츠를 획득하라고 요청하는 사용자 계정과 연관된 사용자명 및 패스워드를 식별할 수 있다. 다른 예에서, 요청은, 특정 사용자 계정을 식별하는 데 사용될 수 있는, 사용자 디바이스에서의 애플리케이션 또는 클라이언트 디바이스(110)를 식별하는 쿠키를 포함할 수 있다. 동작 208에서, 프록시 서버(140)는, 세션 기반 인증 토큰(및/또는 콘텐츠를 획득하려고 시도하는 클라이언트 디바이스, 사용자, 또는 사용자 계정의 다른 식별자들)과 함께, 콘텐츠 요청을 인가 데이터 서비스(124)로 포워딩(전송)할 수 있다. 콘텐츠 요청의 수신 시에, 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)는 재생 이벤트를 생성하고 재생 이벤트 식별자를 콘텐츠 요청과 연관시킬 수 있다.
동작 210에서, 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)는 콘텐츠 요청을 인가할 수 있다. 요청을 인가하기 위해, 인가 데이터 서비스(124)는, 예를 들어, 인증 프로세스를 사용하여 세션 기반 인증 토큰을 인증할 수 있다. 예를 들어, 인증 프로세스를 수행하는 것은, 세션 기반 인증 토큰을 암호화해제하는 것, 세션 기반 인증 토큰의 암호화 서명을 결정하는 것, 세션 기반 토큰의 스팸 비트를 검사하는 것, 및/또는 세션 기반 인증 토큰의 인증과 연관된 임의의 다른 프로세스를 수행하는 것을 포함할 수 있다.
다른 실시예들에서, 인가 데이터 서비스(124)는 클라이언트 디바이스(110), 사용자, 또는 사용자 계정 중 적어도 하나가 콘텐츠를 획득하도록 허용된다는 것을 결정할 수 있다. 일부 실시예들에서, 요청은, 콘텐츠를 획득하라고 요청하는 사용자 계정의 계정 정보를 식별할 수 있다. 예를 들어, 계정 정보는 쿠키에서 암호화될 수 있다. 다른 예에서, 계정 정보는 사용자에 의해 입력되고 요청에 제공될 수 있다. 일부 실시예들에서, 사용자명 및 패스워드와 같은 계정 정보는 계정 정보(예를 들어, 수신된 사용자명 및 패스워드)를 계정 정보의 저장된 레코드와 비교함으로써 인가 데이터 서비스(124)에 의해 인증될 수 있다. 요청의 계정 정보가 레코드의 계정 정보와 매칭하는 경우, 인가 데이터 서비스(124)는 특정 사용자 계정이 인증된다고 결정할 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)가 세션 기반 인증 토큰(또는 식별자들)을 인증하는 것에 실패한 것에 응답하여, 콘텐츠 요청은 콘텐츠 공유 플랫폼(120)에 의해 거부될 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)가 콘텐츠를 획득하라는 요청을 인가하지 않는 경우, 인가 데이터 서비스(124)는, 요청된 콘텐츠를 획득하기 위한 인가가 승인되지 않음을 표시하는 메시지를 클라이언트 디바이스(110)에 전송할 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)가 콘텐츠를 획득하라는 요청을 인가하지 않은 것에 응답하여, 콘텐츠 공유 플랫폼(120)은, 새로운 세션 기반 인증 토큰 또는 새로운 로그인 정보 및/또는 추가 정보를 요청하는 메시지를 클라이언트 디바이스(110)에 전송할 수 있다.
일부 실시예들에서, 세션 기반 토큰의 인증 프로세스 동안 프로세싱된 하나 이상의 파라미터(예를 들어, 사용자 계정, 클라이언트 디바이스 위치, IP 어드레스 등과 관련된 파라미터들)의 검출 또는 세션 기반 인증 토큰(또는 식별자들)을 인증하는 것에 실패한 것에 응답하여, 인가 데이터 서비스(124)는 하나 이상의 액션을 개시할 수 있다. 액션들은, 디지털 저작권 관리(Digital Rights Management)(DRM) 제약(예를 들어, CDN 생성된 암호화를 사용하여 DRM 재생이 제공되도록 클라이언트 디바이스(110)에 요구함)을 적용하는 것, 클라이언트 디바이스(110)로부터 ReCaptcha 검증을 요청하는 것, 클라이언트 디바이스(110)의 사용자에게 서명하도록 요청하는 것, 요청된 콘텐츠의 재생을 스로틀링(throttle)하도록 서버(132)에 명령하는 것, 콘텐츠 기반 토큰이 검증 프로세스에 실패한 것에 응답하여 서버(132)가 비디오 아이템의 나머지 부분("계속 재생")에 대한 요청들을 거부하도록 명령받은 경우 서버(132)에 의해 콘텐츠 기반 인증 토큰의 유효성 검사를 요구하는 것, 콘텐츠 기반 인증 토큰이 검증 프로세스에 실패한 것에 응답하여 서버(132)가 계속 재생을 위한 요청들을 스로틀링하도록 명령받은 경우 서버(132)에 의해 콘텐츠 기반 인증 토큰의 유효성 검사를 요구하는 것, 및 콘텐츠 요청을 거부하는 것을 포함할 수 있다. 다른 실시예들에서, 세션 기반 인증 토큰 또는 클라이언트 디바이스, 사용자, 또는 사용자 계정을 인증하는 것에 응답하여, 인가 데이터 서비스(124)는 어떠한 제약들 없이 전체 콘텐츠의 재생을 가능하게 할 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)가 콘텐츠를 획득하라는 요청을 인가하는 것에 응답하여, 인가 데이터 서비스(124)는 CDN 네트워크(130)로부터 요청된 콘텐츠의 초기 재생을 획득하도록 클라이언트 디바이스(110)를 인가하기 위해 하나 이상의 리소스 로케이터(예를 들어, URL)를 생성한다. 일부 실시예들에서, 리소스 로케이터들은, 클라이언트 디바이스(110)에 요청된 콘텐츠를 전달할 CDN(130)의 서버를 식별할 수 있다. 예를 들어, 리소스 로케이터들은, 요청된 콘텐츠의 초기 재생을 획득하기 위해 액세스될 수 있는 특정 서버(예를 들어, 서버(112A), 서버(112B) 등)를 식별하는 호스트명을 포함할 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)는 하나 이상의 암호화 서명된 파라미터(예를 들어, 만료 파라미터, 비트 레이트 파라미터, 이벤트 식별자 파라미터 등)를 리소스 로케이터에 첨부할 수 있는데, 이 하나 이상의 암호화 서명된 파라미터는 어떤 데이터가 서빙되어야 하는지 그리고 데이터가 어떻게 서빙되어야 하는지를 서버(132)에 표시하는 데 사용될 수 있다. 일부 실시예들에서, 암호화 서명된 파라미터들은 요청된 콘텐츠(예를 들어, 미리 결정된 양의 요청된 콘텐츠)의 단지 초기 재생만을 클라이언트 디바이스(110)에 제공하도록 서버(132)에 표시할 수 있다. 예를 들어, 초기 재생은, 단일 리소스 로케이터를 사용하여 제공될 수 있는 요청된 콘텐츠와 연관된 비디오 아이템의 초기 5초를 포함할 수 있다. 암호화 서명된 파라미터들은, 계속 재생(예를 들어, 추가 리소스 로케이터들을 사용하는 원하는 콘텐츠의 나머지 부분)을 위한 각각의 추가 요청이 콘텐츠 기반 인증 토큰을 포함해야 함을 서버(132)에 추가로 표시할 수 있다.
동작 212에서, 사용자 계정이 인가되는 것에 응답하여, 인가 데이터 서비스(124)는 콘텐츠에 대한 요청(예를 들어, 동작 208)에 대한 응답을 초기 재생 모듈(142)에 전송할 수 있다. 일부 실시예들에서, 응답은, 재생 이벤트 식별자, 및 콘텐츠를 클라이언트 디바이스(110)에 전달할 CDN(130)의 서버(132)를 식별하는 하나 이상의 리소스 로케이터를 포함할 수 있다. 일부 실시예들에서, 응답은, 클라이언트 디바이스(110)에 요청된 콘텐츠의 단지 초기 재생만을 제공하도록 서버(132)에 표시하는 하나 이상의 암호화 서명된 파라미터를 또한 포함할 수 있다. 일부 실시예들에서, 응답은 또한 재생 이벤트 식별자 및/또는 사용자 계정 정보를 포함할 수 있다. 일부 실시예들에서, 리소스 로케이터는 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)(HTTP) 응답에 포함될 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)는 응답을 암호화할 수 있다. 일부 실시예들에서, 응답은 하나 이상의 암호화해제 키를 포함할 수 있다. 암호화해제 키들은, 리소스 로케이터들과 연관된 콘텐츠 및/또는 응답을 암호화해제하는 데 사용될 수 있다.
동작 214에서, 초기 재생 모듈(142)은, 암호화 서명된 파라미터들이 첨부된 리소스 로케이터를 사용하여 콘텐츠를 요청할 수 있다. 예를 들어, 초기 재생 모듈(142)은 리소스 로케이터(들)를 사용하여 HTTP 요청을 전송할 수 있다. 일부 실시예들에서, 요청은 CDN(130)의 서버(132)에 전송될 수 있다. 일부 실시예들에서, CDN(130)의 서버(132)는 초기 재생 모듈(142)로부터 요청을 수신한다. 요청은, 상술된 바와 같은 암호화 서명된 파라미터들이 첨부된 리소스 로케이터를 포함한다.
동작 216에서, 서버(132)는, 암호화 서명된 파라미터들에 의해 명령받은 바와 같이, 초기 재생과 연관된 데이터로 초기 재생 모듈(142)로부터의 요청에 응답할 수 있다. 예를 들어, 응답은 비디오 아이템의 일 부분(예를 들어, 처음 5초)을 포함할 수 있다. 초기 재생은 단일 리소스 로케이터를 사용하여 획득될 수 있다. 동작 218에서, 프록시 서버는 사용자 소비를 위해 클라이언트 디바이스(110)에 초기 재생 데이터를 전송할 수 있다. 일부 실시예들에서, 초기 재생 데이터가 암호화되는 것에 응답하여, 초기 재생 모듈(142)은 초기 재생 데이터를 암호화해제할 수 있다.
동작 220에서, 클라이언트 디바이스(110)는 콘텐츠 기반 인증 토큰의 생성을 완료할 수 있다.
동작 222에서, 클라이언트 디바이스(110)는 비디오 아이템의 나머지 부분("계속 재생")에 대한 요청을 서버(132)에 전송할 수 있다. 요청은 콘텐츠 기반 인증 토큰을 포함할 수 있다. 요청은, 예를 들어, 재생 이벤트 식별자 및/또는 위치 식별자를 사용하여 요청된 콘텐츠를 식별할 수 있다. 위치 식별자는, 재생이 계속되어야 하는 비디오 아이템 내의 위치(예를 들어, 시점)를 표시할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(110)로부터 서버(132)로의 요청은, 수신될 데이터의 포맷을 포함할 수 있다.
서버(132)는 콘텐츠 기반 인증 토큰을 로컬로 인증할 수 있거나 또는 대안적으로(동작 224에서), 서버(132)는 인증을 위해 콘텐츠 기반 인증 토큰을 인가 데이터 서비스(124)에 전송할 수 있다. 그 후에, 인가 데이터 서비스(124)는, 예를 들어, 인증 프로세스를 사용하여 콘텐츠 기반 인증 토큰을 인증할 수 있다. 예를 들어, 인가 데이터 서비스(124)는 콘텐츠 기반 토큰을 암호화해제하거나, 콘텐츠 기반 토큰의 암호화 서명을 결정하거나, 인증 콘텐츠 기반 토큰의 스팸 비트를 검사하거나, 그리고/또는 콘텐츠 기반 인증 토큰의 인증과 연관된 임의의 다른 프로세스를 수행할 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)가 계속 재생을 획득하라는 요청을 인가하는 것에 응답하여, 인가 데이터 서비스(124)는 서버(132)로부터 요청된 콘텐츠의 계속 재생을 획득하도록 클라이언트 디바이스(110)를 인가하기 위해 리소스 로케이터를 생성 또는 획득할 수 있다.
콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)가 콘텐츠 기반 인증 토큰을 인증하는 것에 응답하여, 인가 데이터 서비스(124)는 (임의적 동작 226에서) 계속 재생과 연관된 리소스 로케이터(및 재생 이벤트 식별자)를 포함하는 응답을 서버(132)에 전송할 수 있다. 다른 실시예들에서, 인가 데이터 서비스(124)는 동작 212에서의 요청된 콘텐츠에 대한 리소스 로케이터들(각각에는 암호화 서명된 파라미터들이 첨부됨)을 전송하고, 콘텐츠 기반 토큰이 검증되었다는 응답으로 서버(132)에 표시할 수 있다. 동작 228에서, 서버(132)는 계속 재생과 연관된 데이터로 동작 222의 콘텐츠 요청에 응답하거나 또는 계속 재생의 리소스 로케이터를 클라이언트 디바이스(110)에 전송할 수 있다. 그 후에, 클라이언트 디바이스(110)는 리소스 로케이터를 사용하여 서버(132)로부터 계속 재생을 요청할 수 있다. 계속 재생은, 비디오 아이템의 다른 부분(예를 들어, 다음 5초, 다음 10초 등)을 포함할 수 있다.
일부 실시예들에서, CDN(130)은, 예를 들어, 인가 모듈(138)을 사용하여 콘텐츠 기반 토큰의 검증의 전부 또는 일부를 수행할 수 있다. 예를 들어, 인가 모듈(138)은 콘텐츠 기반 인증 토큰을 검증하기 위해 암호화해제 키들 및 라이브러리들을 사용할 수 있다. 이에 따라, CDN(130)은, 임의적 동작들 224 및 226과 관련하여 논의된 바와 같은, 콘텐츠 기반 인증 토큰에 대한 인증 프로세스를 수행하도록 인가 데이터 서비스(124)에 요구하지 않을 것이다.
일부 실시예들에서, CDN(130)은 콘텐츠 기반 인증 토큰이 동반되는 계속 재생을 위해 클라이언트 디바이스(110)로부터의 각각의 추가 요청을 요구할 수 있다. 일부 실시예들에서, 각각의 추가 콘텐츠 요청에 대해 콘텐츠 기반 인증 토큰을 요구하기보다는 오히려, 서버(132)는 그 대신에 세션 기반 인증 토큰을 요구할 수 있다. 예를 들어, 동작 222에서, 클라이언트 디바이스(110)는 비디오 아이템의 나머지 부분("계속 재생")에 대한 요청을 서버(132)에 전송할 수 있고, 여기서 요청은 세션 기반 인증 토큰을 포함할 수 있다. 요청을 수신하고 세션 기반 인증 토큰을 인증하는 것에 응답하여, 서버(132)는 계속 재생과 연관된 데이터로 요청에 응답하거나 또는 계속 재생의 리소스 로케이터를 클라이언트 디바이스(110)에 전송할 수 있다.
일부 실시예들에서, 일단 콘텐츠 기반 인증 토큰이 인증되면, 콘텐츠 공유 플랫폼(120) 및/또는 CDN(130)은 계속 재생을 위한 클라이언트 디바이스(110)로부터의 임의의 추가 요청들에 대해 콘텐츠 기반 인증 토큰을 재인증할 필요가 없다. 클라이언트 디바이스는, 사용자에 의해 전체 콘텐츠가 소비될 때까지, 원하는 콘텐츠에 대한 요청들을 계속 전송할 수 있고, 여기서 각각의 요청에는 콘텐츠 기반 인증 토큰(및 재생 이벤트 식별자)이 동반된다. 일부 실시예들에서, 서버(132)는 요청이 콘텐츠 기반 토큰을 갖고 있지 않을(또는 무효한 그리고/또는 비인증된 콘텐츠 기반 토큰을 가질) 때 계속 재생을 위한 클라이언트 디바이스(110)의 요청을 거부할 수 있다. 일부 실시예들에서, 콘텐츠 기반 인증 토큰을 갖고 있지 않은 요청 또는 무효한 콘텐츠 기반 인증 토큰을 갖는 요청을 수신하는 것에 응답하여, 콘텐츠 공유 플랫폼(120) 및/또는 CDN(130)은 클라이언트 디바이스(110)에 하나 이상의 시행 조치를 부과할 수 있다. 예를 들어, 콘텐츠 공유 플랫폼(120) 및/또는 CDN(130)은 클라이언트 디바이스(110)에 엄격한 대역폭 제한들을 적용하는 것, 재생 품질을 감소시키는 것, DRM 제약을 적용하는 것, ReCaptcha 검증을 요청하는 것, 클라이언트 디바이스(110)의 사용자에게 서명하도록 요청하는 것 등을 할 수 있다.
일부 실시예들에서, 서버(132)(및/또는 인가 데이터 서비스(124))는 상태 추적 테이블을 사용하여 재생 이벤트의 상태를 추적할 수 있다. 특히, 서버(132)는 모든 진행 중인 재생 이벤트의 상태를 이들의 개개의 재생 이벤트 식별자를 통해 추적할 수 있다. 상태 추적 테이블은, 콘텐츠 기반 인증 토큰이 검증되었는지, 검증 계류 중인지, 또는 검증 실패하였는지 여부를 각각의 재생 이벤트 식별자에 대해 표시할 수 있다. 서버(132)는 콘텐츠 기반 인증 토큰이 여전히 검증 계류 중인 경우 계속 재생을 위한 모든 미해결 요청들을 상태 추적 테이블 내에 추가로 로그 기록할 수 있다. 검증 시에, 서버(132)는 계속 재생 이벤트를 릴리스할 수 있다. 서버(132)는 리소스 로케이터의 사용을 위한 만료를 표시하는 만료 파라미터에 응답하여, 상태 추적 테이블로부터 대응하는 재생 이벤트 식별자를 추가로 제거할 수 있다. 일부 실시예들에서, 서버(132)는 캐시 대체 정책들(예를 들어, 선입 선출(first in-first out), 최소 최근 사용(least recently used) 등)과 같은 다른 방법들을 사용하여 상태 추적 테이블로부터 재생 이벤트 식별자를 제거할 수 있다.
도 3은 본 개시내용의 실시예들에 따른, 콘텐츠의 재생을 개시하는 동안 재생의 계속을 가능하게 하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하기 위한 동작들의 다이어그램이다. 시스템(300)은, 도 1의 시스템 아키텍처(100)와 유사한 컴포넌트들을 포함할 수도 있다. 도 1의 컴포넌트들은 도 3을 설명하는 데 도움이 되도록 사용될 수도 있다는 것에 주목할 수도 있다. 제한보다는 오히려 예시의 목적들을 위해, 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124), 콘텐츠 배포 네트워크(130)의 서버 머신(132), 또는 클라이언트 디바이스(110)에 의해 수행되는 것으로서 설명되는 시스템(300)에 대한 동작들은, 달리 설명되지 않는 한, 이들의 임의의 컴포넌트에 의해 수행될 수도 있다. 도 3과 관련하여 설명된 동작들은 제한보다는 오히려 예시를 위해 순차적으로 수행되는 것으로 도시되어 있다. 동작들은 임의의 순서로 수행될 수도 있고 동작들 중 임의의 것은 하나 이상의 다른 동작과 동시에 수행될 수도 있다는 것에 주목할 수도 있다. 일부 구현들에서, 동일하거나, 상이하거나, 더 적거나, 또는 더 많은 수의 동작들이 임의의 순서로 수행될 수도 있다.
동작 302에서, 클라이언트 디바이스(110)는 세션 기반 인증 토큰을 생성한다. 일부 실시예들에서, 세션 기반 인증 토큰은, 클라이언트 디바이스(110)와 연관된 쿠키들을 사용하여 생성될 수 있다. 예를 들어, 사용자는 사용자 계정 정보를 사용하여 콘텐츠 공유 플랫폼(120)에 로그인할 수 있고, 콘텐츠 공유 플랫폼(120)이 사용자 계정을 인가하는 것에 응답하여, 콘텐츠 공유 플랫폼(120)은 사용자 디바이스(120)에 쿠키를 전송할 수 있다. 그 후에, 클라이언트 디바이스(110)는, 토큰 모듈(114)을 통해, 쿠키에 기초하여 세션 기반 인증 토큰을 생성할 수 있다. 다른 실시예들에서, 세션 기반 인증 토큰은 사용자 또는 사용자 계정과 연관된 다른 데이터(예를 들어, 사용자명 및 패스워드, 인터넷 프로토콜(IP) 어드레스 등)를 사용하여 생성될 수 있다.
동작 304에서, 콘텐츠에 대한 사용자 요청에 응답하여, 클라이언트 디바이스(110)는 콘텐츠 기반 인증 토큰의 생성을 개시한다. 콘텐츠 기반 인증 토큰은, 예를 들어, 이전(캐싱된) 재생 이벤트, 콘텐츠 요청을 발행한 애플리케이션, 및 요청된 콘텐츠를 식별하는 콘텐츠 식별자로부터 도출된 정보를 사용하여 생성될 수 있다. 예를 들어, 클라이언트 디바이스(110)의 사용자는, 브라우저 또는 네이티브 애플리케이션과 같은 애플리케이션을 사용하여 콘텐츠 공유 플랫폼(120)에 의해 호스팅되는 비디오 아이템을 플레이하도록 요청할 수 있다. 비디오 아이템에 대한 사용자 요청 시에, 클라이언트 디바이스(110)는, 비디오 아이템을 식별하는 초기 정보를 검색하고 (예를 들어, 식별 정보에 해싱 알고리즘을 적용하는 것에 의한) 콘텐츠 기반 인증 토큰의 생성을 개시할 수 있다. 일부 실시예들에서, 초기 식별은, 클라이언트 디바이스(110)의 GUI에 로드된 데이터로부터 검색될 수 있다. 예를 들어, 사용자는, 재생을 개시하기 위한 버튼(플레이 버튼) 및 비디오 아이템을 디스플레이하는 웹페이지를 로드할 수 있다. 웹페이지는, 비디오 아이템을 식별하는 초기 정보를 포함할 수 있다. 사용자가 비디오 아이템의 재생을 요청하는 것(예를 들어, 플레이 버튼을 선택하는 것)에 응답하여, 클라이언트 디바이스(110)는, GUI에 로드된 데이터로부터의 초기 식별 정보를 사용하여 콘텐츠 기반 인증 토큰의 생성을 개시할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(110)는 콘텐츠 식별자 이외의 데이터를 사용하여 콘텐츠 기반 인증 토큰을 생성하는 것을 시작하고 이에 후속하여 콘텐츠 식별자를 사용할 수 있다. 즉, 콘텐츠 식별자는 콘텐츠에 대한 요청이 전송된 후에 인가 데이터 서비스(124)에 의해 제공될 수 있거나, 또는 클라이언트 디바이스(110)에 의해 수신되는 요청된 콘텐츠의 초기 부분으로부터 클라이언트 디바이스(110)에 의해 도출될 수 있다. 예를 들어, 클라이언트 디바이스(110)는 콘텐츠를 획득하라는 요청을 전송할 수 있고(아래에 논의되는 동작 306), 콘텐츠 식별자가 콘텐츠에 대한 요청에 대한 응답에 포함되거나, 또는 클라이언트 디바이스(110)에 의해 수신되는 요청된 콘텐츠의 초기 부분으로부터 도출될 수 있다. 하나의 예에서, 콘텐츠 기반 토큰을 생성하는 것은 몇 초를 요구할 수 있다.
동작 306에서, 클라이언트 디바이스(110)는 콘텐츠를 획득하라는 요청을 인가 데이터 서비스(124)에 전송할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(110)로부터의 요청은, 수신될 데이터의 포맷을 포함할 수 있다. 예를 들어, 요청은, 클라이언트 디바이스(110)에서 미디어 뷰어(112)와 호환되는 비디오 아이템의 포맷을 포함할 수 있다. 일부 실시예들에서, 요청은, 비디오 아이템과 같은 콘텐츠의 재생을 제공하는 미디어 뷰어(112)와 관련된 추가 정보(예를 들어, 타입, 버전 등)를 포함할 수 있다.
일부 실시예들에서, 콘텐츠 요청은, 동작 302에서 생성된 세션 기반 인증 토큰을 포함할 수 있다. 다른 실시예들에서, 세션 인증 기반 토큰 대신에, 콘텐츠 요청은, 콘텐츠를 획득하려고 시도하는 클라이언트 디바이스(110), 사용자, 또는 사용자 계정의 식별자들을 포함할 수 있다. 예를 들어, 사용자 요청은, 콘텐츠를 획득하라고 요청하는 사용자 계정과 연관된 사용자명 및 패스워드를 식별할 수 있다. 다른 예에서, 요청은, 특정 사용자 계정을 식별하는 데 사용될 수 있는, 사용자 디바이스에서의 애플리케이션 또는 클라이언트 디바이스(110)를 식별하는 쿠키를 포함할 수 있다. 콘텐츠 요청의 수신 시에, 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)는 재생 이벤트를 생성하고 재생 이벤트 식별자를 콘텐츠 요청과 연관시킬 수 있다.
동작 308에서, 콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)는 콘텐츠 요청을 인가할 수 있다. 요청을 인가하기 위해, 인가 데이터 서비스(124)는, 예를 들어, 인증 프로세스를 사용하여 세션 기반 인증 토큰을 인증할 수 있다. 예를 들어, 인증 프로세스를 수행하는 것은, 세션 기반 토큰을 암호화해제하는 것, 세션 기반 토큰의 암호화 서명을 결정하는 것, 세션 기반 토큰의 스팸 비트를 검사하는 것, 및/또는 세션 기반 토큰의 인증과 연관된 임의의 다른 프로세스를 수행하는 것을 포함할 수 있다.
다른 실시예들에서, 인가 데이터 서비스(124)는 클라이언트 디바이스(110), 사용자, 또는 사용자 계정 중 적어도 하나가 콘텐츠를 획득하도록 허용된다는 것을 결정할 수 있다. 일부 실시예들에서, 요청은, 콘텐츠를 획득하라고 요청하는 사용자 계정의 계정 정보를 식별할 수 있다. 예를 들어, 계정 정보는 쿠키에서 암호화될 수 있다. 다른 예에서, 계정 정보는 사용자에 의해 입력되고 요청에 제공될 수 있다. 일부 실시예들에서, 사용자명 및 패스워드와 같은 계정 정보는 계정 정보(예를 들어, 수신된 사용자명 및 패스워드)를 계정 정보의 저장된 레코드와 비교함으로써 인가 데이터 서비스(124)에 의해 인증될 수 있다. 요청의 계정 정보가 레코드의 계정 정보와 매칭하는 경우, 인가 데이터 서비스(124)는 특정 사용자 계정이 인증된다고 결정할 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)가 세션 기반 인증 토큰(또는 식별자들)을 인증하는 것에 실패한 것에 응답하여, 콘텐츠 요청은 콘텐츠 공유 플랫폼(120)에 의해 거부될 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)가 콘텐츠를 획득하라는 요청을 인가하지 않는 경우, 인가 데이터 서비스(124)는, 요청된 콘텐츠를 획득하기 위한 인가가 승인되지 않음을 표시하는 메시지를 클라이언트 디바이스(110)에 전송할 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)가 콘텐츠를 획득하라는 요청을 인가하지 않은 것에 응답하여, 콘텐츠 공유 플랫폼(120)은, 새로운 세션 기반 인증 토큰 또는 새로운 로그인 정보 및/또는 추가 정보를 요청하는 메시지를 클라이언트 디바이스(110)에 전송할 수 있다.
일부 실시예들에서, 세션 기반 인증 토큰의 인증 프로세스 동안 프로세싱된 하나 이상의 파라미터(예를 들어, 사용자 계정, 클라이언트 디바이스 위치, IP 어드레스 등과 관련된 파라미터들)의 검출 또는 인증 세션 기반 토큰(또는 식별자들)을 인증하는 것에 실패한 것에 응답하여, 인가 데이터 서비스(124)는 하나 이상의 액션을 개시할 수 있다. 액션들은, 디지털 저작권 관리(DRM) 제약(예를 들어, CDN 생성된 암호화를 사용하여 DRM 재생이 제공되도록 클라이언트 디바이스(110)에 요구함)을 적용하는 것, 클라이언트 디바이스(110)로부터 ReCaptcha 검증을 요청하는 것, 클라이언트 디바이스(110)의 사용자에게 서명하도록 요청하는 것, 요청된 콘텐츠의 재생을 스로틀링하도록 서버(132)에 명령하는 것, 콘텐츠 기반 토큰이 검증 프로세스에 실패한 것에 응답하여 서버(132)가 비디오 아이템의 나머지 부분("계속 재생")에 대한 요청들을 거부하도록 명령받은 경우 서버(132)에 의해 콘텐츠 기반 토큰의 유효성 검사를 요구하는 것, 콘텐츠 기반 토큰이 검증 프로세스에 실패한 것에 응답하여 서버(132)가 계속 재생을 위한 요청들을 스로틀링하도록 명령받은 경우 서버(132)에 의해 콘텐츠 기반 토큰의 유효성 검사를 요구하는 것, 및 콘텐츠 요청을 거부하는 것을 포함할 수 있다. 다른 실시예들에서, 세션 기반 인증 토큰 또는 클라이언트 디바이스, 사용자, 또는 사용자 계정을 인증하는 것에 응답하여, 인가 데이터 서비스(124)는 어떠한 제약들 없이 전체 콘텐츠의 재생을 가능하게 할 수 있다.
일부 실시예들에서, 인가 데이터 서비스(124)가 콘텐츠를 획득하라는 요청을 인가하는 것에 응답하여, 인가 데이터 서비스(124)는 CDN(130)으로부터 요청된 콘텐츠의 재생을 획득하도록 클라이언트 디바이스(110)를 인가하기 위해 리소스 로케이터를 생성한다. 일부 실시예들에서, 리소스 로케이터(예를 들어, URL(들))는, 클라이언트 디바이스(110)에 요청된 콘텐츠를 전달할 CDN(130)의 서버를 식별할 수 있다. 예를 들어, 리소스 로케이터는, 요청된 콘텐츠의 재생을 획득하기 위해 액세스될 수 있는 특정 서버(예를 들어, 서버(112A), 서버(112B) 등)를 식별하는 호스트명을 포함할 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)는 미리 결정된 양의 시간(예를 들어, 5초) 동안 요청된 콘텐츠의 재생을 클라이언트 디바이스(110)에 제공하기 위해 CDN(130)에 표시하는 데 사용될 수 있는 하나 이상의 암호화 서명된 파라미터를 리소스 로케이터에 첨부할 수 있다. 파라미터들은 클라이언트 디바이스(110)로부터 콘텐츠 기반 토큰을 수신 또는 인증하는 것에 실패한 것에 응답하여, 클라이언트 디바이스(110)에 대한 재생을 종료하도록 CDN(130)에 추가로 표시할 수 있다.
동작 310에서, 사용자 계정이 인가되는 것에 응답하여, 인가 데이터 서비스(124)는 콘텐츠에 대한 요청(예를 들어, 동작 306)에 대한 응답을 클라이언트 디바이스(110)에 전송할 수 있다. 일부 실시예들에서, 응답은, 재생 이벤트 식별자, 및 콘텐츠를 클라이언트 디바이스(110)에 전달할 CDN(130)의 서버(132)를 식별하는 리소스 로케이터를 포함할 수 있다. 일부 실시예들에서, 응답은, 미리 결정된 시간 기간 동안 요청된 콘텐츠의 재생을 클라이언트 디바이스(110)에 제공하고 서버(132)가 상기 시간 기간 내에 콘텐츠 기반 인증 토큰을 수신하는 것에 실패한 경우 재생을 종료하도록 서버(132)에 표시하는 하나 이상의 암호화 서명된 파라미터를 또한 포함할 수 있다. 일부 실시예들에서, 응답은 또한 재생 이벤트 식별자 및/또는 사용자 계정 정보를 포함할 수 있다. 일부 실시예들에서, 리소스 로케이터는 하이퍼텍스트 전송 프로토콜(HTTP) 응답에 포함될 수 있다. 일부 실시예들에서, 인가 데이터 서비스(124)는 응답을 암호화할 수 있다. 일부 실시예들에서, 응답은 하나 이상의 암호화해제 키를 포함할 수 있다. 암호화해제 키들은, 리소스 로케이터들과 연관된 콘텐츠 및/또는 응답을 암호화해제하는 데 사용될 수 있다.
동작 312에서, 클라이언트 디바이스(110)는, 암호화 서명된 파라미터가 첨부된 리소스 로케이터를 사용하여 콘텐츠를 요청할 수 있다. 예를 들어, 클라이언트 디바이스(110)는 리소스 로케이터를 사용하여 HTTP 요청을 전송할 수 있다. 일부 실시예들에서, 요청은 서버(132)에 전송될 수 있다. 일부 실시예들에서, 서버(132)는 클라이언트 디바이스(110)로부터 요청을 수신한다. 요청은, 상술된 바와 같은 암호화 서명된 파라미터가 첨부된 리소스 로케이터를 포함한다.
동작 314에서, 서버(132)는, 암호화 서명된 파라미터에 의해 명령받은 바와 같이, 재생과 연관된 데이터로 클라이언트 디바이스(110)로부터의 요청에 응답할 수 있다. 예를 들어, 응답은 요청된 비디오 아이템을 포함할 수 있다. 동작 316에서, 클라이언트 디바이스(110)는 콘텐츠 기반 인증 토큰의 생성을 완료할 수 있다.
동작 318에서, 클라이언트 디바이스(110)는 콘텐츠 기반 인증 토큰을 서버(132)에 전송할 수 있다. 일부 실시예들에서, 콘텐츠 기반 인증 토큰은 사이드 채널을 사용하여 전송될 수 있다. 예를 들어, 클라이언트 디바이스(110)의 1차 채널이 서버(132)로부터의 재생을 수신하기 위해 사용될 수 있고, 사이드 채널(예를 들어, 별개의 통신 채널, 상이한 포트 등)이 콘텐츠 기반 인증 토큰을 서버(132)에 전송하기 위해 클라이언트 디바이스(110)에 의해 사용될 수 있다.
서버(132)는 콘텐츠 기반 인증 토큰을 로컬로 인증할 수 있거나 또는 대안적으로(임의적 동작 320에서), 서버(132)는 인증을 위해 콘텐츠 기반 인증 토큰을 인가 데이터 서비스(124)에 전송할 수 있다. 그 후에, 인가 데이터 서비스(124)는, 예를 들어, 인증 프로세스를 사용하여 콘텐츠 기반 인증 토큰을 인증할 수 있다. 예를 들어, 인가 데이터 서비스(124)는 콘텐츠 기반 인증 토큰을 암호화해제하거나, 콘텐츠 기반 토큰의 암호화 서명을 결정하거나, 콘텐츠 기반 인증 토큰의 스팸 비트를 검사하거나, 그리고/또는 콘텐츠 기반 인증 토큰의 인증과 연관된 임의의 다른 프로세스를 수행할 수 있다.
콘텐츠 공유 플랫폼(120)의 인가 데이터 서비스(124)가 콘텐츠 기반 인증 토큰을 인증하는 것에 응답하여, 인가 데이터 서비스(124)는 (임의적 동작 322에서) 콘텐츠 기반 인증 토큰의 진위를 검증하는 응답을 서버(132)에 전송할 수 있다. 콘텐츠 기반 토큰이 진본인 것에 응답하여, 서버(132)는 클라이언트 디바이스(110)에 대한 재생을 계속 제공할 수 있다. 콘텐츠 기반 인증 토큰이 무효한 것에 응답하여, 서버(132)는 클라이언트 디바이스(110)에 대한 재생을 종료할 수 있다.
일부 실시예들에서, CDN(130)은, 예를 들어, 인가 모듈(138)을 사용하여 콘텐츠 기반 인증 토큰의 검증의 전부 또는 일부를 수행할 수 있다. 예를 들어, 인가 모듈(138)은 콘텐츠 기반 인증 토큰을 검증하기 위해 암호화해제 키들 및 라이브러리들을 사용할 수 있다. 일부 실시예들에서, 콘텐츠 기반 인증 토큰을 수신하는 것에 실패하거나 또는 무효한 콘텐츠 기반 인증 토큰을 수신하는 것에 응답하여, 콘텐츠 공유 플랫폼(120) 및/또는 CDN(130)은 클라이언트 디바이스(110)에 하나 이상의 시행 조치를 부과할 수 있다. 예를 들어, 콘텐츠 공유 플랫폼(120) 및/또는 CDN(130)은 클라이언트 디바이스(110)에 엄격한 대역폭 제한들을 적용하는 것, 재생 품질을 감소시키는 것, 디지털 저작권 관리(DRM) 제약을 적용하는 것, ReCaptcha 검증을 요청하는 것, 클라이언트 디바이스(110)의 사용자에게 서명하도록 요청하는 것 등을 할 수 있다.
일부 실시예들에서, 서버(132)(및/또는 인가 데이터 서비스(124))는 상태 추적 테이블을 사용하여 재생 이벤트의 상태를 추적할 수 있다. 특히, 서버(132)는 모든 진행 중인 재생 이벤트의 상태를 이들의 개개의 재생 이벤트 식별자를 통해 추적할 수 있다. 상태 추적 테이블은, 콘텐츠 기반 인증 토큰이 검증되었는지, 검증 계류 중인지, 또는 검증 실패하였는지 여부를 각각의 재생 이벤트 식별자에 대해 표시할 수 있다. 서버(132)는 콘텐츠 기반 인증 토큰이 여전히 검증 계류 중인 경우 계속 재생을 위한 모든 미해결 요청들을 상태 추적 테이블 내에 추가로 로그 기록할 수 있다. 일부 실시예들에서, 서버(132)는 콘텐츠 기반 인증 토큰이 수신 및/또는 검증될 때까지 콘텐츠를 뷰잉하기 위한 미리 결정된 시간 기간이 만료된 후에 재생을 일시정지할 수 있다. 검증 시에, 서버(132)는 계속 재생 이벤트를 재개할 수 있다. 서버(132)는 리소스 로케이터의 사용을 위한 만료를 표시하는 만료 파라미터에 응답하여, 상태 추적 테이블로부터 대응하는 재생 이벤트 식별자를 추가로 제거할 수 있다. 일부 실시예들에서, 서버(132)는 캐시 대체 정책들(예를 들어, 선입 선출, 최소 최근 사용 등)과 같은 다른 방법들을 사용하여 상태 추적 테이블로부터 재생 이벤트 식별자를 제거할 수 있다.
도 4는 본 개시내용의 실시예들에 따른, 클라이언트 디바이스 상의 콘텐츠의 초기 재생을 인가하는 동안 나머지 재생을 가능하게 하기 위해 사용될 콘텐츠 기반 인증 토큰을 기다리기 위한 방법(400)의 플로 다이어그램을 도시한다. 이 방법은, 하드웨어(회로부, 전용 로직 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실행되는 명령어들), 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다. 일부 실시예들에서, 방법(400)의 동작들 중 일부 또는 전부가 도 1의 시스템(100)의 하나 이상의 컴포넌트에 의해 수행될 수도 있다. 다른 실시예들에서, 방법(400)의 하나 이상의 동작은 도 1 내지 도 3과 관련하여 설명된 바와 같은 콘텐츠 배포 네트워크(130)의 인가 모듈, 인가 데이터 서비스(124), 또는 초기 재생 모듈(142)에 의해 수행될 수도 있다. 도 1 내지 도 3과 관련하여 설명된 컴포넌트들은 도 4의 양태들을 예시하는 데 사용될 수도 있다는 것에 주목할 수도 있다.
블록 402에서, 프로세싱 로직 구현 방법(400)은 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신한다. 콘텐츠에 대한 요청은, 클라이언트 디바이스와 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함할 수 있다.
블록 404에서, 프로세싱 로직은 세션 기반 인증 토큰을 유효성 검사한다. 예를 들어, 프로세싱 로직은, 세션 기반 인증 토큰을 암호화해제하는 것, 세션 기반 인증 토큰의 암호화 서명을 결정하는 것, 세션 기반 토큰의 스팸 비트를 검사하는 것, 및/또는 세션 기반 인증 토큰의 인증과 연관된 임의의 다른 프로세스를 수행하는 것을 포함할 수 있는 인증 프로세스를 수행할 수 있다.
블록 406에서, 프로세싱 로직은 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 시작되게 한다. 일부 실시예들에서, 요청된 콘텐츠의 재생이 시작되게 하는 것은, 세션 기반 인증 토큰의 유효성 검사 시에, 콘텐츠에 대한 요청을 재생 이벤트의 재생 이벤트 식별자와 연관시키는 것 및 재생 이벤트 식별자와 연관된 응답을 생성하는 것을 포함할 수 있다. 응답은, 요청된 콘텐츠를 획득하기 위한 하나 이상의 리소스 로케이터, 및 요청된 콘텐츠의 초기 부분의 재생을 인가하는 파라미터를 포함할 수 있다. 파라미터는, 요청된 콘텐츠의 추가 부분의 재생을 위해 유효한 콘텐츠 기반 인증 토큰이 요구됨을 추가로 표시할 수 있다. 응답은 재생 이벤트 식별자를 또한 포함할 수 있다. 일부 실시예들에서, 요청된 콘텐츠의 재생이 시작되게 하는 것은, 세션 기반 인증 토큰의 유효성 검사 시에, 클라이언트 디바이스에 요청된 콘텐츠의 초기 부분을 제공/스트리밍하기 시작하기 위한 표시(또는 명령어)를 CDN 서버에 제공하는 것, 및 재생 이벤트 식별자와 연관된 응답을 클라이언트 디바이스에 제공하는 것을 포함할 수 있다. 응답은, 재생 이벤트 식별자, 및 요청된 콘텐츠(예를 들어, 요청된 콘텐츠의 나머지 부분)를 획득하기 위한 하나 이상의 리소스 로케이터를 포함할 수 있다.
일부 실시예들에서, 유효한 콘텐츠 기반 인증 토큰은, 요청된 콘텐츠의 식별자, 콘텐츠에 대한 요청을 발행한 클라이언트 디바이스 애플리케이션의 식별자, 및 클라이언트 디바이스 애플리케이션에 의해 개시된 이전 재생 이벤트와 연관된 데이터에 기초하여 클라이언트 디바이스에 의해 생성될 수 있다. 유효한 콘텐츠 기반 인증 토큰의 생성이 클라이언트 디바이스에서 완료되기 전에 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 시작될 수 있다.
일부 실시예들에서, 응답은, 요청된 콘텐츠의 개개의 추가 부분을 획득하기 위해 각각이 사용되는 다수의 리소스 로케이터들을 포함하고, 파라미터는, 유효한 콘텐츠 기반 인증 토큰이 요청된 콘텐츠의 복수의 추가 부분들 각각을 획득하도록 요구됨을 표시할 수 있다.
다른 실시예들에서, 응답은, 요청된 콘텐츠를 획득하기 위한 단일 리소스 로케이터를 포함하고, 파라미터는, 요청된 콘텐츠의 재생의 종료를 회피하고 요청된 콘텐츠의 추가 부분의 재생을 허용하기 위해 유효한 콘텐츠 기반 인증 토큰이 요청된 콘텐츠의 재생의 시작부로부터 미리 결정된 시간 기간 내에 수신되도록 요구됨을 표시할 수 있다. 유효한 콘텐츠 기반 인증 토큰을 수신하는 것에 실패한 것에 응답하여, 프로세싱 로직은 요청된 콘텐츠의 추가 부분의 재생을 방지할 수 있다.
일부 실시예들에서, 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 계속되게 하는 것은, 클라이언트 디바이스에 의해 공급된 콘텐츠 기반 인증 토큰을 수신하는 것, 콘텐츠 기반 인증 토큰을 유효성 검사하는 것, 및 콘텐츠 기반 인증 토큰이 유효함을 CDN 서버(예를 들어, 서버(132))에 통지하는 것을 포함한다. 다른 실시예들에서, 콘텐츠 기반 인증 토큰은 CDN(130)의 인가 모듈(138) 또는 제3자 서비스를 사용하여 유효성 검사될 수 있다.
블록 408에서, 유효한 콘텐츠 기반 인증 토큰이 클라이언트 디바이스에 의해 공급된 것에 응답하여, 프로세싱 로직은 요청된 콘텐츠의 재생이 클라이언트 디바이스에서 계속되게 한다. 유효한 콘텐츠 기반 인증 토큰은 요청된 콘텐츠의 식별자에 기초할 수 있다. 일부 실시예들에서, 식별자는, 클라이언트 디바이스에 전송된 콘텐츠로부터 클라이언트 디바이스에 의해 도출될 수 있다. 대안적으로, 유효한 콘텐츠 기반 인증 토큰을 수신하는 것에 실패한 것에 응답하여, 상기에 더 상세히 논의된 바와 같이, 요청된 콘텐츠의 추가 부분의 재생이 금지된다.
도 5는 본 개시내용의 실시예들에 따른, 재생을 요청하는 동안 재생의 종료를 방지하기 위해 사용될 콘텐츠 기반 인증 토큰을 생성하기 위한 방법(500)의 플로 다이어그램을 도시한다. 이 방법은, 하드웨어(회로부, 전용 로직 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실행되는 명령어들), 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다. 일부 실시예들에서, 방법(500)의 동작들 중 일부 또는 전부가 도 1의 시스템(100)의 하나 이상의 컴포넌트에 의해 수행될 수도 있다. 다른 실시예들에서, 방법(500)의 하나 이상의 동작은 도 1 내지 도 3과 관련하여 설명된 바와 같은 콘텐츠 배포 네트워크(130)의 인가 모듈 및/또는 인가 데이터 서비스(124)에 의해 수행될 수도 있다. 도 1 내지 도 3과 관련하여 설명된 컴포넌트들은 도 5의 양태들을 예시하는 데 사용될 수도 있다는 것에 주목할 수도 있다.
블록 502에서, 프로세싱 로직 구현 방법(500)은 원하는 콘텐츠를 식별하는 사용자 입력을 수신한다. 예를 들어, 클라이언트 디바이스의 사용자는, 브라우저 또는 네이티브 애플리케이션과 같은 애플리케이션을 사용하여 콘텐츠 공유 플랫폼에 의해 호스팅되는 비디오 아이템 또는 오디오 아이템을 플레이하도록 요청할 수 있다.
블록 504에서, 프로세싱 로직은, 원하는 콘텐츠에 기초하는 콘텐츠 기반 인증 토큰의 생성을 개시한다. 일부 실시예들에서, 콘텐츠 기반 인증 토큰은, 원하는 콘텐츠의 식별자, 원하는 콘텐츠에 대한 제1 요청을 발행한 클라이언트 디바이스 애플리케이션의 식별자, 및/또는 클라이언트 디바이스 애플리케이션에 의해 개시된 이전 재생 이벤트와 연관된 데이터에 기초하여 프로세싱 로직에 의해 생성될 수 있다.
블록 506에서, 프로세싱 로직은 원하는 콘텐츠에 대한 제1 요청을 콘텐츠 공유 플랫폼에 전송한다. 제1 요청은, 클라이언트 디바이스와 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함할 수 있다.
블록 508에서, 프로세싱 로직은 콘텐츠 공유 플랫폼으로부터 원하는 콘텐츠의 초기 부분을 수신한다. 추가적으로, 일부 실시예들에서, 프로세싱 로직은 원하는 콘텐츠에 대한 제1 요청에 대한 콘텐츠 공유 플랫폼의 응답을 수신할 수 있다. 응답은, 원하는 콘텐츠(예를 들어, 요청된 콘텐츠의 나머지 부분)를 획득하기 위한 하나 이상의 리소스 로케이터 및 제1 요청과 연관된 재생 이벤트의 재생 이벤트 식별자를 포함할 수 있다. 일부 실시예들에서, 응답은, 원하는 콘텐츠의 개개의 부분을 획득하기 위해 각각이 사용되는 다수의 리소스 로케이터들을 포함한다. 다른 실시예들에서, 응답은, 원하는 콘텐츠를 획득하기 위한 단일 리소스 로케이터를 포함한다.
블록 510에서, 프로세싱 로직은 초기 부분을 사용하여 원하는 콘텐츠의 재생을 개시한다. 콘텐츠 기반 인증 토큰의 생성이 클라이언트 디바이스에서 완료되기 전에 원하는 콘텐츠의 재생이 시작될 수 있다.
블록 512에서, 프로세싱 로직은, 콘텐츠 기반 인증 토큰의 생성의 완료 시에, 원하는 콘텐츠의 추가 부분에 대한 제2 요청을 전송한다. 제2 요청은 콘텐츠 기반 인증 토큰을 포함한다. 일부 실시예들에서, 추가 부분에 대한 제2 요청은 리소스 로케이터들의 개개의 것을 포함한다. 제2 요청은 원하는 콘텐츠의 더 많은 추가 부분을 획득하기 위해 콘텐츠 기반 인증 토큰 및 개개의 리소스 로케이터와 함께 반복적으로 전송될 수 있다.
다른 실시예들에서, 응답은 단일 리소스 로케이터를 포함하고, 제2 요청은 원하는 콘텐츠의 재생의 종료를 회피하기 위해 원하는 콘텐츠의 재생의 시작부로부터 미리 결정된 시간 기간 내에 콘텐츠 기반 인증 토큰과 함께 전송되도록 요구된다.
블록 514에서, 프로세싱 로직은 원하는 콘텐츠의 추가 부분을 수신한다.
블록 516에서, 프로세싱 로직은 추가 부분을 사용하여 원하는 콘텐츠의 재생을 계속한다.
도 6은 본 개시내용의 일 실시예에 따른, 예시적인 컴퓨터 시스템(600)을 예시하는 블록 다이어그램이다. 컴퓨터 시스템(600)은, 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 하나 이상의 세트의 명령어들을 실행한다. 명령어들의 세트, 명령어들, 및 이와 유사한 것은, 컴퓨터 시스템(600)이 실행될 때, 컴퓨터 시스템(600)으로 하여금 초기 재생 모듈(142)(도시되지 않음), 인가 모듈(138), 및/또는 인가 데이터 서비스(124)(도시되지 않음)의 하나 이상의 동작을 수행하게 하는 명령어들을 지칭할 수도 있다. 머신은 클라이언트-서버 네트워크 환경에서의 서버 또는 클라이언트 디바이스의 자격으로, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서의 피어 머신으로서 동작할 수도 있다. 머신은, 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 휴대 정보 단말기(personal digital assistant)(PDA), 모바일 전화기, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 임의의 머신에 의해 취해질 액션들을 특정하는 한 세트의 명령어들(순차적 또는 다른 것)을 실행하는 것이 가능한 그 임의의 머신일 수도 있다. 추가로, 단지 단일 머신이 예시되어 있지만, "머신"이라는 용어는, 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 콜렉션을 포함하는 것으로 또한 간주되어야 한다.
컴퓨터 시스템(600)은, 프로세싱 디바이스(602), 메인 메모리(604)(예를 들어, 판독 전용 메모리(read-only memory)(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(dynamic random access memory)(DRAM) 예컨대 동기식 DRAM(synchronous DRAM)(SDRAM) 또는 램버스 DRAM(Rambus DRAM)(RDRAM) 등), 정적 메모리(606)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(static random access memory)(SRAM) 등), 및 데이터 저장 디바이스(616)를 포함하는데, 이들은 버스(608)를 통해 서로 통신한다.
프로세싱 디바이스(602)는 마이크로프로세서, 중앙 프로세싱 유닛, 또는 이와 유사한 것과 같은 하나 이상의 범용 프로세싱 디바이스를 표현한다. 더 구체적으로는, 프로세싱 디바이스(602)는 복합 명령어 세트 컴퓨팅(complex instruction set computing)(CISC) 마이크로프로세서, 축소 명령어 세트 컴퓨팅(reduced instruction set computing)(RISC) 마이크로프로세서, 매우 긴 명령어 워드(very long instruction word)(VLIW) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세싱 디바이스, 또는 명령어 세트들의 조합을 구현하는 프로세싱 디바이스들일 수도 있다. 프로세싱 디바이스(602)는 또한, 주문형 집적 회로(application specific integrated circuit)(ASIC), 필드 프로그래밍가능 게이트 어레이(field programmable gate array)(FPGA), 디지털 신호 프로세서(digital signal processor)(DSP), 네트워크 프로세서, 또는 이와 유사한 것과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수도 있다. 프로세싱 디바이스(602)는 본 명세서에서 논의된 동작들을 수행하기 위해 시스템 아키텍처(100) 및 인가 모듈(151)의 명령어들을 실행하도록 구성된다.
컴퓨터 시스템(600)은, 근거리 네트워크(LAN), 인트라넷, 엑스트라넷, 또는 인터넷과 같은 네트워크(618)를 통해 다른 머신들과의 통신을 제공하는 네트워크 인터페이스 디바이스(622)를 더 포함할 수도 있다. 컴퓨터 시스템(600)은, 디스플레이 디바이스(610)(예를 들어, 액정 디스플레이(liquid crystal display)(LCD) 또는 음극선관(cathode ray tube)(CRT)), 영숫자 입력 디바이스(612)(예를 들어, 키보드), 커서 제어 디바이스(614)(예를 들어, 마우스), 및 신호 생성 디바이스(620)(예를 들어, 스피커)를 또한 포함할 수도 있다.
데이터 저장 디바이스(616)는, 본 명세서에서 설명되는 방법론들 또는 기능들 중 임의의 하나 이상을 구체화하는 인가 모듈(138)의 또는 시스템 아키텍처(100)의 명령어들의 세트들이 저장되는 비일시적 컴퓨터 판독가능 저장 매체(624)를 포함할 수도 있다. 인가 모듈(138)의 또는 시스템 아키텍처(100)의 명령어들의 세트들은 또한, 컴퓨터 시스템(600)에 의한 실행 동안 메인 메모리(604) 내에 그리고/또는 프로세싱 디바이스(602) 내에 완전히 또는 적어도 부분적으로 상주할 수도 있고, 메인 메모리(604) 및 프로세싱 디바이스(602)는 또한 컴퓨터 판독가능 저장 매체들을 구축한다. 명령어들의 세트들은 네트워크 인터페이스 디바이스(622)를 통해 네트워크(618)에 걸쳐 추가로 송신 또는 수신될 수도 있다.
컴퓨터 판독가능 저장 매체(624)의 예가 단일 매체로서 도시되어 있지만, "컴퓨터 판독가능 저장 매체"라는 용어는, 명령어들의 세트들을 저장하는 단일 매체 또는 다수의 매체들(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)을 포함할 수 있다. "컴퓨터 판독가능 저장 매체"라는 용어는, 머신에 의한 실행을 위해 한 세트의 명령어들을 저장, 인코딩 또는 반송하는 것이 가능하고, 머신으로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함할 수 있다. "컴퓨터 판독가능 저장 매체"라는 용어는 솔리드-스테이트 메모리들, 광학 매체들, 및 자기 매체들을 포함하지만, 이들로 제한될 수 없다.
전술한 설명에서, 수많은 세부사항들이 제시된다. 그러나, 본 개시내용의 이익을 갖는 본 기술분야의 통상의 기술자에게는 본 개시내용이 이들 특정 세부사항들 없이 실시될 수도 있다는 것이 명백할 것이다. 일부 경우들에서, 잘 알려진 구조체들 및 디바이스들은 본 개시내용을 모호하게 하는 것을 회피하기 위해 상세히보다는 오히려 블록 다이어그램 형태로 도시된다.
상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 상징적 표현들 및 알고리즘들의 관점에서 제시되었다. 이들 알고리즘적 설명들 및 표현들은 데이터 프로세싱 분야들의 통상의 기술자에 의해 사용되어 이들의 작업의 본질을 본 기술분야의 다른 통상의 기술자에게 가장 효과적으로 전달하는 수단이다. 알고리즘이 여기에서는, 그리고 일반적으로는, 원하는 결과로 이어지는 동작들의 일관성 있는 시퀀스인 것으로 간주된다. 동작들은 물리적인 양들의 물리적인 조작들을 요구하는 것들이다. 통상적으로, 반드시 그런 것은 아니지만, 이들 양들은 저장, 전송, 조합, 비교, 그리고 이와 달리 조작되는 것이 가능한 전기적 또는 자기적 신호들의 형태를 취한다. 주로 통상적인 사용의 이유로, 이들 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 항들, 숫자들, 또는 이와 유사한 것으로 지칭하는 것이 때때로 편리한 것으로 입증되었다.
그러나, 이들 그리고 유사한 용어들 모두는 적절한 물리적인 양들과 연관되어야 하고, 단지 이들 양들에 적용된 편리한 레이블들일 뿐이라는 것을 염두에 둘 수도 있다. 구체적으로 달리 언급되지 않는 한, 설명 전반에 걸쳐, "생성하는 것", "제공하는 것", "조정하는 것", "수신하는 것", "취소하는 것", 또는 이와 유사한 것과 같은 용어들을 이용하는 논의들은, 컴퓨터 시스템 메모리들 또는 레지스터들 내의 물리적인(예를 들어, 전자) 양들로서 표현되는 데이터를, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 송신 또는 디스플레이 디바이스들 내의 물리적인 양들로서 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 액션들 및 프로세스들을 지칭한다는 것을 인식한다.
본 개시내용은 또한 본 명세서의 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 요구된 목적들을 위해 특수하게 구축될 수도 있거나, 또는 그것은, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성되는 범용 컴퓨터를 포함할 수도 있다. 그러한 컴퓨터 프로그램은, 플로피 디스크, 광학 디스크, 콤팩트 디스크 판독 전용 메모리(compact disc read-only memory)(CD-ROM), 자기-광학 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거가능 프로그래밍가능 판독 전용 메모리(erasable programmable read-only memory)(EPROM), 전기적 소거가능 프로그래밍가능 판독 전용 메모리(electrically erasable programmable read-only memory)(EEPROM), 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 타입의 매체들을 포함하는 임의의 타입의 디스크와 같은 - 그러나 이에 제한되지 않음 - 컴퓨터 판독가능 저장 매체에 저장될 수도 있다.
"예(example)" 또는 "예시적(exemplary)"이라는 단어들은 본 명세서에서 예, 경우, 또는 예시로서 기능하는 것을 의미하기 위해 사용된다. 본 명세서에서 "예" 또는 "예시적"인 것으로서 설명되는 임의의 양태 또는 설계는 반드시 다른 양태들 또는 설계들보다 선호되거나 또는 유리한 것으로 해석될 필요는 없다. 오히려, "예" 또는 "예시적"이라는 단어들의 사용은 구체적인 방식으로 개념들을 제시하도록 의도된다. 본 출원에서 사용되는 바와 같이, "또는(or)"이라는 용어는 배타적 "또는"보다는 오히려 포괄적 "또는"을 의미하도록 의도된다. 즉, 다르게 특정되거나, 또는 문맥으로부터 명확하지 않은 한, "X는 A 또는 B를 포함한다"라는 것은 자연 포괄적 순열(natural inclusive permutation)들 중 임의의 것을 의미하도록 의도된다. 즉, X가 A를 포함하거나; X가 B를 포함하거나; 또는 X가 A와 B 양측 모두를 포함하는 경우, 그러면 "X는 A 또는 B를 포함한다"라는 것은 전술한 경우들 중 임의의 것 하에서 만족된다. 추가적으로, 본 출원 및 첨부된 청구범위에서 사용되는 바와 같이 관사들 "a" 및 "an"은 일반적으로, 다르게 특정되거나 또는 문맥으로부터 단수 형태에 관련된 것이 명확하지 않은 한, "하나 이상"을 의미하는 것으로 해석될 수도 있다. 더욱이, 전반에 걸친 "일 실시예(an embodiment)" 또는 "하나의 실시예(one embodiment)" 또는 "일 구현(an implementation)" 또는 "하나의 구현(one implementation)"이라는 용어의 사용은, 그와 같이 설명되지 않는 한, 동일한 실시예 또는 구현을 의미하는 것으로 의도되지 않는다. 본 명세서에서 사용되는 바와 같이 "제1", "제2", "제3", "제4" 등의 용어들은 상이한 요소들 간을 구별하기 위한 레이블들로서 의도된 것이고, 반드시 이들의 수치 지정에 따른 서수 의미를 갖는 것은 아닐 수도 있다.
설명의 단순화를 위해, 본 명세서의 방법들은 일련의 액트(act)들 또는 동작들로서 도시 및 설명된다. 그러나, 본 개시내용에 따른 액트들은 다양한 순서들로 그리고/또는 동시에, 그리고 본 명세서에 제시 및 설명되지 않은 다른 액트들과 함께 발생할 수 있다.
게다가, 개시된 청구 대상에 따라 방법들을 구현하기 위해 모든 예시된 액트들이 요구되는 것은 아닐 수도 있다. 추가적으로, 본 기술분야의 통상의 기술자는 방법들이 상태 다이어그램 또는 이벤트들을 통해 일련의 상호관련된 상태들로서 대안적으로 표현될 수 있다는 것을 이해하고 인식할 것이다. 추가적으로, 본 명세서에 개시된 방법들은 그러한 방법들을 컴퓨팅 디바이스들로 이송 및 전송하는 것을 용이하게 하기 위해 제조 물품 상에 저장되는 것이 가능하다는 것이 인식되어야 한다. 본 명세서에서 사용되는 바와 같이, 제조 물품이라는 용어는 임의의 컴퓨터 판독가능 디바이스 또는 저장 매체들로부터 액세스가능한 컴퓨터 프로그램을 포괄하도록 의도된다.
추가 실시예들에서, 상술된 실시예들의 동작들을 수행하기 위한 하나 이상의 프로세싱 디바이스가 개시된다. 추가적으로, 본 개시내용의 실시예들에서, 비일시적 컴퓨터 판독가능 저장 매체는, 설명된 실시예들의 동작들을 수행하기 위한 명령어들을 저장한다. 또한 다른 실시예들에서, 설명된 실시예들의 동작들을 수행하기 위한 시스템들이 또한 개시된다.
상기의 설명은 제약적인 것이 아니라 예시적인 것으로 의도된다는 것이 이해되어야 한다. 다른 실시예들이 상기의 설명의 판독 및 이해 시에 본 기술분야의 통상의 기술자에게 명백할 것이다. 그에 따라, 본 개시내용의 범주는, 첨부된 청구범위가 부여받는 등가물들의 전체 범주와 함께, 그러한 청구범위를 참조하여 결정될 수도 있다.

Claims (23)

  1. 방법으로서,
    콘텐츠 공유 플랫폼에 의해, 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신하는 단계 - 상기 콘텐츠에 대한 요청은, 상기 클라이언트 디바이스와 상기 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함함 -;
    상기 세션 기반 인증 토큰을 유효성 검사(validating)하는 단계;
    상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 시작되게 하는 단계; 및
    유효한 콘텐츠 기반 인증 토큰이 상기 클라이언트 디바이스에 의해 공급된 것에 응답하여, 상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 계속되게 하는 단계
    를 포함하고,
    상기 유효한 콘텐츠 기반 인증 토큰은 상기 요청된 콘텐츠의 식별자에 기초하는, 방법.
  2. 제1항에 있어서,
    상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 시작되게 하는 단계는:
    상기 세션 기반 인증 토큰의 유효성 검사 시에, 상기 콘텐츠에 대한 요청을 재생 이벤트의 재생 이벤트 식별자와 연관시키는 단계; 및
    상기 재생 이벤트 식별자와 연관된 응답을 생성하는 단계
    를 포함하고,
    상기 응답은, 상기 요청된 콘텐츠를 획득하기 위한 하나 이상의 리소스 로케이터, 및 상기 요청된 콘텐츠의 초기 부분의 재생을 인가(authorizing)하고 상기 유효한 콘텐츠 기반 인증 토큰이 상기 요청된 콘텐츠의 추가 부분의 재생을 위해 요구됨을 표시하는 파라미터를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 응답은, 상기 요청된 콘텐츠의 복수의 추가 부분들의 개개의 것을 획득하기 위해 각각이 사용되는 복수의 리소스 로케이터들을 포함하고, 상기 파라미터는, 상기 유효한 콘텐츠 기반 인증 토큰이 상기 요청된 콘텐츠의 복수의 추가 부분들 각각을 획득하도록 요구됨을 표시하는, 방법.
  4. 제2항에 있어서,
    상기 응답은, 상기 요청된 콘텐츠를 획득하기 위한 단일 리소스 로케이터를 포함하고, 상기 파라미터는, 상기 요청된 콘텐츠의 재생의 종료를 회피하고 상기 요청된 콘텐츠의 추가 부분의 재생을 허용하기 위해 상기 유효한 콘텐츠 기반 인증 토큰이 상기 요청된 콘텐츠의 재생의 시작부로부터 미리 결정된 시간 기간 내에 수신되도록 요구됨을 표시하는, 방법.
  5. 제2항에 있어서,
    상기 유효한 콘텐츠 기반 인증 토큰을 수신하는 것에 실패한 것에 응답하여, 상기 요청된 콘텐츠의 추가 부분의 재생을 방지하는 단계
    를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 계속되게 하는 단계는:
    상기 클라이언트 디바이스에 의해 공급된 콘텐츠 기반 인증 토큰을 수신하는 단계;
    상기 콘텐츠 기반 인증 토큰을 유효성 검사하는 단계; 및
    상기 콘텐츠 기반 인증 토큰이 유효함을 콘텐츠 전달 네트워크(content delivery network)(CDN) 서버에 통지하는 단계
    를 포함하는, 방법.
  7. 제2항에 있어서,
    상기 유효한 콘텐츠 기반 인증 토큰은, 상기 요청된 콘텐츠의 식별자, 상기 콘텐츠에 대한 요청을 발행한 클라이언트 디바이스 애플리케이션의 식별자, 및 상기 클라이언트 디바이스 애플리케이션에 의해 개시된 이전 재생 이벤트와 연관된 데이터에 기초하여 상기 클라이언트 디바이스에 의해 생성되는, 방법.
  8. 제1항에 있어서,
    상기 요청된 콘텐츠의 재생은 상기 유효한 콘텐츠 기반 인증 토큰의 생성이 상기 클라이언트 디바이스에서 완료되기 전에 상기 클라이언트 디바이스에서 시작되는, 방법.
  9. 방법으로서,
    클라이언트 디바이스에 의해, 원하는 콘텐츠를 식별하는 사용자 입력을 수신하는 단계;
    상기 클라이언트 디바이스에 의해, 상기 원하는 콘텐츠에 기초하는 콘텐츠 기반 인증 토큰의 생성을 개시하는 단계;
    상기 클라이언트 디바이스에 의해, 상기 원하는 콘텐츠에 대한 제1 요청을 콘텐츠 공유 플랫폼에 전송하는 단계 - 상기 제1 요청은, 상기 클라이언트 디바이스와 상기 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함함 -;
    상기 클라이언트 디바이스에 의해, 상기 콘텐츠 공유 플랫폼으로부터 상기 원하는 콘텐츠의 초기 부분을 수신하는 단계;
    상기 클라이언트 디바이스에서, 상기 초기 부분을 사용하여 상기 원하는 콘텐츠의 재생을 개시하는 단계;
    상기 콘텐츠 기반 인증 토큰의 생성의 완료 시에, 상기 원하는 콘텐츠의 추가 부분에 대한 제2 요청을 전송하는 단계 - 상기 제2 요청은 상기 콘텐츠 기반 인증 토큰을 포함함 -;
    상기 원하는 콘텐츠의 추가 부분을 수신하는 단계; 및
    상기 추가 부분을 사용하여 상기 원하는 콘텐츠의 재생을 계속하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 원하는 콘텐츠에 대한 제1 요청에 대한 상기 콘텐츠 공유 플랫폼의 응답을 수신하는 단계
    를 더 포함하고,
    상기 응답은, 상기 원하는 콘텐츠를 획득하기 위한 하나 이상의 리소스 로케이터 및 상기 제1 요청과 연관된 재생 이벤트의 재생 이벤트 식별자를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 응답은, 상기 원하는 콘텐츠의 복수의 추가 부분들의 개개의 것을 획득하기 위해 각각이 사용되는 복수의 리소스 로케이터들을 포함하고, 상기 추가 부분에 대한 제2 요청은, 상기 복수의 리소스 로케이터들의 개개의 것을 포함하고, 상기 제2 요청은 상기 원하는 콘텐츠의 더 많은 추가 부분들을 획득하기 위해 상기 콘텐츠 기반 인증 토큰 및 개개의 리소스 로케이터와 함께 반복적으로 전송되는, 방법.
  12. 제10항에 있어서,
    상기 응답은, 상기 원하는 콘텐츠를 획득하기 위한 단일 리소스 로케이터를 포함하고, 상기 추가 부분에 대한 제2 요청은 상기 단일 리소스 로케이터를 포함하고, 상기 제2 요청은 상기 원하는 콘텐츠의 재생의 종료를 회피하기 위해 상기 원하는 콘텐츠의 재생의 시작부로부터 미리 결정된 시간 기간 내에 상기 콘텐츠 기반 인증 토큰과 함께 전송되도록 요구되는, 방법.
  13. 제10항에 있어서,
    상기 원하는 콘텐츠의 식별자, 상기 원하는 콘텐츠에 대한 제1 요청을 발행한 클라이언트 디바이스 애플리케이션의 식별자, 및 상기 클라이언트 디바이스 애플리케이션에 의해 개시된 이전 재생 이벤트와 연관된 데이터에 기초하여 상기 클라이언트 디바이스에 의해 유효한 콘텐츠 기반 인증 토큰이 생성되는, 방법.
  14. 제9항에 있어서,
    상기 원하는 콘텐츠의 재생은 상기 콘텐츠 기반 인증 토큰의 생성이 상기 클라이언트 디바이스에서 완료되기 전에 시작되는, 방법.
  15. 시스템으로서,
    메모리; 및
    상기 메모리에 커플링되는 프로세싱 디바이스
    를 포함하고,
    상기 프로세싱 디바이스는:
    콘텐츠 공유 플랫폼에 의해, 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신하고 - 상기 콘텐츠에 대한 요청은, 상기 클라이언트 디바이스와 상기 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함함 -;
    상기 세션 기반 인증 토큰을 유효성 검사하고;
    상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 시작되게 하고;
    유효한 콘텐츠 기반 인증 토큰이 상기 클라이언트 디바이스에 의해 공급된 것에 응답하여, 상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 계속되게 하기 위한 것이고,
    상기 유효한 콘텐츠 기반 인증 토큰은 상기 요청된 콘텐츠의 식별자에 기초하는, 시스템.
  16. 제15항에 있어서,
    상기 요청된 콘텐츠의 재생이 상기 클라이언트 디바이스에서 시작되게 하는 것은, 상기 프로세싱 디바이스가 추가로:
    상기 세션 기반 인증 토큰의 유효성 검사 시에, 상기 콘텐츠에 대한 요청을 재생 이벤트의 재생 이벤트 식별자와 연관시키고;
    상기 재생 이벤트 식별자와 연관된 응답을 생성하도록
    동작하는 것을 포함하고,
    상기 응답은, 상기 요청된 콘텐츠를 획득하기 위한 하나 이상의 리소스 로케이터, 및 상기 요청된 콘텐츠의 초기 부분의 재생을 인가하고 상기 유효한 콘텐츠 기반 인증 토큰이 상기 요청된 콘텐츠의 추가 부분의 재생을 위해 요구됨을 표시하는 파라미터를 포함하는, 시스템.
  17. 제16항에 있어서,
    상기 응답은, 상기 요청된 콘텐츠의 복수의 추가 부분들의 개개의 것을 획득하기 위해 각각이 사용되는 복수의 리소스 로케이터들을 포함하고, 상기 파라미터는, 상기 유효한 콘텐츠 기반 인증 토큰이 상기 요청된 콘텐츠의 복수의 추가 부분들 각각을 획득하도록 요구됨을 표시하는, 시스템.
  18. 제16항에 있어서,
    상기 응답은, 상기 요청된 콘텐츠를 획득하기 위한 단일 리소스 로케이터를 포함하고, 상기 파라미터는, 상기 요청된 콘텐츠의 재생의 종료를 회피하고 상기 요청된 콘텐츠의 추가 부분의 재생을 허용하기 위해 상기 유효한 콘텐츠 기반 인증 토큰이 상기 요청된 콘텐츠의 재생의 시작부로부터 미리 결정된 시간 기간 내에 수신되도록 요구됨을 표시하는, 시스템.
  19. 제16항에 있어서,
    상기 프로세싱 디바이스는 추가로:
    상기 유효한 콘텐츠 기반 인증 토큰을 수신하는 것에 실패한 것에 응답하여, 상기 요청된 콘텐츠의 추가 부분의 재생을 방지하도록
    동작하는, 시스템.
  20. 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 명령어들은, 프로세싱 디바이스에 의한 실행에 응답하여, 상기 프로세싱 디바이스로 하여금 동작들을 수행하게 하고,
    상기 동작들은:
    원하는 콘텐츠를 식별하는 사용자 입력을 수신하는 동작;
    상기 원하는 콘텐츠에 기초하는 콘텐츠 기반 인증 토큰의 생성을 개시하는 동작;
    상기 원하는 콘텐츠에 대한 제1 요청을 콘텐츠 공유 플랫폼에 전송하는 동작 - 상기 제1 요청은, 클라이언트 디바이스와 상기 콘텐츠 공유 플랫폼 사이의 세션과 관련된 세션 기반 인증 토큰을 포함함 -;
    상기 콘텐츠 공유 플랫폼으로부터 상기 원하는 콘텐츠의 초기 부분을 수신하는 동작;
    상기 초기 부분을 사용하여 상기 원하는 콘텐츠의 재생을 개시하는 동작;
    상기 콘텐츠 기반 인증 토큰의 생성의 완료 시에, 상기 원하는 콘텐츠의 추가 부분에 대한 제2 요청을 전송하는 동작 - 상기 제2 요청은 상기 콘텐츠 기반 인증 토큰을 포함함 -;
    상기 원하는 콘텐츠의 추가 부분을 수신하는 동작; 및
    상기 추가 부분을 사용하여 상기 원하는 콘텐츠의 재생을 계속하는 동작
    을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  21. 제20항에 있어서,
    상기 명령어들은 상기 프로세싱 디바이스로 하여금:
    상기 원하는 콘텐츠에 대한 제1 요청에 대한 상기 콘텐츠 공유 플랫폼의 응답을 수신하는 동작
    을 포함하는 동작들을 추가로 수행하게 하고,
    상기 응답은, 상기 원하는 콘텐츠를 획득하기 위한 하나 이상의 리소스 로케이터 및 상기 제1 요청과 연관된 재생 이벤트의 재생 이벤트 식별자를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  22. 제21항에 있어서,
    상기 응답은, 상기 원하는 콘텐츠의 복수의 추가 부분들의 개개의 것을 획득하기 위해 각각이 사용되는 복수의 리소스 로케이터들을 포함하고, 상기 추가 부분에 대한 제2 요청은, 상기 복수의 리소스 로케이터들의 개개의 것을 포함하고, 상기 제2 요청은 상기 원하는 콘텐츠의 더 많은 추가 부분들을 획득하기 위해 상기 콘텐츠 기반 인증 토큰 및 개개의 리소스 로케이터와 함께 반복적으로 전송되는, 비일시적 컴퓨터 판독가능 매체.
  23. 제21항에 있어서,
    상기 응답은, 상기 원하는 콘텐츠를 획득하기 위한 단일 리소스 로케이터를 포함하고, 상기 추가 부분에 대한 제2 요청은 상기 단일 리소스 로케이터를 포함하고, 상기 제2 요청은 상기 원하는 콘텐츠의 재생의 종료를 회피하기 위해 상기 원하는 콘텐츠의 재생의 시작부로부터 미리 결정된 시간 기간 내에 상기 콘텐츠 기반 인증 토큰과 함께 전송되도록 요구되는, 비일시적 컴퓨터 판독가능 매체.
KR1020237023030A 2021-03-03 2022-03-02 분산형 컴퓨팅 시스템에서 클라이언트 인증 프로세스동안 콘텐츠를 전달하기 위한 시스템들 및 방법들 KR20230118627A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/191,335 US11606590B2 (en) 2021-03-03 2021-03-03 Systems and methods to deliver content during client authentication process in a distributed computing system
US17/191,335 2021-03-03
PCT/US2022/018568 WO2022187396A1 (en) 2021-03-03 2022-03-02 Systems and methods to deliver content during client authentication process in a distributed computing system

Publications (1)

Publication Number Publication Date
KR20230118627A true KR20230118627A (ko) 2023-08-11

Family

ID=80929002

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237023030A KR20230118627A (ko) 2021-03-03 2022-03-02 분산형 컴퓨팅 시스템에서 클라이언트 인증 프로세스동안 콘텐츠를 전달하기 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (2) US11606590B2 (ko)
EP (1) EP4241183A1 (ko)
JP (1) JP2024509496A (ko)
KR (1) KR20230118627A (ko)
CN (1) CN116685968A (ko)
TW (1) TWI832168B (ko)
WO (1) WO2022187396A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240223820A1 (en) * 2022-12-29 2024-07-04 Dish Network Technologies India Private Limited Quicker startup

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1356622B1 (en) 2000-11-10 2012-04-04 AOL MusicNow LLC Digital content distribution and subscription system
US9219729B2 (en) 2004-05-19 2015-12-22 Philip Drope Multimedia network system with content importation, content exportation, and integrated content management
TWI393406B (zh) * 2009-04-10 2013-04-11 Univ Nat Central Integrating mobile content sharing and delivery system and its method in integrated network environment
US8959605B2 (en) * 2011-12-14 2015-02-17 Apple Inc. System and method for asset lease management
US10778663B2 (en) * 2013-03-15 2020-09-15 Cox Communications, Inc. Network token authentication scheme
US10108788B2 (en) * 2013-09-10 2018-10-23 Netflix, Inc. Fast-expiring licenses used to speculatively authorize access to streaming media content
KR102030645B1 (ko) 2015-07-20 2019-10-10 구글 엘엘씨 반복되는 라이센스 갱신들을 가지는 미디어 세션 동시성 관리를 위한 시스템들, 방법들 및 매체
US10348790B2 (en) * 2015-12-22 2019-07-09 Spotify Ab Methods and systems for media context switching between devices using wireless communications channels
US10944727B2 (en) * 2016-03-14 2021-03-09 Airwatch Llc System and method to secure the streaming of media to a valid client
US10958737B2 (en) 2019-04-29 2021-03-23 Synamedia Limited Systems and methods for distributing content
US11520915B2 (en) * 2020-03-26 2022-12-06 Synamedia Limited Secure fast channel change

Also Published As

Publication number Publication date
US11606590B2 (en) 2023-03-14
TW202236858A (zh) 2022-09-16
EP4241183A1 (en) 2023-09-13
US20220286724A1 (en) 2022-09-08
JP2024509496A (ja) 2024-03-04
CN116685968A (zh) 2023-09-01
WO2022187396A1 (en) 2022-09-09
TWI832168B (zh) 2024-02-11
US20230217054A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
AU2017272276B2 (en) Transferring authorization from an authenticated device to an unauthenticated device
US10554651B2 (en) Merged video streaming, authorization, and metadata requests
JP2023041702A (ja) 複数の暗号学的デジタル署名を使用したコンテンツアクセスおよびコンテンツ配信の認可の分離
US20230217054A1 (en) Systems and methods to deliver content during client authentication process in a distributed computing system
US20220286300A1 (en) Systems and methods to evaluate client device trust in a distributed computing system
TW202420829A (zh) 在分佈式運算系統中之客戶認證程序期間遞送內容之系統及方法
US20230137767A1 (en) Using co-located secondary devices to protect against cookie theft