A system and method for delivering content during a client authentication process in a distributed computing system.

By generating a content-based authentication token during initial playback, the system addresses unauthorized access and latency issues in content delivery, ensuring secure and uninterrupted content consumption.

JP7842830B2Active Publication Date: 2026-04-08GOOGLE LLC
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-10-08
Publication Date
2026-04-08

AI Technical Summary

Technical Problem

Existing content delivery systems face challenges in identifying and preventing unauthorized media players, leading to unauthorized access and functions, and suffer from latency due to time-consuming content-related authentication tokens.

Method used

A client device generates a content-based authentication token during initial playback, allowing it to request and consume a portion of content, and subsequently send this token with requests for the remainder, ensuring CDN authentication and preventing unauthorized access.

Benefits of technology

This approach enhances media player and content sharing platform performance by authenticating media players effectively, preventing unauthorized functions, and reducing latency, thus providing a stable viewing experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007842830000001
    Figure 0007842830000001
  • Figure 0007842830000002
    Figure 0007842830000002
  • Figure 0007842830000003
    Figure 0007842830000003
Patent Text Reader

Abstract

To enable content delivery while performing a client authentication process.SOLUTION: A method includes a step of receiving, by a content sharing platform, a request for content from a client device, the request for content comprising a session-based authentication token that pertains to a session between the client device and the content sharing platform. The content sharing platform can further validate the session-based authentication token and cause playback of the requested content to begin at the client device. Responsive to a valid content-based authentication token supplied by the client device, the content sharing platform can cause playback of the requested content to continue at the client device, where the valid content-based authentication token is based on an identifier of the requested content.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Aspects and embodiments of the present disclosure relate to content sharing platforms, and more particularly, to enabling content delivery while executing a client authentication process.

Background Art

[0002] Content delivery platforms connected via the Internet enable users to connect with each other and share information. Many content delivery platforms include aspects of content sharing that allow users to upload, view, and share content such as video items, image items, audio items, etc. Other users of the content delivery platform may comment on the shared content, discover new content, identify updates, share content, and interact with the provided content in other ways. The content to be shared can include content from professional content producers, such as movie clips, TV clips, and music video items, as well as content from amateur content producers, such as video blogs, and short original video items.

Summary of the Invention

Means for Solving the Problems

[0003] A part of the disclosure provides a method for a content sharing platform to receive a content request from a client device, the content request including a session-based authentication token relating to a session between the client device and the content sharing platform; verifying the session-based authentication token; initiating playback of the requested content on the client device; and continuing playback of the requested content on the client device in response to a valid content-based authentication token provided by the client device, wherein the valid content-based authentication token is based on an identifier of the requested content.

[0004] Further aspects of this disclosure provide a system including a memory and a processing device coupled to the memory for performing a method according to any aspect or embodiment described herein.

[0005] Further aspects of the present disclosure provide a method comprising: a client device receiving user input identifying desired content; the client device initiating the generation of a content-based authentication token based on the desired content; the client device sending a first request for the desired content to a content sharing platform, wherein the first request includes a session-based authentication token relating to a session between the client device and the content sharing platform; the client device receiving the first portion of the desired content from the content sharing platform; the client device initiating playback of the desired content using the first portion; having completed the generation of a content-based authentication token, sending a second request for an additional portion of the desired content, wherein the second request includes a content-based authentication token; receiving the additional portion of the desired content; and continuing playback of the desired content using the additional portion.

[0006] The aspects and embodiments of this disclosure will be better understood from the detailed descriptions and accompanying drawings provided under the various aspects and embodiments of this disclosure, but these should not be taken as limiting this disclosure to any particular aspect or embodiment, and are intended for description and understanding purposes only. [Brief explanation of the drawing]

[0007] [Figure 1] This figure shows an exemplary system architecture according to one embodiment of the present disclosure. [Figure 2] This diagram illustrates the operation for enabling the initial playback of content while generating a content-based authentication token used to enable the rest of the content playback, according to an embodiment of the present disclosure. [Figure 3]This diagram illustrates the operation for initiating content playback while generating a content-based authentication token used to enable continued playback, according to an embodiment of the present disclosure. [Figure 4] This is a flowchart of a method for authorizing the initial playback of content on a client device while awaiting a content-based authentication token used to enable the remainder of playback, according to embodiments of the present disclosure. [Figure 5] This is a flowchart of a method for requesting playback while generating a content-based authentication token used to prevent the termination of playback, according to embodiments of the present disclosure. [Figure 6] This is a block diagram showing an exemplary computer system according to one embodiment of the present disclosure. [Modes for carrying out the invention]

[0008] A content sharing platform (also referred to herein as a “content delivery platform”) may provide users with content such as video items, audio items, or game items via client devices. Users may access a content sharing platform and log in to a user account associated with the content sharing platform to upload and / or consume content. A content sharing platform may use a content distribution network (CDN) (also referred to herein as a “content delivery network”) to deliver content to client devices. A CDN may include a geographically distributed network of servers working together to provide high availability and high performance for content delivery. For example, server A of a CDN located in the same geographical proximity as client device A may be selected to deliver content to client device A. Content delivered by server A may be delivered to client device A more quickly than content delivered by another server, server B of a CDN, which is not in the same geographical proximity as client device A.

[0009] In some systems, users may request content from a content sharing platform via an authorized media player on their client device (e.g., provided by a mobile application, web browser, etc.). The content sharing platform may use an authorization service to authorize user accounts associated with a user to determine whether the user has permission to access the requested content. If a user account is authorized to access the content, the content sharing platform may generate one or more resource locators (e.g., Uniform Resource Locators (URLs)) that can be used by the client device to retrieve the requested content from the CDN.

[0010] However, in some cases, users may use unauthorized media players (e.g., overlay applications, third-party media players, modified media players, etc.) to access content from a CDN and perform unauthorized functions on the received content. For example, an unauthorized media player may be able to download the received content to a storage medium, a feature that can be prohibited by an authorized media player. In current systems, it is difficult to identify content requests from unauthorized media players. This can cause content sharing platforms to inadvertently grant unauthorized media players permission to access requested content, leading to unauthorized media players performing unauthorized functions on the received content. Furthermore, while authorized media players can generate authentication tokens for each content request that are difficult to forge and can prove the authenticity of the authorized media player, generating these content-related authentication tokens can be time-consuming. Therefore, the use of content-related authentication tokens can cause undesirable latency for each content request, which can inconvenience users.

[0011] The aspects and implementations of this disclosure address these and other shortcomings of existing technologies by enabling a client device to consume a portion of the desired content while generating a content-based authentication token used to retrieve the remainder of the desired content. In particular, a user can select the content to consume on the client device. The client device can then initiate the generation of an authentication token based on the desired content (a content-based authentication token) and send a request for the desired content to a content sharing platform. In some embodiments, in response to the request, the content sharing platform may identify an address associated with a CDN server for accessing the requested content (a CDN resource locator), append one or more cryptographically signed parameters to the CDN resource locator, and return the resulting resource locator. The parameters may be used to indicate to the CDN how the requested content accessed through the resource locator should be served, and may include, for example, an expiration parameter to indicate the expiration date of the resource locator's use, a bitrate parameter to indicate the desired bitrate of the requested content, and a playback event identifier parameter to identify playback events associated with the content request. The parameters could also indicate that the CDN should provide the client device with the initial playback of the requested content (e.g., the first 5 seconds of the requested video), and that each subsequent request for the rest of the desired content should include a content-based authentication token.

[0012] While consuming the initial playback, the client device can complete the generation of a content-based authentication token. The client device can then send a request for another portion of the requested content to the CDN, along with the content-based authentication token. The CDN can then authenticate the content-based authentication token, and in response to the CDN's verification of the authenticity of the content-based authentication token, it can send additional resource locators for the other portions of the requested content to the client device. In some embodiments, each additional request for the remaining portions of content should be accompanied by a content-based authentication token. In response to receiving an additional request with a content-based authentication token from the CDN and authenticating the content-based authentication token, the CDN provides the portion of content corresponding to the additional content request. In response to receiving an additional request without a content-based authentication token from the CDN (or if the CDN fails to authenticate the content-based authentication token), the CDN may reject the additional content request.

[0013] In some embodiments where the requested content may be accessed via a single resource locator, the content sharing platform may append one or more cryptographically signed parameters to the resource locator indicating that the CDN should provide the client device with playback of the requested content for a predetermined amount of time (e.g., 5 seconds), after which playback should either continue or terminate. Specifically, the CDN should terminate playback if it does not receive a content-based authentication token within the predetermined time. Alternatively, the CDN should continue playback if it receives a content-based authentication token within the predetermined time. In some implementations, the client device may initiate content consumption using a primary communication channel, and once a content-based authentication token is generated, it may send the token to the CDN using, for example, a side channel (e.g., a separate communication channel, a different port, etc.). In response to the CDN receiving the content-based authentication token, the CDN may allow the client device to terminate consumption of the requested content.

[0014] The aspects of this disclosure result in improved performance for media players on client devices and improved performance for content sharing platforms. In particular, the aspects of this disclosure enable content sharing platforms and CDNs to verify the authenticity of media players requesting content by using authentication tokens that are difficult to forge, thereby preventing unauthorized media players from accessing content from CDNs and performing unauthorized functions on that content. Furthermore, the technologies disclosed herein enable the generation of authentication tokens that are difficult to forge without exposing users to unwanted latency. Thus, the technologies disclosed herein enable users to have a stable and uninterrupted viewing experience.

[0015] Implementations of this disclosure often refer to videos for simplicity and conciseness. However, the teachings of this disclosure are broadly applicable to media items and may apply to various types of content, such as video, audio, text, images, and program instructions.

[0016] Figure 1 shows an exemplary system architecture 100 of one implementation of the present disclosure. The system architecture 100 (also referred to herein as the “System”) includes a content sharing platform 120 (also referred to herein as the “Content Distribution Platform”), a data store 106, client devices 110A–110Z (collectively referred herein as “Client Device 110”) connected to a network 104, a proxy server 140, and a content distribution network (CDN) 130 (also referred to herein as the “Content Delivery Network”). The CDN 130 may include a number of server machines 132A–132Z (also referred to herein as “Servers 132A–132Z”).

[0017] Network 104 may include public networks (e.g., the Internet), private networks (e.g., local area networks (LANs) or wide area networks (WANs)), wired networks (e.g., Ethernet networks), wireless networks (e.g., 802.11 networks or Wi-Fi networks), cellular networks (e.g., Long-Term Evolution (LTE) networks), routers, hubs, switches, server computers, and / or combinations thereof.

[0018] The datastore 106 may be persistent storage capable of storing content items (such as media items) and data structures that tag, organize, and index the content items. The datastore 106 may be hosted by one or more storage devices such as main memory, disks based on magnetic or optical storage, tape or hard drives, NAS, or SAN. In some embodiments, the datastore 106 may be a network-attached file server, while in other embodiments, the datastore 106 may be some other type of persistent storage, such as an object-oriented database or relational database, which may be hosted by the content sharing platform 120 or one or more different machines coupled to the content sharing platform 120. In some embodiments, the datastore 106 may be coupled to the content sharing platform 120 via a network 104.

[0019] Client devices 110A to 110Z may each include computing devices such as personal computers (PCs), laptops, mobile phones, smartphones, tablet computers, netbooks, and network-connected televisions. In some embodiments, client devices 110A to 110Z may also be called “user devices.” In some embodiments, each client device 110A to 110Z may include a media player 112 (or media viewer) and a token module 114. In some embodiments, the media player 112 may be an application that enables the user to play, view, or upload content such as images, video items, web pages, documents, and audio items. For example, the media player 112 may be a web browser that can access, retrieve, or navigate content provided by a web server (e.g., web pages such as hypertext markup language (HTML) pages, digital media items, etc.). The media player 112 may render, display, or present content (e.g., web pages, media viewers) to the user. The media player 112 may also include an embedded media player (e.g., a Flash® player or an HTML5 player) embedded in a web page (e.g., a web page that may provide information about products sold by an online trader). In another example, the media player 112 may be a standalone application (e.g., a mobile application or a native application) that enables a user to play digital media items (e.g., digital video items, digital images, ebooks, etc.). According to aspects of this disclosure, the media player 112 may be a content sharing platform application for a user to record, edit, and / or upload content for sharing on a content sharing platform.Therefore, the media player 112 may be provided to client devices 110A-110Z by the content sharing platform 120. For example, the media player 112 may be an embedded media player embedded in a web page provided by the content sharing platform 120. In another example, the media player 112 may be an application downloaded from the content sharing platform 120.

[0020] A token module 114 hosted by the client device 110 may be used to generate one or more authentication tokens. An authentication token may be generated for each content request of a digital media item. The authentication token can be transmitted by the client 110 to the content sharing platform 120, the content distribution network 130, and / or the proxy server 140, at which point the content sharing platform 120, the content distribution network 130, and / or the proxy server 140 may perform an authentication process by decrypting the authentication token, determining the cryptographic signature of the authentication token, checking the spam bit of the authentication token, and / or performing any other processes related to the authentication of the token. In response to the authentication of the authentication token, the content sharing platform 120 and / or the content distribution network 130 may start or continue playback of the requested digital media item. In some embodiments, the authentication token may be transmitted periodically to at least one of the content sharing platform 120 and / or the content distribution network 130 to reconfirm the authenticity of the client 110 and / or the content request, as will be discussed in more detail below.

[0021] In some embodiments, the authentication token can be a session-based authentication token and / or a content-based authentication token. A session-based authentication token can be an authentication token generated using data related to a user or user account that initiates a content request for a digital media item. For example, a session-based authentication token can be generated using information that identifies client device 110 or an application on client device 110 and a hash algorithm. The identifying information can be in the form of a cookie, for example, that refers to a file stored on client device 110 that holds some amount of data unique to a particular client device or application (e.g., a browser). For example, a user can log in to content sharing platform 120 using user account information. In response to authorization of the user account, content sharing platform 120 can send a cookie to client device 110. Client device 110 can generate a session-based authentication token based on the cookie by token module 114. Client device 110 can include the session-based authentication token in a content request to content sharing platform 120. In some embodiments, the cookie can include key-value pairs that include an encrypted version of the account information.

[0022] A content-based authentication token can be an authentication token generated using data related to a digital media item requested by the user. For example, a content-based authentication token may be generated using the identification information of the digital media item and a hash algorithm. Compared to a session-based authentication token, a new content-based authentication token can be generated for each digital media item request, for example, based on a content identifier associated with each digital media item, whereas the same session-based authentication token can be used for each digital media item request. As described in detail below, the content identifier may not be known to the client device 110 until the playback process is initiated by the content sharing platform 120. However, a session-based authentication token can be generated before any playback. Therefore, the client device 110 can start playback using a session-based authentication token and then continue playback and / or prevent playback from ending using a content-based authentication token generated during the consumption of the initial playback.

[0023] In some embodiments, for a content request, the client device 110 may send the initial content request to the content sharing platform 120 along with a session-based authentication token. The content sharing platform 120 can then authenticate the session-based authentication token, create a playback event for the content request, and associate the content request with a playback event identifier. The content sharing platform 120 may also instruct the CDN 130 to provide the client device 110 with the initial playback of the requested content. Furthermore, the content sharing platform 120 may instruct the CDN 130 to instruct the client device 110 to send the content-based authentication token to the CDN 130 along with each additional request for subsequent playback of the requested content. This allows the content sharing platform 120 to receive an authentication token, such as a session-based authentication token, before enabling the client device 110 to consume the initial playback of the requested content, and allows the CDN 130 to receive a relatively strong authentication token, such as a content-based authentication token, before enabling the client device 110 to consume the remaining playback of the requested content, as will be discussed in more detail below.

[0024] In some embodiments, content sharing platform 120, proxy server 140, and / or server machines 132A - 132Z may be used to provide a user access to media items or provide media items to a user. They may be one or more computing devices (such as rack - mount servers, router computers, server computers, personal computers, mainframe computers, laptop computers, tablet computers, desktop computers, etc.), data stores (such as hard disks, memories, databases), networks, software components, or hardware components. For example, content sharing platform 120 may enable a user to consume, upload, search for, like ( "Like!"), dislike ( "Don't like!"), or comment on media items. Content sharing platform 120 may also include a website (such as a web page) or application backend software that may be used to provide a user access to media items.

[0025] In some embodiments of the present disclosure, a "user" may be represented as an individual person. However, other embodiments of the present disclosure encompass that the "user" is an entity controlled by a group of users and / or an automated source. For example, a group of individual users associated as a community within a social network may be considered as the "user". In another example, an automated consumer may be an automated ingestion pipeline, such as a topic channel of content sharing platform 120.

[0026] The content sharing platform 120 may include multiple channels (for example, channels A through Z, of which only channel A is shown in Figure 1). Channels can be data content available from a common source, or data content that shares a common topic, theme, or purpose. Data content can be user-selected digital content, user-made digital content, user-uploaded digital content, content selected by content providers, or content selected by broadcasters. For example, channel X may include videos Y and Z. Channels may be associated with owners, who are users who can perform actions on the channel. Different activities may be associated with a channel based on the owner's actions, such as the owner making digital content available on the channel, the owner selecting digital content related to another channel (for example, liking it), or the owner commenting on digital content related to another channel. Activities associated with a channel may be compiled into a feed of channel activities. Users other than channel owners can subscribe to one or more channels that interest them. The concept of "subscribing" may also be called "liking," "following," or "becoming friends."

[0027] When a user subscribes to a channel, they may be presented with information from the channel's activity feed. If a user subscribes to multiple channels, the activity feeds for each channel the user subscribes to may be combined into a syndicated activity feed. Information from the syndicated activity feed may be presented to the user. Channels may have their own feeds. For example, when navigating to a channel's homepage on a content-sharing platform, feed items generated by that channel may be displayed on the channel's homepage. A user may have a syndicated feed, which is a feed containing at least a subset of content items from all the channels the user subscribes to. The syndicated feed may also contain content items from channels the user does not subscribe to. For example, a content-sharing platform 120 or other social network may insert recommended content items into a user's syndicated feed, or content items related to the user's relevant connections into the syndicated feed.

[0028] Each channel may contain one or more media items 122. Examples of media items 122 may include, but are not limited to, digital video, digital movies, digital photographs, digital music, audio content, melodies, website content, social media posts, ebooks, e-magazines, digital newspapers, digital audiobooks, e-journals, web blogs, real simple syndication (RSS) feeds, e-comics, and software applications. In some embodiments, media items 122 are also referred to as content or content items.

[0029] For brevity and simplicity, rather than limitation, video items, audio items, or game items are used throughout this specification as examples of media items 122. As used herein, “media,” “media item,” “online media item,” “digital media,” “digital media item,” “content,” and “content item” may include electronic files that can be executed or loaded using software, firmware, or hardware configured to present digital media items to an entity. In one embodiment, the content sharing platform 120 may use the data store 106 to store media items 122. In another embodiment, the content sharing platform 120 may use the data store 106 to store video items or fingerprints as electronic files in one or more formats.

[0030] In some embodiments, media item 122 is a video item. A video item is a set of sequential video frames (e.g., image frames) representing a moving scene. For example, a series of sequential video frames may be continuously filmed or later reconstructed to generate an animation. A video item may be presented in a variety of formats, including but not limited to analog, digital, two-dimensional, and three-dimensional video. Furthermore, a video item may include a movie, a video clip, or any set of animated images displayed in sequence. In addition, a video item may be stored as a video file containing video and audio components. Video components may refer to video data in a video coding format or image coding format (e.g., H.264 (MPEG-4 AVC), H.264 MPEG-4 Part 2, Graphic Interchange Format (GIF), WebP, etc.). Audio components may refer to audio data in an audio coding format (e.g., Advanced Audio Coding (AAC), MP3, etc.). It should be noted that GIFs can be saved as image files (e.g., .gif files) or as animated GIFs (e.g., in GIF89a format) as a series of images. It should also be noted that H.264 can be a video coding format, for example, a video compression standard based on block-oriented motion compensation for recording, compressing, or distributing video content.

[0031] In some embodiments, a media item may be streamed, such as a live stream, to one or more of the client devices 110A-110Z. It should be noted that “streamed” or “streaming” refers to the transmission or broadcast of content such as a media item, where the received portion of the media item may be played by the receiving device immediately after reception (within the limitations of the technology) or while other portions of the media content are being delivered, without the entire media item being received by the receiving device. “Stream” may refer to content such as a media item that is being streamed or is streaming. A live stream media item may refer to a live broadcast or transmission of a live event, where the media item is sent to the receiving device at least partially simultaneously as the event takes place, and the media item is not available in its entirety.

[0032] In some embodiments, the content sharing platform 120 may allow users to create, share, browse, or use playlists containing media items (for example, playlists A through Z containing media item 122). A playlist refers to a collection of media items configured to be played sequentially in a specific order without any user interaction. In some embodiments, the content sharing platform 120 may maintain playlists on behalf of the user. In some embodiments, the playlist feature of the content sharing platform 120 allows users to group their favorite media items together in a single location for playback. In embodiments, the content sharing platform 120 may send the media items in a playlist to a client device 110 for playback or display. For example, a media viewer 112 may be used to play the media items in a playlist in the order in which they are listed in the playlist. In another example, the user may navigate between media items in a playlist. In yet another example, the user may wait for the next media item in the playlist to play, or select a specific media item in the playlist for playback.

[0033] In some embodiments, a user may access the content sharing platform 120 through a user account. A user may access (e.g., log in to) a user account by providing user account information (e.g., username and password) through an application on a client device 110 (e.g., a media viewer 112). In some embodiments, a user account may be associated with a single user. In other embodiments, a user account may be a shared account (e.g., a family account shared by multiple users) (also referred to herein as a “shared user account”). A shared account may have multiple user profiles, each associated with a different user. Multiple users may log in to a shared account using the same or different account information. In some embodiments, multiple users of a shared account may be distinguished based on different user profiles of the shared account.

[0034] In some embodiments, a data authorization service 124 (also referred to herein as the “core data service” or “authorization data source”) may authorize a user account to be permitted to retrieve requested content. In some embodiments, the data authorization service 124 may authorize a user account (e.g., a client device associated with the user account) to access the requested content, authorize the delivery of the requested content to the client device, or both. Authorization for a user account to access the requested content may include authorizing which content will be accessed and who will be permitted to access the content. Authorization for the distribution of content may include authorizing how the content is distributed.

[0035] In some embodiments, the data authorization service 124 may authorize a user account using user account information. In some embodiments, an authentication token associated with the client device 110 or media player 112 (e.g., a session-based authentication token, a content-based authentication token, etc.) may be used to authorize the user account and / or playback of the requested content.

[0036] In some embodiments, the data authorization service 124 is part of the content sharing platform 120. In some embodiments, the data authorization service 124 is not part of the content sharing platform 120, but is an external service such as an authorization service provided by a third party.

[0037] As described above, the Content Distribution Network (CDN) 130 may include one or more nodes represented as server machines 132A to 132Z (collectively referred to herein as “server machine 132” or “server 132”). In embodiments, the Content Distribution Network 130 includes a geographically distributed network of servers working together to deliver content quickly. The network of servers is geographically distributed to provide high availability and high performance by distributing content or services based on proximity to the client device 110, in some cases. The closer the CDN servers are to the client device 110, the faster the content can be delivered to the client device 110.

[0038] For example, different server machines 132A-132Z may be geographically distributed within a specific country or across different countries. User A, using client device 110A located in the UK, may request to retrieve content hosted by content sharing platform 120. The request may be received by the data authorization service 124 of content sharing platform 120, and the user account associated with user A may be authorized to retrieve the requested content. After authorization, content sharing platform 120 may send a resource locator, such as a uniform resource locator (URL), to client device 110A. The resource locator may point to a reference that specifies the location of a resource (e.g., content) on the computer network and a mechanism for retrieving the resource. The resource locator may instruct client device 110A to retrieve content from a server machine 132 of content distribution network 130 located geographically near client device 110A. For example, the resource locator may instruct client device 110A to retrieve the requested content from a specific server machine 132 of content distribution network 130, also located in the UK. In another example, another user B, using client device 110B located on the West Coast of the United States, requests to retrieve the same content as user A. The request can be received by the data authorization service 124 of the content sharing platform 120, and the user account associated with user B can be authorized to retrieve the requested content. After authorization, the content sharing platform 120 can send a resource locator to the client device 110B. The resource locator may instruct the client device 110B to retrieve content from a server machine 132 of the content distribution network 130 located geographically near the client device 110B. For example, the resource locator may instruct the client device 110B to retrieve the requested content from a server machine 132 of the content distribution network 130 located on the West Coast of the United States.

[0039] In some embodiments, the content distribution network 130 is part of the content sharing platform 120. In other embodiments, the content distribution network 130 is a third-party platform that provides CDN services to the content sharing platform 120. In other embodiments, part of the content distribution network 130 can be operated by the content sharing platform 120, and another part of the content distribution network 130 can be operated by a third party. In some embodiments, the content distribution network 130 includes a data store, such as a data store 134. The data store 134 can be similar to the data store 106. The data store may include data files 136 relating to content, such as media content. The data store 106 may also include one or more cryptographic keys 137, such as one or more public keys or one or more private keys.

[0040] An authorization module 138 may be included in the server 132 of the CDN 130. The authorization module 138 can perform embodiments of the disclosure described herein. For example, the authorization module 138 can authenticate session-based authentication tokens and / or content-based authentication tokens received from the client device 110. In some embodiments, the authorization module 138 can authenticate session-based authentication tokens and / or content-based authentication tokens received from the client device 110 using a decryption key and / or library. Once authenticated, the authorization module 138 can indicate to the data authorization service 124 and / or server 132 whether the client device 110 should release and / or begin regeneration of the resource locator.

[0041] The proxy server 140 may include one or more nodes (e.g., servers) that can implement protocols to improve playback initiation latency. The proxy server 140 may include an initial playback module 142. In some embodiments, the proxy server 140 may allow the client 110 to receive a predetermined amount of playback data (e.g., initial playback) via the initial playback module 142 before generating a content-based authentication token. In some embodiments, the proxy server 140 is part of a content sharing platform 120 and / or a content distribution network 130. In other embodiments, the proxy server 140 is a third-party platform providing initial playback services to the client 110. In some embodiments, the proxy server 140 is part of the client device 110. The functions associated with the proxy server 140 are described in detail below.

[0042] In general, functions described in one embodiment as being performed by the content sharing platform 120, the content distribution network 130, and / or the proxy server 140 may, in other embodiments, be performed on client devices 110A through 110Z as appropriate. In addition, functions attributed to a particular component may be performed by different or multiple components working together. The content sharing platform 120, the content distribution network 130, or the proxy server 140 may also be accessed as a service provided to other systems or devices through a suitable application programming interface, and are therefore not limited to use in a website.

[0043] While embodiments of this disclosure are considered in terms of a content sharing platform and facilitating the sharing of content items on content sharing platform 120 on social networks, embodiments may generally apply to any type of social network or content distribution platform that provides connections between users. Implementations of this disclosure are not limited to content sharing platforms that provide users with channel subscriptions.

[0044] In addition to the above, users may be provided with controls that allow them to choose whether and when a system, program, or feature described herein may enable a collection of user information (for example, information about the user's social networks, social behavior, or activities, occupation, user preferences, or current location), and whether content or communications are transmitted from the server. Furthermore, certain data may be processed in one or more ways before being stored or used so that personally identifiable information is removed. For example, a user's identity may be processed so that personally identifiable information cannot be determined about the user, or if location information is obtained, the user's geographical location may be generalized (to the city, zip code, or state level, etc.), and thus the user's specific location cannot be determined. Thus, users may be able to control what information is collected about them, how that information is used, and what information is provided to them.

[0045] Figure 2 illustrates the operation to enable the initial playback of content while generating a content-based authentication token used to enable the rest of the content playback, according to an embodiment of the present disclosure. System 200 may include components similar to the system architecture 100 in Figure 1. It should be noted that components of Figure 1 may be used to help illustrate Figure 2. For illustrative purposes only and not limitation, operations relating to System 200 described as being performed by the data authorization service 124 of the content sharing platform 120, the server 132 of the CDN 130, the initial playback module 142 of the proxy server 140, or the client device 110 may be performed by any of those components unless otherwise stated. The operations described in relation to Figure 2 are shown to be performed sequentially for illustrative purposes only and not limitation. It should be noted that operations may be performed in any order and any operation may be performed simultaneously with one or more other operations. In some implementations, the same, different, fewer, or more operations may be performed in any order.

[0046] In operation 202, the client device 110 generates a session-based authentication token. In some embodiments, the session-based authentication token may be generated using a cookie associated with the client device 110. For example, a user can log in to the content sharing platform 120 using user account information, and in response to authorization of the user account by the content sharing platform 120, the content sharing platform 120 can send a cookie to the user device 110. The client device 110 can then generate a session-based authentication token based on the cookie by the token module 114. In other embodiments, the session-based token may be generated using other data associated with the user or user account (e.g., username and password, Internet Protocol (IP) address, etc.).

[0047] In operation 204, in response to a user request for content, the client device 110 begins generating a content-based authentication token. The content-based authentication token may be generated using information derived from, for example, a previous (cached) playback event, the application that issued the content request, and a content identifier that identifies the requested content. For example, a user of the client device 110 may request to play a video item hosted by the content sharing platform 120 using an application such as a browser or a native application. In response to the user request for the video item, the client device 110 can retrieve initial information that identifies the video item and begin generating a content-based authentication token. In some embodiments, the initial identification information may be retrieved from data loaded into the GUI of the client device 110. For example, a user may load a web page that displays a video item and a button to start playback (play button). The web page may contain initial information that identifies the video item. In response to the user's request to play the video item (e.g., selecting the play button), the client device 110 can use the initial identification information from the data loaded into the GUI to begin generating a content-based authentication token. In some embodiments, the client device 110 may initiate the generation of a content-based authentication token using data other than the content identifier, and then use the content identifier. That is, the content identifier can be provided by the data authorization service 124 after the content request has been sent, or it can be derived by the client device 110 from the first part of the requested content received by the client device 110. For example, the client device 110 may send a request to retrieve content (operation 206, considered below), and the content identifier may be included in the response to the content request or derived from the first part of the requested content received by the client device 110.

[0048] Compared to session-based authentication tokens, content-based authentication tokens are stronger authentication tokens that require a content identifier that is not immediately apparent, thereby resulting in a delayed generation process. Thus, client device 110 can use a session-based authentication token (which can be generated before content playback with no delay at all) to obtain the initial playback of the requested content from the CDN network 130, and use a content-based authentication token to obtain the rest of the playback. The initial playback may include only the first part of the video item (e.g., the first 5 seconds of the video). Allowing session-based tokens to obtain only the initial part of the video item provides protection against content requests that do not start at the beginning of the video. In particular, this prevents unauthorized users from generating valid session-based authentication tokens and requesting the entire video item in small parts (e.g., the first 5 seconds from the beginning of the video item, the second 5 seconds from the 5-second mark of the video item, etc.) and combining the parts into a single video.

[0049] In operation 206, the client device 110 may send a request to the initial playback module 142 of the proxy server 140 to retrieve content. In some embodiments, the request from the client device 110 may include the format of the data to be received. For example, the request may include the format of a video item that is compatible with the media viewer 112 of the client device 110. In some embodiments, the request may include additional information about the media viewer 112 that provides playback of content such as a video item (e.g., type, version, etc.).

[0050] In some embodiments, a content request may include a session-based authentication token generated in operation 202. In other embodiments, instead of a session-based authentication token, a content request may include an identifier for the client device, user, or user account attempting to retrieve the content. For example, a user request may identify the username and password associated with the user account requesting to retrieve the content. In another example, the request may include a cookie that identifies the application on the client device 110 or user device, and the cookie may be used to identify a specific user account. In operation 208, the proxy server 140 may forward (send) the content request, along with the session-based authentication token (and / or other identifier for the client device, user, or user account attempting to retrieve the content), to the data authorization service 124. Upon receiving the content request, the data authorization service 124 of the content sharing platform 120 may create a playback event and associate the playback event identifier with the content request.

[0051] In operation 210, the data authorization service 124 of the content sharing platform 120 may authorize a content request. To authorize a request, the data authorization service 124 may, for example, use an authentication process to authenticate a session-based authentication token. For example, performing an authentication process may include decrypting the session-based authentication token, determining the cryptographic signature of the session-based authentication token, checking the session-based token for spam bits, and / or performing any other processes related to the authentication of the session-based authentication token.

[0052] In other embodiments, the data authorization service 124 may determine that at least one of the client device 110, a user, or a user account is authorized to retrieve the content. In some embodiments, the request may identify account information of the user account requesting to retrieve the content. For example, the account information may be encrypted within a cookie. In another example, the account information may be entered by the user and provided within the request. In some embodiments, account information, such as a username and password, may be authenticated by the data authorization service 124 by comparing the account information (e.g., the received username and password) with a stored record of the account information. If the account information in the request matches the account information in the record, the data authorization service 124 may determine that a particular user account is authenticated.

[0053] In some embodiments, in response to a failure of authentication of a session-based authentication token (or identifier) ​​by the data authorization service 124, the content request may be rejected by the content sharing platform 120. In some embodiments, if the data authorization service 124 does not authorize the request to retrieve the content, the data authorization service 124 may send a message to the client device 110 indicating that authorization to retrieve the requested content is not granted. In some embodiments, in response to the data authorization service 124's denial of the request to retrieve the content, the content sharing platform 120 may send a message to the client device 110 requesting a new session-based authentication token or new login information and / or additional information.

[0054] In some embodiments, the data authorization service 124 may initiate one or more actions in response to the detection of one or more parameters processed during the session-based token authentication process (for example, parameters related to a user account, client device location, IP address, etc.) or to the failure of authentication of a session-based authentication token (or identifier). Actions may include applying digital rights management (DRM) restrictions (for example, requiring client device 110 to be offered DRM playback using encryption generated by a CDN), requiring verification of ReCaptcha from client device 110, requiring the user of client device 110 to sign in, instructing server 132 to throttle playback of the requested content, requesting server 132 to verify a content-based authentication token, instructing server 132 to reject the request for the remainder of the video item ("continued playback") in response to a failure in the content-based token verification process, requesting server 132 to verify a content-based authentication token, instructing server 132 to throttle the request for continued playback in response to a failure in the content-based authentication token verification process, and rejecting the content request. In other embodiments, in response to a session-based authentication token or authentication of a client device, user, or user account, the data authorization service 124 may permit playback of the entire content without any restrictions.

[0055] In some embodiments, in response to authorization of a request to retrieve content by the data authorization service 124, the data authorization service 124 generates one or more resource locators (e.g., URLs) to authorize the client device 110 to retrieve the initial playback of the requested content from the CDN network 130. In some embodiments, the resource locator may identify a server in the CDN 130 that will deliver the requested content to the client device 110. For example, the resource locator may include a hostname that identifies a specific server (e.g., server 132A, server 132B, etc.) that may be accessed to retrieve the initial playback of the requested content. In some embodiments, the data authorization service 124 may append one or more cryptographically signed parameters (e.g., expiration parameter, bitrate parameter, event identifier parameter, etc.) to the resource locator, which can be used to indicate to the server 132 what data should be provided and how the data should be provided. In some embodiments, the cryptographically signed parameters may indicate to the server 132 that only the initial playback of the requested content (e.g., a predetermined amount of the requested content) should be provided to the client device 110. For example, the initial playback may include the first 5 seconds of a video item related to the requested content, which can be provided using a single resource locator. Furthermore, the cryptographically signed parameters can indicate to server 132 that each subsequent request for continued playback (e.g., the rest of the desired content using additional resource locators) should include a content-based authentication token.

[0056] In operation 212, in response to user account authorization, the data authorization service 124 may send a response to the content request (e.g., operation 208) to the initial playback module 142. In some embodiments, the response may include one or more resource locators that identify a server 132 of the CDN 130 that should deliver the content to the client device 110, and a playback event identifier. In some embodiments, the response may also include one or more cryptographically signed parameters indicating to the server 132 that it should provide the client device 110 with only the first playback of the requested content. In some embodiments, the response may also include the playback event identifier and / or user account information. In some embodiments, the resource locators may be included in the hypertext transfer protocol (HTTP) response. In some embodiments, the data authorization service 124 may encrypt the response. In some embodiments, the response may include one or more decryption keys. The decryption keys may be used to decrypt the response and / or the content associated with the resource locators.

[0057] In operation 214, the initial playback module 142 can request content using a resource locator with cryptographically signed parameters. For example, the initial playback module 142 can send an HTTP request using the resource locator. In some embodiments, the request may be sent to a server 132 of the CDN 130. In some embodiments, the server 132 of the CDN 130 receives the request from the initial playback module 142. The request includes a resource locator with cryptographically signed parameters, as described above.

[0058] In operation 216, the server 132 may respond to a request from the initial playback module 142 with data related to the initial playback, as instructed by the cryptographically signed parameters. For example, the response may include a portion of the video item (e.g., the first 5 seconds). The initial playback may be obtained using a single resource locator. In operation 218, the proxy server may send the initial playback data to the client device 110 for user consumption. In some embodiments, in response to encryption of the initial playback data, the initial playback module 142 may decrypt the initial playback data.

[0059] In operation 220, the client device 110 can terminate the generation of content-based authentication tokens.

[0060] In operation 222, the client device 110 may send a request to the server 132 for the remainder of the video item ("continue playback"). The request may include a content-based authentication token. The request may identify the requested content using, for example, a playback event identifier and / or a location identifier. The location identifier may indicate the position (e.g., a point in time) within the video item where playback should continue. In some embodiments, the request from the client device 110 to the server 132 may include the format of the data to be received.

[0061] Server 132 can authenticate the content-based authentication token locally, or alternatively (in operation 224), Server 132 can send the content-based authentication token to the data authorization service 124 for authentication. The data authorization service 124 can then authenticate the content-based authentication token using, for example, an authentication process. For example, the data authorization service 124 may decrypt the content-based token, determine the cryptographic signature of the content-based token, inspect the spam bits of the content-based authentication token, and / or perform any other processes related to the authentication of the content-based authentication token.

[0062] In some embodiments, in response to authorization of a request to obtain continuous playback by the data authorization service 124, the data authorization service 124 may generate or obtain a resource locator to authorize the client device 110 to obtain continuous playback of the requested content from the server 132.

[0063] In response to the authentication of a content-based authentication token by the data authorization service 124 of the content sharing platform 120, the data authorization service 124 may (in any operation 226) send a response to the server 132 that includes a resource locator (and playback event identifier) ​​related to continuous playback. In other embodiments, the data authorization service 124 may, in operation 212, send a resource locator for the requested content (each with cryptographically signed parameters attached) and, in the response, indicate to the server 132 that the content-based token has been verified. In operation 228, the server 132 may respond to the content request of operation 222 with data related to continuous playback, or send a resource locator for continuous playback to the client device 110. The client device 110 can then use the resource locator to request continuous playback from the server 132. Continuous playback may include another portion of the video item (e.g., the next 5 seconds, the next 10 seconds, etc.).

[0064] In some embodiments, the CDN 130 may perform all or part of the verification of content-based tokens using, for example, an authorization module 138. For example, the authorization module 138 may use a decryption key and a library to verify the content-based authentication token. Thus, the CDN 130 does not require the data authorization service 124 to perform the authentication process on the content-based authentication token as considered in relation to any operations 224 and 226.

[0065] In some embodiments, the CDN 130 may require that each additional request for continuation playback from the client device 110 be accompanied by a content-based authentication token. In some embodiments, instead of requiring a content-based authentication token for each additional content request, the server 132 may instead require a session-based authentication token. For example, in operation 222, the client device 110 may send a request for the remainder of a video item ("continuation playback") to the server 132, and the request may include a session-based authentication token. In response to receiving the request and authenticating the session-based authentication token, the server 132 may respond to the request with data related to the continuation playback, or send a resource locator for the continuation playback to the client device 110.

[0066] In some embodiments, once a content-based authentication token is authenticated, the content sharing platform 120 and / or CDN 130 do not need to re-authenticate the content-based authentication token for any additional requests for continued playback from the client device 110. The client device can continue to send requests for the desired content until the entire content is consumed by the user, each request accompanied by a content-based authentication token (and playback event identifier). In some embodiments, the server 132 may reject requests for continued playback from the client device 110 if the request is not accompanied by a content-based token (or is accompanied by an invalid and / or unauthenticated content-based token). In some embodiments, in response to receiving a request that is not accompanied by a content-based authentication token or a request that is accompanied by an invalid content-based authentication token, the content sharing platform 120 and / or CDN 130 may impose one or more enforcement actions on the client device 110. For example, the content sharing platform 120 and / or CDN 130 can impose strict bandwidth limits on the client device 110, reduce playback quality, impose DRM restrictions, require ReCaptcha verification, and ask the user of the client device 110 to sign in.

[0067] In some embodiments, server 132 (and / or data authorization service 124) can track the status of replay events using a status tracking table. Specifically, server 132 can track the status of any ongoing replay events by their respective replay event identifiers. The status tracking table can indicate, for each replay event identifier, whether the content-based authentication token has been validated, is awaiting validation, or has failed validation. Furthermore, server 132 can record in the status tracking table all outstanding requests for continuing replays where the content-based authentication token is still awaiting validation. Once validation is complete, server 132 can release the continuing replay event. Additionally, server 132 can remove the corresponding replay event identifier from the status tracking table in response to an instruction for the expiration of resource locator usage via an expiration parameter. In some embodiments, server 132 can remove replay event identifiers from the status tracking table using other methods, such as cache replacement policies (e.g., first-in, first-out, least recently used, etc.).

[0068] Figure 3 illustrates the operation for initiating content playback while generating a content-based authentication token used to enable continued playback, according to an embodiment of the present disclosure. System 300 may include components similar to the system architecture 100 in Figure 1. It should be noted that components from Figure 1 may be used to illustrate Figure 3. For illustrative purposes only and not limitation, operations relating to System 300 are described as being performed by the data authorization service 124 of the content sharing platform 120, the server machine 132 of the content distribution network 130, or the client device 110, and may be performed by any component of System 300 unless otherwise stated. The operations described in relation to Figure 3 are shown to be performed sequentially for illustrative purposes only and not limitation. It should be noted that operations may be performed in any order and any operation may be performed simultaneously with one or more other operations. In some implementations, the same, different, fewer, or more operations may be performed in any order.

[0069] In operation 302, the client device 110 generates a session-based authentication token. In some embodiments, the session-based authentication token may be generated using a cookie associated with the client device 110. For example, a user can log in to the content sharing platform 120 using user account information, and in response to authorization of the user account by the content sharing platform 120, the content sharing platform 120 can send a cookie to the user device 110. The client device 110 can then generate a session-based authentication token based on the cookie by the token module 114. In other embodiments, the session-based authentication token may be generated using other data associated with the user or user account (e.g., username and password, Internet Protocol (IP) address, etc.).

[0070] In operation 304, in response to a user request for content, the client device 110 begins generating a content-based authentication token. The content-based authentication token may be generated using information derived from, for example, a previous (cached) playback event, the application that issued the content request, and a content identifier that identifies the requested content. For example, a user of the client device 110 may request to play a video item hosted by the content sharing platform 120 using an application such as a browser or a native application. In response to a user request for a video item, the client device 110 may retrieve initial information that identifies the video item and begin generating a content-based authentication token (for example, by applying a hash algorithm to the identifying information). In some embodiments, the initial identification may be retrieved from data loaded into the GUI of the client device 110. For example, a user may load a web page that displays the video item and a button to start playback (a play button). The web page may contain initial information that identifies the video item. In response to a user request to play a video item (e.g., by selecting the play button), the client device 110 can initiate the generation of a content-based authentication token using initial identification information from data loaded into the GUI. In some embodiments, the client device 110 can initiate the generation of a content-based authentication token using data other than the content identifier, and then use the content identifier. That is, the content identifier can be provided by the data authorization service 124 after the content request has been sent, or it can be derived by the client device 110 from the initial portion of the requested content received by the client device 110.For example, client device 110 can send a request to retrieve content (operation 306, considered below), and the content identifier may be included in the response to the content request or derived from the first part of the requested content received by client device 110. In one example, generating a content-based token may take several seconds.

[0071] In operation 306, the client device 110 may send a request to the data authorization service 124 to retrieve content. In some embodiments, the request from the client device 110 may include the format of the data to be received. For example, the request may include the format of a video item that is compatible with the media viewer 112 of the client device 110. In some embodiments, the request may include additional information about the media viewer 112 that provides playback of content such as a video item (e.g., type, version, etc.).

[0072] In some embodiments, a content request may include a session-based authentication token generated in operation 302. In other embodiments, instead of a session-based authentication token, a content request may include an identifier for a client device 110, user, or user account attempting to retrieve the content. For example, a user request may identify the username and password associated with the user account requesting to retrieve the content. In another example, the request may include a cookie that identifies the application on the client device 110 or user device, and the cookie may be used to identify a specific user account. Upon receiving a content request, the data authorization service 124 of the content sharing platform 120 may create a playback event and associate a playback event identifier with the content request.

[0073] In operation 308, the data authorization service 124 of the content sharing platform 120 may authorize a content request. To authorize a request, the data authorization service 124 may, for example, use an authentication process to authenticate a session-based authentication token. For example, performing an authentication process may include decrypting the session-based token, determining the cryptographic signature of the session-based token, checking the session-based token for spam bits, and / or performing any other processes related to the authentication of the session-based token.

[0074] In other embodiments, the data authorization service 124 may determine that at least one of the client device 110, a user, or a user account is authorized to retrieve the content. In some embodiments, the request may identify account information of the user account requesting to retrieve the content. For example, the account information may be encrypted within a cookie. In another example, the account information may be entered by the user and provided within the request. In some embodiments, account information, such as a username and password, may be authenticated by the data authorization service 124 by comparing the account information (e.g., the received username and password) with a stored record of the account information. If the account information in the request matches the account information in the record, the data authorization service 124 may determine that a particular user account is authenticated.

[0075] In some embodiments, in response to a failure of authentication of a session-based authentication token (or identifier) ​​by the data authorization service 124, the content request may be rejected by the content sharing platform 120. In some embodiments, if the data authorization service 124 does not authorize the request to retrieve the content, the data authorization service 124 may send a message to the client device 110 indicating that authorization to retrieve the requested content is not granted. In some embodiments, in response to the data authorization service 124's denial of the request to retrieve the content, the content sharing platform 120 may send a message to the client device 110 requesting a new session-based authentication token or new login information and / or additional information.

[0076] In some embodiments, the data authorization service 124 may initiate one or more actions in response to the detection of one or more parameters processed during the authentication process of a session-based authentication token (for example, parameters related to a user account, client device location, IP address, etc.) or to the failure of authentication of the session-based authentication token (or identifier). Actions may include applying digital rights management (DRM) restrictions (for example, requiring client device 110 to be offered DRM playback using encryption generated by a CDN), requiring verification of ReCaptcha from client device 110, requiring the user of client device 110 to sign in, instructing server 132 to restrict playback of the requested content, and requesting server 132 to verify a content-based token, instructing server 132 to reject the request for the remainder of the video item ("continued playback") in response to a failure in the content-based token verification process, and rejecting the content request. In other embodiments, in response to a session-based authentication token or authentication of a client device, user, or user account, the data authorization service 124 may permit playback of the entire content without any restrictions.

[0077] In some embodiments, in response to authorization of a request to retrieve content by the data authorization service 124, the data authorization service 124 generates a resource locator to authorize the client device 110 to retrieve the requested content from the CDN 130. In some embodiments, the resource locator (e.g., a URL) may identify a server in the CDN 130 that will deliver the requested content to the client device 110. For example, the resource locator may include hostnames that identify specific servers (e.g., server 132A, server 132B, etc.) that may be accessed to retrieve the requested content. In some embodiments, the data authorization service 124 may append one or more cryptographically signed parameters to the resource locator that can be used to indicate to the CDN 130 that it will provide the client device 110 with the requested content for a predetermined amount of time (e.g., 5 seconds). Furthermore, the parameters may indicate to the CDN 130 that it will terminate the playback to the client device 110 in response to the receipt of a content-based token from the client device 110 or a failure of authentication.

[0078] In operation 310, in response to user account authorization, the data authorization service 124 may send a response to the content request (e.g., operation 306) to the client device 110. In some embodiments, the response may include a resource locator that identifies a server 132 of the CDN 130 that should deliver the content to the client device 110, and a playback event identifier. In some embodiments, the response may also include one or more cryptographically signed parameters indicating to the server 132 that it should provide the client device 110 with playback of the requested content for a predetermined period, and terminate playback if the server 132 fails to receive a content-based authentication token within the period. In some embodiments, the response may also include the playback event identifier and / or user account information. In some embodiments, the resource locator may be included in the hypertext transfer protocol (HTTP) response. In some embodiments, the data authorization service 124 may encrypt the response. In some embodiments, the response may include one or more decryption keys. The decryption keys may be used to decrypt the response and / or the content associated with the resource locator.

[0079] In operation 312, the client device 110 can request content using a resource locator with cryptographically signed parameters attached. For example, the client device 110 can send an HTTP request using the resource locator. In some embodiments, the request may be sent to the server 132. In some embodiments, the server 132 receives the request from the client device 110. The request includes a resource locator with cryptographically signed parameters attached, as described above.

[0080] In operation 314, the server 132 may respond to the request from the client device 110 with playback-related data, as instructed by the cryptographically signed parameters. For example, the response may include the requested video item. In operation 316, the client device 110 may terminate the generation of a content-based authentication token.

[0081] In operation 318, the client device 110 can send a content-based authentication token to the server 132. In some embodiments, the content-based authentication token may be sent using a side channel. For example, the primary channel of the client device 110 may be used to receive playback from the server 132, and a side channel (e.g., a separate communication channel, a different port, etc.) may be used by the client device 110 to send a content-based authentication token to the server 132.

[0082] Server 132 may authenticate the content-based authentication token locally, or alternatively (in any operation 320), Server 132 may send the content-based authentication token to the data authorization service 124 for authentication. The data authorization service 124 may then authenticate the content-based authentication token using, for example, an authentication process. For example, the data authorization service 124 may decrypt the content-based authentication token, determine the cryptographic signature of the content-based token, inspect the spam bits of the content-based authentication token, and / or perform any other processes related to the authentication of the content-based authentication token.

[0083] In response to the authentication of a content-based authentication token by the data authorization service 124 of the content sharing platform 120, the data authorization service 124 may (in any operation 322) send a response to the server 132 verifying the authenticity of the content-based authentication token. In response that the content-based token is genuine, the server 132 may continue to provide playback to the client device 110. In response that the content-based authentication token is invalid, the server 132 may terminate playback to the client device 110.

[0084] In some embodiments, the CDN 130 may perform all or part of the verification of content-based authentication tokens, for example, using an authorization module 138. For example, the authorization module 138 may verify content-based authentication tokens using decryption keys and libraries. In some embodiments, in response to a failure to receive a content-based authentication token or the receipt of an invalid content-based authentication token, the content sharing platform 120 and / or CDN 130 may impose one or more enforcement actions on the client device 110. For example, the content sharing platform 120 and / or CDN 130 may impose strict bandwidth limits on the client device 110, reduce playback quality, impose digital rights management (DRM) restrictions, require ReCaptcha verification, or require the user of the client device 110 to sign in.

[0085] In some embodiments, server 132 (and / or data authorization service 124) can track the status of playback events using a status tracking table. Specifically, server 132 can track the status of any ongoing playback events by their respective playback event identifiers. The status tracking table can indicate, for each playback event identifier, whether the content-based authentication token has been validated, is awaiting validation, or has failed validation. Furthermore, server 132 can record in the status tracking table all unresolved requests for continuous playback where the content-based authentication token is still awaiting validation. In some embodiments, server 132 can pause playback after a predetermined period for viewing content has expired until the content-based authentication token is received and / or validated. Once validated, server 132 can resume the continuous playback event. Furthermore, server 132 can remove the corresponding playback event identifier from the status tracking table in response to an indication of the expiration date of resource locator usage via an expiration parameter. In some embodiments, server 132 may remove replay event identifiers from the status tracking table using other methods, such as cache replacement policies (e.g., first-in, first-out, maximum unused time, etc.).

[0086] Figure 4 shows a flowchart of Method 400 for authorizing the initial playback of content on a client device while awaiting a content-based authentication token used to enable the remainder of playback, according to embodiments of the present disclosure. The Method is performed by processing logic, which may include hardware (circuitry, dedicated logic, etc.), software (e.g., instructions executed on a processing device), or a combination thereof. In some embodiments, some or all operations of Method 400 may be performed by one or more components of System 100 in Figure 1. In other embodiments, one or more operations of Method 400 may be performed by an authorization module, data authorization service 124, or initial playback module 142 of the content distribution network 130 described in relation to Figures 1 to 3. It should be noted that components described in relation to Figures 1 to 3 may be used to illustrate the aspects of Figure 4.

[0087] In block 402, the processing logic implementing method 400 receives a content request from a client device. The content request may include a session-based authentication token related to the session between the client device and the content sharing platform.

[0088] In block 404, the processing logic verifies the session-based authentication token. For example, the processing logic may perform an authentication process which may include decrypting the session-based authentication token, determining the cryptographic signature of the session-based authentication token, checking the session-based token for spam bits, and / or performing any other processes related to the authentication of the session-based authentication token.

[0089] In block 406, the processing logic initiates playback of the requested content on the client device. In some embodiments, initiating playback of the requested content may include verifying the session-based authentication token, associating the content request with a playback event identifier for a playback event, and generating a response related to the playback event identifier. The response may include one or more resource locators for retrieving the requested content and parameters authorizing playback of the first portion of the requested content. Furthermore, the parameters may indicate that a valid content-based authentication token is required for playback of additional portions of the requested content. The response may also include a playback event identifier. In some embodiments, initiating playback of the requested content may include verifying the session-based authentication token, providing an indication (or command) to the CDN server to begin providing / streaming the first portion of the requested content to the client device, and providing the client device with a response related to the playback event identifier. The response may include one or more resource locators for retrieving the requested content (e.g., the rest of the requested content) and a playback event identifier.

[0090] In some embodiments, a valid content-based authentication token may be generated by the client device based on the identifier of the requested content, the identifier of the application on the client device that issued the content request, and data related to a previous playback event initiated by the client device's application. Playback of the requested content may be initiated on the client device before the generation of a valid content-based authentication token is completed on the client device.

[0091] In some embodiments, the response may include multiple resource locators, each used to retrieve each additional portion of the requested content, and the parameters may indicate that a valid content-based authentication token is required to retrieve each of the multiple additional portions of the requested content.

[0092] In other embodiments, the response may include a single resource locator for retrieving the requested content, and the parameters may indicate that a valid content-based authentication token is required to be received within a predetermined period from the start of playback of the requested content in order to avoid terminating playback of the requested content and to allow playback of additional portions of the requested content. In response to failure to receive a valid content-based authentication token, the processing logic may prevent playback of additional portions of the requested content.

[0093] In some embodiments, continuing playback of requested content on a client device includes receiving a content-based authentication token supplied by the client device, verifying the content-based authentication token, and notifying the CDN server (e.g., server 132) that the content-based authentication token is valid. In other embodiments, the content-based authentication token may be verified using the authorization module 138 of CDN 130 or a third-party service.

[0094] In block 408, in response to a valid content-based authentication token supplied by the client device, the processing logic continues playback of the requested content on the client device. A valid content-based authentication token may be based on the identifier of the requested content. In some embodiments, the identifier may be derived by the client device from the content sent to the client device. Alternatively, in response to a failure to receive a valid content-based authentication token, playback of the additional portion of the requested content is prevented, as described above.

[0095] Figure 5 shows a flowchart of a method 500 for requesting playback while generating a content-based authentication token used to prevent the termination of playback, according to embodiments of the present disclosure. The method is performed by processing logic, which may include hardware (circuitry, dedicated logic, etc.), software (e.g., instructions executed on a processing device), or a combination thereof. In some embodiments, some or all operations of method 500 may be performed by one or more components of system 100 in Figure 1. In other embodiments, one or more operations of method 500 may be performed by an authorization module and / or data authorization service 124 of a content distribution network 130 described in relation to Figures 1 to 3. It should be noted that components described in relation to Figures 1 to 3 may be used to illustrate the aspects of Figure 5.

[0096] In block 502, the processing logic implementing method 500 receives user input that identifies the desired content. For example, a user of a client device may request to play a video or audio item hosted by a content sharing platform using an application such as a browser or a native application.

[0097] In block 504, the processing logic initiates the generation of a content-based authentication token based on the desired content. In some embodiments, the content-based authentication token may be generated by the processing logic based on the identifier of the desired content, the identifier of the application on the client device that issued the first request for the desired content, and / or data related to a previous playback event initiated by the application on the client device.

[0098] In block 506, the processing logic sends a first request for the desired content to the content sharing platform. The first request may include a session-based authentication token related to the session between the client device and the content sharing platform.

[0099] In block 508, the processing logic receives the first portion of the desired content from the content sharing platform. Furthermore, in some embodiments, the processing logic may receive a response from the content sharing platform to a first request for the desired content. The response may include a playback event identifier for a playback event associated with the first request and one or more resource locators for retrieving the desired content (e.g., the remainder of the requested content). In some embodiments, the response includes a plurality of resource locators, each used to retrieve each portion of the desired content. In other embodiments, the response includes a single resource locator for retrieving the desired content.

[0100] In block 510, the processing logic uses the first part to start playback of the desired content. Playback of the desired content may start before the generation of the content-based authentication token is completed on the client device.

[0101] In block 512, once the processing logic has finished generating the content-based authentication token, it sends a second request for additional portions of the desired content. The second request includes the content-based authentication token. In some embodiments, the second request for the additional portions includes each of the resource locators. The second request may be sent repeatedly with the content-based authentication token and each of the resource locators for obtaining further additional portions of the desired content.

[0102] In other embodiments, the response includes a single resource locator, and a second request is required to be sent with a content-based authentication token within a predetermined period from the start of playback of the desired content in order to avoid the termination of playback of the desired content.

[0103] In block 514, the processing logic receives the additional portion of the desired content.

[0104] In block 516, the processing logic continues playback of the desired content using the additional portion.

[0105] Figure 6 is a block diagram showing an exemplary computer system 600 according to one embodiment of the present disclosure. The computer system 600 executes one or more sets of instructions that cause a machine to perform one or more of the methods considered herein. A set of instructions, instructions, etc., may refer to instructions that, when executed by the computer system 600, cause the computer system 600 to perform one or more operations of the Initial Regeneration Module 142 (not shown), the Authorization Module 138, and / or the Data Authorization Service 124 (not shown). The machine may operate as a server or client device in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) specifying an action to be performed by that machine. Furthermore, although only a single machine is shown, the term “machine” is also understood to include any set of machines that individually or in conjunction execute sets of instructions for performing one or more of the methods considered herein.

[0106] The computer system 600 includes processing devices 602 that communicate with each other via a bus 608, main memory 604 (for example, read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), static memory 606 (for example, flash memory, static random access memory (SRAM), etc.), and data storage device 616.

[0107] The processing device 602 represents one or more general-purpose processing devices, such as a microprocessor or a central processing unit. More specifically, the processing device 602 may be a processing device that implements a composite instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or other instruction sets or combinations of instruction sets. The processing device 602 may also be one or more dedicated processing devices, such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a digital signal processor (DSP), or a network processor. The processing device 602 is configured to execute instructions of the system architecture 100 and authorization module 151 for performing the operations considered herein.

[0108] The computer system 600 may further include a network interface device 622 that provides communication with other machines via a network 618 such as a local area network (LAN), intranet, extranet, or the Internet. The computer system 600 may also include a display device 610 (e.g., a liquid crystal display (LCD) or cathode ray tube (CRT)), an alphanumeric input device 612 (e.g., a keyboard), a cursor control device 614 (e.g., a mouse), and a signal generating device 620 (e.g., a speaker).

[0109] The data storage device 616 may include a non-temporary computer-readable storage medium 624 in which a set of instructions for the system architecture 100 or authorization module 138 that embodies any one or more of the methods or functions described herein is stored. The set of instructions for the system architecture 100 or authorization module 138 may be entirely or at least partially present in the main memory 604 and / or the processing device 602 while the computer system 600 is executing those instructions, and the main memory 604 and the processing device 602 constitute the computer-readable storage medium. The set of instructions may be further transmitted or received over the network 618 via the network interface device 622.

[0110] While examples of computer-readable storage media 624 are shown as a single medium, the term “computer-readable storage medium” may include a single or multiple mediums that store sets of instructions (e.g., a centralized or distributed database, and / or associated caches and servers). The term “computer-readable storage medium” may include any medium that can store, encode, or carry sets of instructions for execution by a machine, causing a machine to execute one or more of the methods of this disclosure. The term “computer-readable storage medium” may include, but is not limited to, solid-state memory, optical media, and magnetic media.

[0111] Many details are described in the above description. However, it will be apparent to those skilled in the art who benefit from this disclosure that this disclosure may be implemented without these specific details. In some cases, well-known structures and devices are shown in the form of block diagrams rather than in detail, in order to avoid obscuring this disclosure.

[0112] Some parts of the detailed explanation are presented in terms of algorithms and symbolic representations of operations on data bits in computer memory. These descriptions and representations of algorithms are the means used by those familiar with data processing techniques to most effectively communicate the content of their work to others familiar with the same technique. Here and generally, an algorithm is considered to be a self-consistent set of actions that produce a desired result. An action is an action that requires the physical manipulation of a physical quantity. These quantities usually, though not always, take the form of electrical or magnetic signals that can be stored, transferred, combined, compared, and other manipulated. It has been found that it is sometimes convenient, primarily for reasons of common use, to refer to these signals as bits, values, elements, symbols, characters, words, numbers, etc.

[0113] However, it should be noted that all of these and similar terms should be associated with appropriate physical quantities and are merely convenient labels attached to those quantities. Unless otherwise explicitly stated, throughout this description, any use of terms such as “generate,” “provide,” “adjust,” “receive,” and “cancel” is understood to refer to the actions and processes of a computer system or similar electronic computing device that manipulate data represented as physical (e.g., electronic) quantities in the memory or registers of a computer system and convert them into other data similarly represented as physical quantities in the memory or registers of a computer system or other such information storage, transmission, or display device.

[0114] This disclosure also relates to apparatus for performing the operations described herein. Such apparatus may include a general-purpose computer that is specifically constructed for a required purpose or selectively activated or reconfigured by a computer program stored in the computer. Such computer programs may be stored on computer-readable storage media, including, but not limited to, any type of disk including floppy disks, optical disks, compact disk read-only memory (CD-ROM), magneto-optical disks, read-only memory (ROM), random access memory (RAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic or optical cards, or any type of medium suitable for storing electronic instructions.

[0115] The terms “example” or “exemplary” are used herein to mean an example, specific example, or case. No aspect or design described herein as “example” or “exemplary” should be construed as necessarily preferable or advantageous to any other aspect or design. Rather, the use of the terms “example” or “exemplary” is intended to embody and present a concept. When used herein, the term “or” is intended to mean inclusive rather than exclusive. That is, unless otherwise specified or evident from the context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A, X includes B, or X includes both A and B, “X includes A or B” is satisfied under any of the above cases. In addition, the articles "a" and "an" used in this application and the attached claims may generally be considered to mean "one or more" unless otherwise specified or unless the context makes it clear that they refer to a singular form. Furthermore, the use of the terms "an embodiment," "one embodiment," "an implementation," or "one implementation" is not intended throughout to mean the same embodiment or implementation unless otherwise stated. The terms "first," "second," "third," "fourth," etc., used herein are intended as labels to distinguish different elements and may not necessarily have an orderly meaning according to the number of those terms.

[0116] For the sake of simplicity, the methods described herein are shown and described as a series of actions or operations. However, the actions provided herein may be performed in various orders and / or simultaneously, and in conjunction with other actions not shown and described herein. Furthermore, not all actions shown may be necessary to carry out the methods disclosed. In addition, those skilled in the art will understand and recognize that the methods may alternatively be represented as a series of interrelated states or events by a state diagram. Moreover, it should be understood that the methods disclosed herein may be stored in a product to facilitate the carrying and transfer of such methods to a computing device. The term "product" as used herein is intended to encompass computer programs accessible from any computer-readable device or storage medium.

[0117] In further embodiments, one or more processing devices for performing the operations of the embodiments described above are disclosed. In addition, in embodiments of this disclosure, a non-temporary computer-readable storage medium stores instructions for performing the operations of the embodiments described. In other embodiments, a system for performing the operations of the embodiments described is also disclosed.

[0118] It should be understood that the above description is intended to be illustrative and not restrictive. Other embodiments will be apparent to those skilled in the art upon reading and understanding the above description. Accordingly, the scope of this disclosure may be determined in relation to such claims, in conjunction with the entire scope of equivalents to which the appended claims are given. [Explanation of Symbols]

[0119] 100 System Architectures 104 Network 106 Datastores 110 Client devices, user devices 110A~110Z Client Devices 112 Media players, media viewers 114 Token Modules 120 Content Sharing Platforms 122 Media Items 124 Data Authorization Services 130 Content Distribution Network (CDN) 132 server machines, servers 132A~132Z Server machines, Servers 134 Datastores 136 Data Files 137 encryption keys 138 Authorization Modules 140 Proxy Servers 142 Initial Playback Module 151 Authorization Modules 200 Systems 300 Systems 400 ways 500 ways 600 Computer Systems 602 Processing Device 604 Main Memory 606 Static Memory 608 Bus 610 Display Devices 612 alphanumeric input devices 614 Cursor control device 616 Data Storage Devices 618 Network 620 Signal Generating Devices 622 Network Interface Devices 624 Non-temporary computer-readable storage media

Claims

1. A step of receiving a first request for content by a content distribution network server, wherein the first request for content includes an identifier for the location of the content; The steps include: starting playback of the requested content on the client device; A step of receiving a content-based authentication token generated by the client device, wherein the content-based authentication token is associated with a second request for content initiated by the client device. The steps include sending the content-based authentication token for verification by the content sharing platform, The step of causing the client device to continue playing the requested content in response to receiving an instruction that the content-based authentication token is valid. method.

2. The first request authorizes playback of the first portion of the requested content and includes parameters indicating that the valid content-based authentication token is required for playback of additional portions of the requested content. The method according to claim 1.

3. The parameter indicates that, in order to avoid terminating the playback of the requested content and to enable the playback of the additional portion of the requested content, the valid content-based authentication token is required to be received within a predetermined period from the start of the playback of the requested content. The method according to claim 2.

4. The step further includes preventing the playback of the additional portion of the requested content in response to the failure to receive the valid content-based authentication token. The method according to claim 2.

5. The first request is generated in response to the confirmation of a session-based authentication token relating to the session between the client device and the content sharing platform. The method according to claim 1.

6. The playback of the requested content begins on the client device before the generation of the valid content-based authentication token is completed on the client device. The method according to claim 1.

7. Based on the identifier of the requested content, the identifier of the application on the client device that issued the request for the content, and data related to a previous playback event initiated by the application on the client device, the valid content-based authentication token is generated by the client device. The method according to claim 1.

8. Memory and A processing device coupled to the memory, Receiving a first request for content, wherein the first request for content includes an identifier for the location of the content, To initiate playback of the requested content on the client device, Receiving a content-based authentication token generated by the client device, the content-based authentication token being associated with a second request for content initiated by the client device, Sending the aforementioned content-based authentication token for verification by the content sharing platform, In response to receiving an instruction that the content-based authentication token is valid, the client device continues to play the requested content. It includes a processing device for performing the following: system.

9. The first request authorizes playback of the first portion of the requested content and includes parameters indicating that the valid content-based authentication token is required for playback of additional portions of the requested content. The system according to claim 8.

10. The parameter indicates that, in order to avoid terminating the playback of the requested content and to enable the playback of the additional portion of the requested content, the valid content-based authentication token is required to be received within a predetermined period from the start of the playback of the requested content. The system according to claim 9.

11. The processing device further prevents the playback of the additional portion of the requested content in response to a failure to receive the valid content-based authentication token. The system according to claim 9.

12. The first request is generated in response to the confirmation of a session-based authentication token relating to the session between the client device and the content sharing platform. The system according to claim 8.

13. The playback of the requested content begins on the client device before the generation of the valid content-based authentication token is completed on the client device. The system according to claim 8.

14. Based on the identifier of the requested content, the identifier of the application on the client device that issued the request for the content, and data related to a previous playback event initiated by the application on the client device, the valid content-based authentication token is generated by the client device. The system according to claim 8.

15. In response to execution by the processing device, the processing device A step of receiving a first request for content, wherein the first request for content includes an identifier for the location of the content, To initiate playback of the requested content on the client device, Receiving a content-based authentication token generated by the client device, the content-based authentication token being associated with a second request for content initiated by the client device, Sending the aforementioned content-based authentication token for verification by the content sharing platform, The command includes an action that, in response to receiving an instruction that the content-based authentication token is valid, causes the client device to continue playing the requested content. Non-temporary computer-readable storage medium.

16. The first request authorizes playback of the first portion of the requested content and includes parameters indicating that the valid content-based authentication token is required for playback of additional portions of the requested content. The non-temporary computer-readable storage medium according to claim 15.

17. The parameter indicates that, in order to avoid terminating the playback of the requested content and to enable the playback of the additional portion of the requested content, the valid content-based authentication token is required to be received within a predetermined period from the start of the playback of the requested content. The non-temporary computer-readable storage medium according to claim 16.

18. The instruction further includes preventing the playback of the additional portion of the requested content in response to the failure to receive the valid content-based authentication token. The non-temporary computer-readable storage medium according to claim 16.

19. The first request is generated in response to the confirmation of a session-based authentication token relating to the session between the client device and the content sharing platform. The non-temporary computer-readable storage medium according to claim 15.

20. The playback of the requested content begins on the client device before the generation of the valid content-based authentication token is completed on the client device. The non-temporary computer-readable storage medium according to claim 15.

Citation Information

Patent Citations

  • System and method for asset lease management

    JP2013137741A

  • System, method and medium for media session concurrency management with repeated license updates

    JP2018521407A

  • Fast-expiring licenses used to speculatively authorize access to streaming media content

    US10108788B2

  • Fast-expiring licenses used to speculatively authorize access to streaming media content

    US20150074818A1

  • System and method to secure the streaming of media to a valid client

    US20170264593A1