Systems and methods to deliver content during client authentication process in distributed computing system

JP2025022879AActive Publication Date: 2025-02-14GOOGLE LLC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2024176421
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-03-03
Filing Date
2024-10-08
Publication Date
2025-02-14
Estimated Expiration
2042-03-02

Smart Images

  • Figure 2025022879000001_ABST
    Figure 2025022879000001_ABST
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 a content sharing platform and, more particularly, to enabling content distribution while performing a client authentication process. [Background technology]

[0002] Content distribution platforms that connect via the Internet enable users to connect with each other and share information. Many content distribution platforms include content sharing aspects that allow users to upload, view, and share content, such as video items, image items, audio items, and the like. Other users of the content distribution platforms may comment on the shared content, discover new content, identify updates, share content, and otherwise interact with the provided content. Shared content may include content from professional content creators, e.g., movie clips, TV clips, and music video items, as well as content from amateur content creators, e.g., video blogs and short original video items. Summary of the Invention [Means for solving the problem]

[0003] An aspect of the disclosure provides a method that includes receiving, by a content sharing platform, a request for content from a client device, the request for content including a session-based authentication token associated with a session between the client device and the content sharing platform; validating the session-based authentication token; initiating playback of the requested content at the client device; and continuing playback of the requested content at the client device in response to a valid content-based authentication token provided by the client device, the valid content-based authentication token being based on an identifier of the requested content.

[0004] A further aspect of the present disclosure provides 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] A further aspect of the disclosure provides a method including receiving, by a client device, user input identifying desired content; initiating, by the client device, generation of a content-based authentication token based on the desired content; sending, by the client device, a first request for the desired content to the content sharing platform, the first request including a session-based authentication token associated with a session between the client device and the content sharing platform; receiving, by the client device, an initial portion of the desired content from the content sharing platform, and initiating playback of the desired content using the initial portion at the client device; upon completing generation of the content-based authentication token, sending a second request for an additional portion of the desired content, the second request including the content-based authentication token; receiving the additional portion of the desired content; and continuing playback of the desired content using the additional portion.

[0006] Aspects and embodiments of the present disclosure will become more fully understood from the detailed description and accompanying drawings given under various aspects and embodiments of the present disclosure, which should not be construed as limiting the present disclosure to any particular aspect or embodiment, but are for purposes of illustration and understanding. [Brief description of the drawings]

[0007] [Figure 1] FIG. 1 illustrates an exemplary system architecture according to one embodiment of the present disclosure. [Diagram 2] FIG. 1 illustrates an operation for enabling initial playback of content while generating a content-based authentication token that is used to enable playback of the remainder of the content, according to an embodiment of the disclosure. [Diagram 3]FIG. 1 is a diagram of operations for initiating playback of content while generating a content-based authentication token that is used to enable continued playback, according to an embodiment of the disclosure. [Figure 4] 1 is a flow diagram of a method for authorizing initial playback of content on a client device while waiting for a content-based authentication token to be used to enable remaining playback, according to an embodiment of the present disclosure. [Diagram 5] 1 is a flow diagram of a method for requesting playback while generating a content-based authentication token used to prevent playback termination, according to an embodiment of the present disclosure. [Figure 6] FIG. 1 is a block diagram illustrating an exemplary computer system according to one embodiment of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

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

[0009] In some systems, a user may request content from a content sharing platform via an authorized media player (e.g., provided by a mobile application, a web browser, etc.) of a client device. The content sharing platform may use an authorization service to authorize a user account associated with the user to determine whether the user has permission to access the requested content. If the 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 may be used by the client device to obtain the requested content from the CDN.

[0010] However, in some cases, a user may use an unauthorized media player (e.g., an overlay application, a third-party media player, a modified media player, 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 may be prohibited by an authorized media player. In current systems, it is difficult to identify content requests from unauthorized media players. This may cause the content sharing platform to erroneously grant the unauthorized media player permission to access the requested content, leading to the unauthorized media player performing unauthorized functions on the received content. Furthermore, although an authorized media player may generate a hard-to-forge authentication token for each content request that can prove the authenticity of the authorized media player, generating these content-related authentication tokens may be time-consuming. Thus, the use of content-related authentication tokens may cause undesirable latency for each content request, which may cause inconvenience to users.

[0011] Aspects and implementations of the present disclosure address these and other shortcomings of existing technologies by enabling a client device to consume a portion of a desired content while generating a content-based authentication token that is used to obtain the remaining portion of the desired content. In particular, a user may select the content to consume at a client device. The client device may then initiate generation of an authentication token based on the desired content (the 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 (CDN resource locator) associated with a CDN server for accessing the requested content, 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 via the resource locator should be served, for example, may include an expiration parameter to indicate an expiration of use of the resource locator, a bitrate parameter to indicate a desired bitrate of the requested content, a playback event identifier parameter to identify a playback event associated with the content request, etc. The parameters may also indicate that the CDN should provide an initial play of the requested content (e.g., the first portion of the requested content, such as the first 5 seconds of a requested video) to the client device, and that each additional request for the remainder of the desired content should include a content-based authentication token.

[0012] While consuming the initial playback, the client device can finish generating the content-based authentication token. Accordingly, the client device can then send a request to the CDN for another portion of the requested content along with the content-based authentication token. The CDN can then authenticate the content-based authentication token, and in response to the CDN verifying the authenticity of the content-based authentication token, the CDN can send additional resource locators for the other portions of the requested content to the client device. In some embodiments, each additional request for a portion of the remaining content should be accompanied by the content-based authentication token. In response to the CDN receiving the additional request with the content-based authentication token and authenticating the content-based authentication token, the CDN provides the portion of content corresponding to the additional content request. In response to the CDN receiving the additional request without the content-based authentication token (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 playback of the requested content to the client device for a predetermined amount of time (e.g., 5 seconds), after which playback should either continue or be terminated. In particular, the CDN should terminate playback if it does not receive a content-based authentication token within the predetermined amount of time. Alternatively, the CDN should continue playback if it receives a content-based authentication token within the predetermined amount of time. In some implementations, the client device may initiate consumption of the content using a primary communication channel, and once a content-based authentication token is generated, the client device may transmit the token to the CDN, for example, using a side channel (e.g., a separate communication channel, a different port, etc.). In response to receipt of the content-based authentication token by the CDN, the CDN may enable the client device to terminate consumption of the requested content.

[0014] Aspects of the present disclosure provide improved performance of client device media players and improved performance of content sharing platforms. In particular, aspects of the present 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 the CDN and performing unauthorized functions on the content. Furthermore, the technology disclosed herein enables the generation of authentication tokens that are difficult to forge without exposing users to undesirable latency. Thus, the technology disclosed herein enables users to have a stable and uninterrupted viewing experience.

[0015] Implementations of this disclosure often refer to video for simplicity and brevity, but the teachings of this disclosure apply broadly to media items and may be applied to various types of content including, for example, video, audio, text, images, program instructions, and the like.

[0016] 1 illustrates an exemplary system architecture 100 according to 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 to herein as "client devices 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 multiple server machines 132A-132Z (also referred to herein as "servers 132A-132Z").

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

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

[0019] Each of the client devices 110A-110Z may include a computing device such as a personal computer (PC), a laptop, a mobile phone, a smartphone, a tablet computer, a netbook computer, a network-connected television, etc. In some embodiments, the client devices 110A-110Z may also be referred to as a "user device." In some embodiments, each of the client devices 110A-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 allows a user to play, view, or upload content such as images, video items, web pages, documents, audio items, etc. For example, the media player 112 may be a web browser that can access, retrieve, or navigate content (e.g., web pages such as HyperText Markup Language (HTML) pages, digital media items, etc.) provided by a web server. The media player 112 may render, display, or present the content (e.g., web pages, media viewer) to the user. The media player 112 may also include an embedded media player (e.g., a Flash player or an HTML5 player) that is embedded in a web page (e.g., a web page that may provide information about products sold by an online merchant). In another example, the media player 112 may be a standalone application (e.g., a mobile application or a native application) that allows a user to play digital media items (e.g., digital video items, digital images, e-books, etc.). According to aspects of the present 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.Thus, the media player 112 may be provided to the 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] The 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 for a digital media item. The authentication token may be transmitted by the client 110 to the content sharing platform 120, the content distribution network 130, and / or the proxy server 140, which may then perform an authentication process by decrypting the authentication token, determining a cryptographic signature of the authentication token, checking the authentication token for a spam bit, and / or performing any other process related to authenticating the token. In response to authenticating the authentication token, the content sharing platform 120 and / or the content distribution network 130 may begin or continue playing the requested digital media item. In some embodiments, the authentication token may be periodically transmitted 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 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. The session-based authentication token can be an authentication token generated using data related to a user or user account initiating a content request for a digital media item. For example, the session-based authentication token can be generated using information identifying the client device 110 or an application of the client device 110 and a hashing algorithm. The identifying information can be in the form of a cookie, which can point to a file stored on the client device 110 that holds some amount of data specific to a particular client device or application (e.g., a browser). For example, a user can log into the content sharing platform 120 using user account information. In response to authorization of the user account, the content sharing platform 120 can send a cookie to the client device 110. The client device 110 can generate a session-based authentication token based on the cookie via the token module 114. The client device 110 can include the session-based authentication token in a content request to the content sharing platform 120. In some embodiments, the cookie can include a key-value pair that includes an encrypted version of the account information.

[0022] The content-based authentication token can be an authentication token generated using data related to the digital media item requested by the user. For example, the content-based authentication token can be generated using an identification of the digital media item and a hashing algorithm. In comparison with the 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 the respective digital media item, while 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, the session-based authentication token can be generated prior to any playback. Thus, the client device 110 can start playback using the session-based authentication token and then continue playback and / or prevent playback termination using the content-based authentication token generated during consumption of the first playback.

[0023] In some embodiments, for a content request, the client device 110 can send an initial content request together with a session-based authentication token to the content sharing platform 120. 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 the playback event identifier. The content sharing platform 120 can also instruct the CDN 130 to provide the initial playback of the requested content to the client device 110. Additionally, the content sharing platform 120 can instruct the CDN 130 to request the client device 110 to send a content-based authentication token to the CDN 130 together with each additional request for continued 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 allowing the client device 110 to consume the initial playback of the requested content, and allows the CDN 130 to receive a relatively stronger authentication token, such as a content-based authentication token, before allowing the client device 110 to consume the remaining playback of the requested content, as discussed in more detail below.

[0024] In some embodiments, the content sharing platform 120, the proxy server 140, and / or the server machines 132A-132Z may be one or more computing devices (such as a rack mount server, a router computer, a server computer, a personal computer, a mainframe computer, a laptop computer, a tablet computer, a desktop computer, etc.), data stores (e.g., hard disks, memory, databases), networks, software components, or hardware components that may be used to provide access to media items to users or to serve media items to users. For example, the content sharing platform 120 may enable users to consume, upload, search, approve ("like"), disapprove ("dislike"), or comment on media items. The content sharing platform 120 may also include websites (e.g., web pages) or application backend software that may be used to provide access to media items to users.

[0025] In some embodiments of the present disclosure, a "user" may be represented as a single individual. However, other embodiments of the present disclosure encompass a "user" being a set of user-controlled entities and / or automated sources. For example, a set of individual users federated as a community in a social network may be considered a "user." In another example, an automated consumer may be an automated ingestion pipeline, such as a topic channel of the content sharing platform 120.

[0026] The content sharing platform 120 may include multiple channels (e.g., channels A through Z, of which only channel A is shown in FIG. 1). A channel may be data content available from a common source or data content having a common topic, theme, or tenor. The data content may be digital content selected by a user, digital content made available by a user, digital content uploaded by a user, digital content selected by a content provider, digital content selected by a broadcaster, etc. For example, channel X may include videos Y and Z. A channel may be associated with an owner, which is a user 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 (e.g., liking) digital content related to another channel, the owner commenting on digital content related to another channel, etc. The activities related to the channel may be compiled into a feed of activities related to the channel. Users other than the channel owner may subscribe to one or more channels that interest them. The concept of "subscribing" may also be referred to as "liking," "following," or "becoming a friend."

[0027] When a user subscribes to a channel, the user may be presented with information from the channel's activity feed. If the user subscribes to multiple channels, the activity feeds for each channel to which the user subscribes may be combined into a syndicated activity feed. Information from the syndicated activity feeds may be presented to the user. A channel may have its own feed. For example, when navigating to a channel's home page on the content sharing platform, feed items generated by the channel may be shown on the channel's home page. A user may have a syndicated feed, which is a feed that includes at least a subset of content items from all of the channels to which the user subscribes. A syndicated feed may also include content items from channels to which the user does not subscribe. For example, the content sharing platform 120 or other social networks may insert recommended content items into the user's syndicated feed, or may insert content items related to the user's relevant connections into the syndicated feed.

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

[0029] For brevity and simplicity, but not 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 entities. In one embodiment, the content sharing platform 120 may store the media items 122 using the data store 106. In another embodiment, the content sharing platform 120 may store the video items or fingerprints using the data store 106 as electronic files in one or more formats.

[0030] In some embodiments, the media item 122 is a video item. A video item is a set of consecutive video frames (e.g., image frames) that represent a moving scene. For example, a series of consecutive 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 that includes a video component and an audio component. The video component may refer to video data in a video coding format or an image coding format (e.g., H.264 (MPEG-4 AVC), H.264 MPEG-4 Part 2, Graphic Interchange Format (GIF), WebP, etc.). The audio component may refer to audio data in an audio coding format (e.g., advanced audio coding (AAC), MP3, etc.). It may be noted that GIF may be stored as an image file (e.g., a .gif file) or animated as a series of images (e.g., GIF89a format). It may be noted that H.264 may be a video coding format that is, 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 client devices 110A-110Z. It is noted that "streamed" or "streaming" refers to the transmission or broadcast of content, such as a media item, in which a received portion of the media item may be played by a receiving device immediately upon receipt (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. A "stream" may refer to content, such as a media item, that is streamed or streaming. A live stream media item may refer to a live broadcast or transmission of a live event, where a media item is transmitted to a 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 a user to create, share, view, or use a playlist that includes the media items (e.g., playlist A-Z that includes media item 122). A playlist refers to a collection of media items that are configured to be played one after the other in a particular order without any user interaction. In some embodiments, the content sharing platform 120 may maintain the playlist 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 an embodiment, the content sharing platform 120 may send the media items of the playlist to the client device 110 for playback or display. For example, the media viewer 112 may be used to play the media items of the playlist in the order in which the media items are listed in the playlist. In another example, a user may transition between media items of a playlist. In yet another example, a user may wait for the next media item of the playlist to be played or may select a particular 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) via an application (e.g., media viewer 112) on the client device 110. 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 into a shared account using the same account information 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, the data authorization service 124 (also referred to herein as "core data services" or "authorized data sources") can authorize a user account so that the user account is permitted to obtain the requested content. In some embodiments, the data authorization service 124 can authorize the user account's (e.g., a client device associated with the user account) access to the requested content, authorize delivery of the requested content to the client device, or both. Authorizing a user account to access the requested content can include authorizing what content is accessed and who is allowed to access the content. Authorizing the distribution of content may include authorizing how the content is distributed.

[0035] In some embodiments, the data authorization service 124 can use the user account information to authorize a user account. In some embodiments, an authentication token (e.g., a session-based authentication token, a content-based authentication token, etc.) associated with the client device 110 or media player 112 can 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 mentioned above, content distribution network (CDN) 130 may include one or more nodes represented as server machines 132A-132Z (collectively referred to herein as "server machines 132" or "servers 132"). In an embodiment, content distribution network 130 includes a geographically distributed network of servers that work together to provide rapid delivery of content. The network of servers is geographically distributed to provide high availability and high performance, possibly by distributing content or services based on proximity to client device 110. The closer the CDN server is to client device 110, the more quickly the content can be delivered to client device 110.

[0038] For example, different server machines 132A-132Z may be geographically distributed within or across a particular country. User A using client device 110A located in the UK may request to obtain content hosted by content sharing platform 120. The request may be received by data authorization service 124 of content sharing platform 120, and a user account associated with user A may be authorized to obtain 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 refer to a reference that specifies the location of a resource (e.g., content) on a computer network and a mechanism for retrieving the resource. The resource locator may instruct client device 110A to obtain content from a server machine 132 of content distribution network 130 that is in the geographical vicinity of client device 110A. For example, the resource locator may instruct client device 110A to obtain the requested content from a particular server machine 132 of content distribution network 130 that is also located in the UK. In another example, another user B using client device 110B on the west coast of the United States requests to obtain the same content as user A. The request can be received by the data authorization service 124 of the content sharing platform 120, and a user account associated with user B can be authorized to obtain the requested content. After authorization, the content sharing platform 120 can send a resource locator to the client device 110B. The resource locator can instruct the client device 110B to obtain the content from a server machine 132 of the content distribution network 130 that is in a geographical vicinity of the client device 110B. For example, the resource locator can instruct the client device 110B to obtain the requested content from a server machine 132 of the content distribution network 130 that is 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, a portion of the content distribution network 130 may be operated by the content sharing platform 120 and another portion of the content distribution network 130 may be operated by a third party. In an embodiment, the content distribution network 130 includes a data store, such as the data store 134. The data store 134 may 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 may perform aspects of the disclosure described herein. For example, the authorization module 138 may authenticate a session-based authentication token and / or a content-based authentication token received from the client device 110. In some embodiments, the authorization module 138 may use a decryption key and / or library to authenticate a session-based authentication token and / or a content-based authentication token received from the client device 110. Upon authentication, the authorization module 138 may indicate to the data authorization service 124 and / or the server 132 whether to release a resource locator to the client device 110 and / or initiate playback.

[0041] The proxy server 140 may include one or more nodes (e.g., servers) that can implement a protocol to improve playback initiation latency. The proxy server 140 may include an initial playback module 142. In some embodiments, the proxy server 140, via the initial playback module 142, may allow the client 110 to receive a predetermined amount of playback data (e.g., first play) before generating a content-based authentication token. In some embodiments, the proxy server 140 is part of the content sharing platform 120 and / or the content distribution network 130. In other embodiments, the proxy server 140 is a third-party platform that provides an initial playback service to the client 110. In some embodiments, the proxy server 140 is part of the client device 110. Functionality related to the proxy server 140 is described in more 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 be performed on the client devices 110A-110Z in other embodiments, as appropriate. In addition, functions attributed to a particular component may be performed by different or multiple components operating together. The content sharing platform 120, the content distribution network 130, or the proxy server 140 may also be accessed as a service offered to other systems or devices through appropriate application programming interfaces, and thus are not limited to use in a website.

[0043] Although embodiments of the present disclosure are discussed in terms of a content sharing platform and facilitating social network sharing of content items on the content sharing platform 120, the embodiments may be applied generally to any type of social network or content distribution platform that provides connections between users. Implementations of the present disclosure are not limited to content sharing platforms that provide users with subscriptions to channels.

[0044] In addition to the above, a user may be provided with controls that allow the user to make choices about both whether and when the systems, programs, or features described herein may enable the collection of user information (e.g., information about the user's social network, social actions, or activities, occupation, the user's preferences, or the user's current location) and whether the user will be sent content or communications from the server. Furthermore, certain data may be processed in one or more ways before being stored or used, such that personally identifiable information is removed. For example, the user's identity may be processed such that personally identifiable information cannot be determined about the user, or if location information is obtained, the user's geographic location may be generalized (such as to the city, zip code, or state level) and thus the user's specific location cannot be determined. Thus, the user may be able to control what information is collected about the user, how that information is used, and what information is provided to the user.

[0045] FIG. 2 is a diagram of operations for enabling initial playback of content while generating a content-based authentication token used to enable playback of the remainder of the content, according to an embodiment of the disclosure. The system 200 may include components similar to the system architecture 100 of FIG. 1. It may be noted that the components of FIG. 1 may be used to help explain FIG. 2. For purposes of illustration and not limitation, operations related to the 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 described. The operations described in connection with FIG. 2 are shown to be performed in sequence for purposes of illustration and not limitation. It may be noted that the operations may be performed in any order and that any of the operations 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] At 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 may log into 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 may send a cookie to the user device 110. The client device 110 may then generate the session-based authentication token based on the cookie via 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 initiates generation of a content-based authentication token. The content-based authentication token may be generated using information derived from, for example, previous (cached) playback events, the application that issued the content request, and a content identifier identifying 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 may retrieve initial information identifying the video item and initiate generation of the 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 initiate playback (a play button). The web page may include initial information identifying the video item. In response to a user request for playback of the video item (e.g., selection of the play button), the client device 110 may initiate generation of the content-based authentication token using the initial identification information from the data loaded into the GUI. In some embodiments, the client device 110 can initiate 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 a request for content is sent, or can be derived by the client device 110 from an initial portion of the requested content received by the client device 110. For example, the client device 110 can send a request to obtain content (operation 206, discussed below), and the content identifier can be included in a response to the request for content or derived from an initial portion 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 known, thereby resulting in a delayed generation process. Thus, the client device 110 can use the session-based authentication token (which may be generated prior to the playback of the content without any delay) to obtain the first playback of the requested content from the CDN network 130, and the content-based authentication token to obtain the remainder of the playback. The first playback may include only the first portion of the video item (e.g., the first 5 seconds of the video). Enabling the session-based token to obtain only the first portion of the video item provides protection against content requests that do not start at the beginning of the video. In particular, this prevents an unauthorized user from generating a valid session-based authentication token and requesting pieces of the entire video item (e.g., the first 5 seconds from the start of the video item, the second 5 seconds from the 5 second mark of the video item, etc.) and combining the pieces into one video.

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

[0050] In some embodiments, the content request may include the session-based authentication token generated in operation 202. In other embodiments, instead of a session-based authentication token, the content request may include an identifier of the client device, user, or user account attempting to obtain the content. For example, the user request may specify a username and password associated with the user account requesting to obtain the content. In another example, the request may include a cookie that identifies the client device 110 or an application on the user device, and the cookie may be used to identify the particular 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 of the client device, user, or user account attempting to obtain 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 a playback event identifier with the content request.

[0051] At operation 210, the data authorization service 124 of the content sharing platform 120 may authorize the content request. To authorize the request, the data authorization service 124 may, for example, authenticate the session-based authentication token using an authentication process. For example, performing the authentication process may include decrypting the session-based authentication token, determining a cryptographic signature of the session-based authentication token, checking the session-based authentication token for spam bits, and / or performing any other process related to authenticating 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, the user, or the user account is authorized to obtain the content. In some embodiments, the request may identify account information for the user account requesting to obtain the content. For example, the account information may be encrypted in a cookie. In another example, the account information may be entered by the user and provided in the request. In some embodiments, the account information, such as a username and password, may be authenticated by the data authorization service 124 by comparing the account information (e.g., a received username and password) to a stored record of the account information. If the account information of the request matches the account information of the record, the data authorization service 124 may determine that the particular user account is authenticated.

[0053] In some embodiments, in response to failure to authenticate the 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 obtain the content, the data authorization service 124 may send a message to the client device 110 indicating that authorization to obtain the requested content is not granted. In some embodiments, in response to a denial of the request to obtain the content by the data authorization service 124, 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, in response to either detecting one or more parameters processed during the session-based token authentication process (e.g., parameters related to a user account, a client device location, an IP address, etc.) or failing to authenticate a session-based authentication token (or identifier), the data authorization service 124 can initiate one or more actions. The actions may include applying digital rights management (DRM) restrictions (e.g., requesting that the client device 110 be provided with DRM playback using CDN-generated encryption), requesting verification of a ReCaptcha from the client device 110, requesting a user of the client device 110 to sign in, instructing the server 132 to throttle playback of the requested content, requesting verification of a content-based authentication token by the server 132, where the server 132 is instructed to deny a request for the remainder of the video item ("continue play") in response to a failure of the content-based authentication token verification process, requesting verification of a content-based authentication token by the server 132, where the server 132 is instructed to throttle the request for continue play in response to a failure of the content-based authentication token verification process, and denying the content request. In other embodiments, in response to a session-based authentication token or authentication of the client device, user, or user account, the data authorization service 124 may allow playback of the entire content without any restrictions.

[0055] In some embodiments, in response to authorization of the request to obtain the content by the data authorization service 124, the data authorization service 124 generates one or more resource locators (e.g., URLs) for authorizing the client device 110 to obtain a first play of the requested content from the CDN network 130. In some embodiments, the resource locator may identify a server of 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 particular server (e.g., server 132A, server 132B, etc.) that may be accessed to obtain a first play of the requested content. In some embodiments, the data authorization service 124 may append one or more cryptographically signed parameters (e.g., an expiration parameter, a bitrate parameter, an event identifier parameter, etc.) to the resource locator that may 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 to provide only a first play of the requested content (e.g., a predetermined amount of the requested content) to the client device 110. For example, the initial play may include the first 5 seconds of a video item associated with the requested content, which may be provided using a single resource locator. Additionally, the cryptographically signed parameters may indicate to the server 132 that each additional request for continued play (e.g., the remainder of the desired content using additional resource locators) should include a content-based authentication token.

[0056] In operation 212, in response to the authorization of the user account, the data authorization service 124 may send a response to the request for content (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 that indicate to the server 132 to provide only the initial playback of the requested content to the client device 110. In some embodiments, the response may also include the playback event identifier and / or the user account information. In some embodiments, the resource locator may be included in a 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.

[0057] At operation 214, the initial playback module 142 may request the content using the resource locator appended with the cryptographically signed parameters. For example, the initial playback module 142 may 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 the resource locator appended with the cryptographically signed parameters, as described above.

[0058] At operation 216, the server 132 may respond to the request from the initial play module 142 with data associated with the initial play, as dictated 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 play may be obtained using a single resource locator. At operation 218, the proxy server may transmit the initial play data to the client device 110 for user consumption. In some embodiments, in response to encrypting the initial play data, the initial play module 142 may decrypt the initial play data.

[0059] At operation 220, the client device 110 may finish generating the content-based authentication token.

[0060] At operation 222, the client device 110 may send a request to the server 132 for the remainder of the video item ("continue playing"). 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 a location (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 a format for the data to be received.

[0061] The server 132 may authenticate the content-based authentication token locally, or alternatively (at operation 224), the 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 token, determine a cryptographic signature of the content-based authentication token, check the content-based authentication token for spam bits, and / or perform any other process related to authenticating the content-based authentication token.

[0062] In some embodiments, in response to authorizing the request to obtain continuous play 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 play of the requested content from the server 132.

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

[0064] In some embodiments, CDN 130 may perform all or a portion of the validation of the content-based token, for example, using authorization module 138. For example, authorization module 138 may use a decryption key and library to validate the content-based authentication token. Thus, CDN 130 does not request data authorization service 124 to perform an authentication process on the content-based authentication token as discussed in connection with optional operations 224 and 226.

[0065] In some embodiments, CDN 130 may require that each additional request for continuous play from client device 110 be accompanied by a content-based authentication token. In some embodiments, rather than requiring a content-based authentication token for each additional content request, server 132 may instead request a session-based authentication token. For example, in operation 222, client device 110 may send a request for the remainder of the video item ("continue play") to server 132, where the request may include a session-based authentication token. In response to receiving the request and authenticating the session-based authentication token, server 132 may respond to the request with data related to the continuous play or send a resource locator for the continuous play to 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 reauthenticate 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, each request accompanied by the content-based authentication token (and playback event identifier), until the entire content is consumed by the user. In some embodiments, the server 132 can reject a client device 110 request for continued playback when 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 without a content-based authentication token or with an invalid content-based authentication token, the content sharing platform 120 and / or CDN 130 can impose one or more enforcement actions on the client device 110. For example, the content sharing platform 120 and / or CDN 130 may apply strict bandwidth limitations to the client device 110, reduce playback quality, apply DRM restrictions, require ReCaptcha verification, require the user of the client device 110 to sign in, etc.

[0067] In some embodiments, the server 132 (and / or the data authorization service 124) can track the status of the play event using a status tracking table. In particular, the server 132 can track the status of any ongoing play events by their respective play event identifiers. The status tracking table can indicate, for each play event identifier, whether the content-based authentication token has been verified, is pending verification, or has failed verification. Additionally, the server 132 can record in the status tracking table all outstanding requests for continuous play for which the content-based authentication token is still pending verification. Once verified, the server 132 can release the continuous play event. Additionally, the server 132 can remove the corresponding play event identifier from the status tracking table in response to an expiration parameter indicating the expiration of the resource locator's use. In some embodiments, the server 132 can remove the play event identifier from the status tracking table using other methods, such as a cache replacement policy (e.g., first in, first out, least recently used, etc.).

[0068] FIG. 3 is a diagram of operations for initiating playback of content while generating a content-based authentication token used to enable playback to continue, according to an embodiment of the present disclosure. The system 300 may include components similar to the system architecture 100 of FIG. 1. It may be noted that the components of FIG. 1 may be used to help explain FIG. 3. For purposes of illustration and not limitation, operations related to the 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 the system 300 unless otherwise described. The operations described in connection with FIG. 3 are shown to be performed sequentially for purposes of illustration and not limitation. It may be noted that the operations may be performed in any order and that any of the operations 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] At 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 may log into 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 may send a cookie to the user device 110. The client device 110 may then generate the session-based authentication token based on the cookie via 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 initiates generation of a content-based authentication token. The content-based authentication token may be generated using information derived from, for example, previous (cached) playback events, 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 may retrieve initial information identifying the video item and initiate generation of the content-based authentication token (e.g., by applying a hashing 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 a video item and a button to start playback (a play button). The web page may include the initial information identifying the video item. In response to a user requesting playback of a video item (e.g., selecting a play button), the client device 110 can initiate generation of a content-based authentication token using initial identifying information from the data loaded into the GUI. In some embodiments, the client device 110 can initiate generation of a content-based authentication token using data other than a content identifier and then use the content identifier. That is, the content identifier can be provided by the data authorization service 124 after a request for content is sent, or can be derived by the client device 110 from an initial portion of the requested content received by the client device 110.For example, the client device 110 may send a request to obtain the content (operation 306, discussed below), and the content identifier may be included in a response to the request for the content or may be derived from an initial portion of the requested content received by the client device 110. In one example, generating a content-based token may require several seconds.

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

[0072] In some embodiments, the content request may include the session-based authentication token generated in operation 302. In other embodiments, instead of a session-based authentication token, the content request may include an identifier of the client device 110, user, or user account attempting to obtain the content. For example, the user request may specify a username and password associated with the user account requesting to obtain the content. In another example, the request may include a cookie that identifies the client device 110 or an application on the user device, and the cookie may be used to identify the particular user account. Upon receiving the 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] At operation 308, the data authorization service 124 of the content sharing platform 120 may authorize the content request. To authorize the request, the data authorization service 124 may, for example, authenticate the session-based authentication token using an authentication process. For example, performing the authentication process may include decrypting the session-based token, determining a cryptographic signature of the session-based token, checking the session-based token for spam bits, and / or performing any other process related to authenticating the session-based token.

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

[0075] In some embodiments, in response to failure to authenticate the 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 obtain the content, the data authorization service 124 may send a message to the client device 110 indicating that authorization to obtain the requested content is not granted. In some embodiments, in response to a denial of the request to obtain the content by the data authorization service 124, 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, in response to either detecting one or more parameters processed during the authentication process of a session-based authentication token (e.g., parameters related to a user account, a client device location, an IP address, etc.) or failing to authenticate a session-based authentication token (or identifier), the data authorization service 124 can initiate one or more actions. The actions may include applying digital rights management (DRM) restrictions (e.g., requesting that the client device 110 be provided with DRM playback using CDN-generated encryption), requesting verification of a ReCaptcha from the client device 110, requesting a user of the client device 110 to sign in, instructing the server 132 to throttle playback of the requested content, requesting verification of the content-based token by the server 132, where the server 132 is instructed to deny a request for the remainder of the video item ("continue play") in response to a failure of the content-based token verification process, requesting verification of the content-based token by the server 132, where the server 132 is instructed to throttle the request for continue play in response to a failure of the content-based token verification process, and denying the content request. In other embodiments, in response to a session-based authentication token or authentication of the client device, user, or user account, the data authorization service 124 may allow playback of the entire content without any restrictions.

[0077] In some embodiments, in response to authorization of the request to obtain content by the data authorization service 124, the data authorization service 124 generates a resource locator for authorizing the client device 110 to obtain playback of the requested content from the CDN 130. In some embodiments, the resource locator (e.g., a URL) may identify a server of 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 particular server (e.g., server 132A, server 132B, etc.) that may be accessed to obtain playback of the requested content. In some embodiments, the data authorization service 124 may append one or more cryptographically signed parameters to the resource locator that may be used to indicate to the CDN 130 that it will provide playback of the requested content to the client device 110 for a predetermined amount of time (e.g., 5 seconds). Additionally, the parameters may indicate to the CDN 130 to terminate playback for the client device 110 in response to receiving a content-based token from the client device 110 or to failing authentication.

[0078] At operation 310, in response to the authorization of the user account, the data authorization service 124 may send a response to the request for content (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 that indicate to the server 132 to provide playback of the requested content to the client device 110 for a predetermined period of time and to terminate playback if the server 132 fails to receive a content-based authentication token within the period of time. In some embodiments, the response may also include the playback event identifier and / or the user account information. In some embodiments, the resource locator may be included in a 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] At operation 312, the client device 110 may request the content using the resource locator appended with the cryptographically signed parameters. For example, the client device 110 may 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 the resource locator appended with the cryptographically signed parameters, as described above.

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

[0081] At operation 318, the client device 110 may transmit the content-based authentication token to the server 132. In some embodiments, the content-based authentication token may be transmitted using a side channel. For example, a 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 transmit the content-based authentication token to the server 132.

[0082] The server 132 may authenticate the content-based authentication token locally, or alternatively (at optional operation 320), the 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 a cryptographic signature of the content-based authentication token, check the content-based authentication token for spam bits, and / or perform any other process related to authenticating the content-based authentication token.

[0083] In response to authentication of the content-based authentication token by the data authorization service 124 of the content sharing platform 120, the data authorization service 124 may (at optional operation 322) send a response to the server 132 verifying the authenticity of the content-based authentication token. In response to the content-based token being authentic, the server 132 may continue providing playback to the client device 110. In response to the content-based authentication token being invalid, the server 132 may terminate playback to the client device 110.

[0084] In some embodiments, the CDN 130 may perform all or a portion of the validation of the content-based authentication token, for example, using the authorization module 138. For example, the authorization module 138 may validate the content-based authentication token using a decryption key and library. In some embodiments, in response to failing to receive the content-based authentication token or receiving an invalid content-based authentication token, the content sharing platform 120 and / or the CDN 130 may impose one or more enforcement actions on the client device 110. For example, the content sharing platform 120 and / or the CDN 130 may apply strict bandwidth restrictions to the client device 110, reduce playback quality, apply digital rights management (DRM) restrictions, require ReCaptcha validation, require the user of the client device 110 to sign in, etc.

[0085] In some embodiments, the server 132 (and / or the data authorization service 124) may track the status of playback events using a status tracking table. In particular, the server 132 may track the status of any ongoing playback events by their respective playback event identifiers. The status tracking table may indicate, for each playback event identifier, whether the content-based authentication token has been verified, is pending verification, or has failed verification. Additionally, the server 132 may record in the status tracking table all outstanding requests for continued playback for which the content-based authentication token is still pending verification. In some embodiments, the server 132 may pause playback after a predefined period for viewing the content has expired until a content-based authentication token is received and / or verified. Once verified, the server 132 may resume the continued playback event. Additionally, the server 132 may remove the corresponding playback event identifier from the status tracking table in response to an expiration parameter indicating an expiration of the use of the resource locator. In some embodiments, the server 132 may use other methods to remove play event identifiers from the status tracking table, such as a cache replacement policy (eg, first in, first out, least recently used, etc.).

[0086] FIG. 4 illustrates a flow diagram of a method 400 for authorizing initial playback of content on a client device while waiting for a content-based authentication token used to enable the remaining playback, according to an embodiment 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 of the operations of the method 400 may be performed by one or more components of the system 100 of FIG. 1. In other embodiments, one or more operations of the method 400 may be performed by an authorization module, a data authorization service 124, or an initial playback module 142 of the content distribution network 130 described in connection with FIGS. 1-3. It may be noted that the components described in connection with FIGS. 1-3 may be used to illustrate the aspects of FIG. 4.

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

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

[0089] At block 406, the processing logic initiates playback of the requested content at the client device. In some embodiments, initiating playback of the requested content may include, upon validating the session-based authentication token, associating the request for the content with a playback event identifier of the playback event and generating a response related to the playback event identifier. The response may include one or more resource locators for obtaining the requested content and a parameter authorizing playback of the initial portion of the requested content. Additionally, the parameter 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 the playback event identifier. In some embodiments, initiating playback of the requested content may include, upon validating the session-based authentication token, providing an indication (or instruction) to the CDN server to begin serving / streaming the initial portion of the requested content to the client device and providing a response related to the playback event identifier to the client device. The response may include one or more resource locators for obtaining the requested content (e.g., the remainder of the requested content) and the playback event identifier.

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

[0091] In some embodiments, the response includes multiple resource locators that are each used to obtain a respective additional portion of the requested content, and the parameter can indicate that a valid content-based authentication token is required to obtain each of the multiple additional portions of the requested content.

[0092] In other embodiments, the response may include a single resource locator for obtaining the requested content, and the parameter may indicate that a valid content-based authentication token is required to be received within a predetermined period of time from the start of playback of the requested content 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 the requested content at the client device includes receiving a content-based authentication token provided by the client device, validating the content-based authentication token, and notifying a CDN server (e.g., server 132) that the content-based authentication token is valid. In other embodiments, the content-based authentication token may be validated using authorization module 138 of CDN 130 or a third-party service.

[0094] At block 408, in response to a valid content-based authentication token provided by the client device, the processing logic continues playback of the requested content at the client device. The valid content-based authentication token may be based on an 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 failure to receive a valid content-based authentication token, playback of additional portions of the requested content is prevented, as described above.

[0095] FIG. 5 illustrates a flow diagram of a method 500 for requesting playback while generating a content-based authentication token used to prevent playback termination, according to an embodiment 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 of the operations of the method 500 may be performed by one or more components of the system 100 of FIG. 1. In other embodiments, one or more operations of the method 500 may be performed by an authorization module and / or a data authorization service 124 of the content distribution network 130 described in connection with FIGS. 1-3. It may be noted that the components described in connection with FIGS. 1-3 may be used to illustrate aspects of FIG. 5.

[0096] At block 502, processing logic implementing method 500 receives user input identifying 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] At block 504, processing logic initiates generation of a content-based authentication token based on the desired content. In some embodiments, the content-based authentication token may be generated by processing logic based on an identifier of the desired content, an identifier of the application of the client device that issued the first request for the desired content, and / or data associated with a previous playback event initiated by the application of the client device.

[0098] At 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 associated with a session between the client device and the content sharing platform.

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

[0100] At block 510, processing logic begins playback of the desired content using the first portion. Playback of the desired content may begin before generation of the content-based authentication token is completed at the client device.

[0101] At block 512, upon completing generation of the content-based authentication token, the processing logic 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 additional portions includes a respective one of the resource locators. The second request may be sent repeatedly with the content-based authentication token and the respective resource locators to obtain further additional portions of the desired content.

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

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

[0104] At block 516, processing logic continues playing the desired content using the additional portions.

[0105] 6 is a block diagram illustrating an exemplary computer system 600 according to an embodiment of the present disclosure. The computer system 600 executes one or more sets of instructions that cause the machine to perform any one or more of the methods discussed 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 playback 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 a 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) that specify actions to be taken by the machine. Additionally, although only a single machine is shown, the term "machine" is also intended to include any collection of machines that individually or in cooperation execute a set of instructions to perform any one or more of the methodologies discussed herein.

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

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

[0108] The computer system 600 may further include a network interface device 622 that provides communication with other machines over a network 618, such as a local area network (LAN), an intranet, an extranet, or the Internet. The computer system 600 may also include a display device 610 (e.g., a liquid crystal display (LCD) or a 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 generation device 620 (e.g., a speaker).

[0109] The data storage device 616 may include a non-transitory computer-readable storage medium 624 on which a set of instructions for the system architecture 100 or the authorization module 138 embodying any one or more of the methods or functions described herein are stored. The set of instructions for the system architecture 100 or the authorization module 138 may reside, completely or at least partially, within the main memory 604 and / or within the processing device 602 during execution of those instructions by the computer system 600, and the main memory 604 and the processing device 602 constitute computer-readable storage media. The set of instructions may further be transmitted or received over the network 618 via the network interface device 622.

[0110] Although the example of computer readable storage medium 624 is shown as a single medium, the term "computer readable storage medium" may include a single medium or multiple media that store a set of instructions (e.g., centralized or distributed databases and / or associated caches and servers). The term "computer readable storage medium" may include any medium that can store, encode, or carry a set of instructions for execution by a machine and cause the machine to perform any 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] In the above description, numerous details have been set forth. However, it will be apparent to one of ordinary skill in the art having the benefit of this disclosure that the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices have been shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure.

[0112] Some portions of the detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, primarily for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

[0113] It may be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless expressly stated otherwise, discussions utilizing terms such as "generate," "provide," "adjust," "receive," "cancel," and the like throughout the description are understood to refer to the acts and processes of a computer system or similar electronic computing device that manipulate and convert data represented as physical (e.g., electronic) quantities in the computer system's memory or registers into other data that are similarly represented as physical quantities in the computer system's memory or registers or other such information storage, transmission, or display device.

[0114] The present disclosure also relates to an apparatus for carrying out the operations herein. This apparatus may be specially constructed for the required purposes or may include a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer-readable storage medium, such as, but not limited to, any type of disk including a floppy disk, an optical disk, a compact disk read-only memory (CD-ROM), a magneto-optical disk, a read-only memory (ROM), a random access memory (RAM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic or optical card, or any type of medium suitable for storing electronic instructions.

[0115] The word "example" or "exemplary" is used herein to mean serving as an example, instance, or example. Any aspect or design described herein as "example" or "exemplary" should not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "example" or "exemplary" is intended to present a concept in a concrete manner. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless otherwise specified or clear 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, then "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 appended claims may generally be considered to mean "one or more" unless otherwise specified or the context makes clear that a singular form is intended. Furthermore, the use of the terms "an embodiment", "one embodiment", "an implementation", or "one implementation" throughout is not intended to refer to the same embodiment or implementation unless so described. The terms "first", "second", "third", "fourth", etc. used herein are intended as labels to distinguish different elements and may not necessarily have an ordering meaning according to the numerical designation of those terms.

[0116] For ease of explanation, the methods herein are depicted and described as a series of acts or operations. However, acts in accordance with the present disclosure may be performed in various orders and / or simultaneously, as well as with other acts not presented and described herein. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the disclosed subject matter. In addition, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events via a state diagram. Moreover, it should be appreciated that the methods disclosed herein can be stored in an article of manufacture to facilitate carrying and transferring such methods to a computing device. The term article of manufacture as used herein is intended to encompass a computer program accessible from any computer-readable device or storage medium.

[0117] In further embodiments, one or more processing devices are disclosed for performing the operations of the above-described embodiments. Additionally, in embodiments of the present disclosure, a non-transitory computer-readable storage medium stores instructions for performing the operations of the described embodiments. In other embodiments, systems for performing the operations of the described embodiments are also disclosed.

[0118] It is to be understood that the foregoing description is intended to be illustrative, and not limiting. Other embodiments will be apparent to those skilled in the art upon reading and understanding the above description. Thus, the scope of the present disclosure may be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. [Explanation of symbols]

[0119] 100 System Architecture 104 Network 106 Datastore 110 Client Device, User Device 110A~110Z Client Devices 112 Media player, media viewer 114 Token Module 120 Content Sharing Platform 122 Media Items 124 Data Authorization Service 130 Content Distribution Network (CDN) 132 Server machine, server 132A~132Z Server machines, servers 134 Datastore 136 Data Files 137 Encryption Key 138 Authorization Module 140 Proxy Server 142 Initial Regeneration Module 151 Authorization Module 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 Device 614 Cursor Control Device 616 Data Storage Devices 618 Network 620 Signal Generating Device 622 Network Interface Device 624 Non-transitory computer-readable storage media

Claims

1. receiving, by a content sharing platform, a request for content from a client device, the request for content including a session-based authentication token associated with a session between the client device and the content sharing platform; validating the session-based authentication token; initiating playback of the requested content at the client device; and continuing playback of the requested content at the client device in response to a valid content-based authentication token provided by the client device, the valid content-based authentication token being based on an identifier of the requested content.

2. initiating playback of the requested content at the client device, upon validating the session-based authentication token, associating the request for content with a playback event identifier of a playback event; 2. The method of claim 1, comprising: generating a response associated with the playback event identifier, the response including one or more resource locators for obtaining the requested content and a parameter authorizing playback of an initial portion of the requested content and indicating that the valid content-based authentication token is required for playback of additional portions of the requested content.

3. 3. The method of claim 2, wherein the response includes a plurality of resource locators each used to obtain a respective one of a plurality of additional portions of the requested content, and the parameter indicates that the valid content-based authentication token is required to obtain each of the plurality of additional portions of the requested content.

4. 3. The method of claim 2, wherein the response includes a single resource locator for obtaining the requested content, and the parameter indicates that the valid content-based authentication token is required to be received within a predetermined time period from the start of the playback of the requested content to avoid terminating the playback of the requested content and to allow the playback of the additional portion of the requested content.

5. 3. The method of claim 2, further comprising the step of preventing the playback of the additional portion of the requested content in response to failure to receive the valid content-based authentication token.

6. Continuing playback of the requested content at the client device includes: receiving a content-based authentication token provided by the client device; validating the content-based authentication token; and and notifying a content delivery network (CDN) server that the content-based authentication token is valid.

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

8. The method of claim 1 , wherein the playback of the requested content begins at the client device before the generation of the valid content-based authentication token is completed at the client device.

9. receiving, by a client device, user input identifying desired content; initiating, by the client device, generation of a content-based authentication token based on the desired content; sending, by the client device, a first request for the desired content to a content sharing platform, the first request including a session-based authentication token associated with a session between the client device and the content sharing platform; receiving, by the client device, a first portion of the desired content from the content sharing platform; initiating playback of the desired content using the first portion at the client device; upon completing the generation of the content-based authentication token, sending a second request for an additional portion of the desired content, the second request including the content-based authentication token; receiving the additional portion of the desired content; and continuing the playing of the desired content using the additional portion.

10. 10. The method of claim 9, further comprising: receiving a response from the content sharing platform to the first request for the desired content, the response including a playback event identifier of a playback event associated with the first request and one or more resource locators for obtaining the desired content.

11. 11. The method of claim 10, wherein the response includes a plurality of resource locators each used to obtain a respective one of a plurality of additional portions of the desired content, the second request for the additional portions includes a respective resource locator of the plurality of resource locators, and the second request is repeatedly sent with the content-based authentication token and a respective resource locator for obtaining further additional portions of the desired content.

12. 11. The method of claim 10, wherein the response includes a single resource locator for obtaining the desired content, and wherein the second request for the additional portion includes the single resource locator, and wherein the second request is required to be sent along with the content-based authentication token within a predetermined time period from the start of the playback of the desired content to avoid terminating the playback of the desired content.

13. 11. The method of claim 10, wherein a valid content-based authentication token is generated by the client device based on an identifier of the desired content, an identifier of an application of the client device that issued the first request for the desired content, and data related to a previous playback event initiated by an application of the client device.

14. 10. The method of claim 9, wherein the playback of the desired content begins before the generation of the content-based authentication token is completed at the client device.

15. Memory, a processing device coupled to the memory, receiving, by a content sharing platform, a request for content from a client device, the request for content including a session-based authentication token associated with a session between the client device and the content sharing platform; validating the session-based authentication token; initiating playback of the requested content at the client device; and and a processing device for continuing playback of the requested content at the client device in response to a valid content-based authentication token provided by the client device, the valid content-based authentication token being based on an identifier of the requested content.

16. Initiating playback of the requested content at the client device includes: upon validating the session-based authentication token, associating the request for content with a playback event identifier of a playback event; 16. The system of claim 15, further operable to: generate a response associated with the playback event identifier, the response including one or more resource locators for obtaining the requested content and a parameter authorizing playback of an initial portion of the requested content and indicating that the valid content-based authentication token is required for playback of additional portions of the requested content.

17. 17. The system of claim 16, wherein the response includes a plurality of resource locators each used to obtain a respective one of a plurality of additional portions of the requested content, and the parameter indicates that the valid content-based authentication token is required to obtain each of the plurality of additional portions of the requested content.

18. 17. The system of claim 16, wherein the response includes a single resource locator for obtaining the requested content, and the parameter indicates that the valid content-based authentication token is required to be received within a predetermined time period from the start of playback of the requested content to avoid terminating the playback of the requested content and to allow the playback of the additional portion of the requested content.

19. the processing device comprising:

17. The system of claim 16, further operable to prevent the playback of the additional portion of the requested content in response to failure to receive the valid content-based authentication token.

20. In response to execution by a processing device, receiving user input identifying desired content; initiating generation of a content-based authentication token based on the desired content; an operation of sending a first request for the desired content to a content sharing platform, the first request including a session-based authentication token associated with a session between a client device and the content sharing platform; receiving a first portion of the desired content from the content sharing platform; commencing playback of the desired content using the first portion; an act of sending a second request for an additional portion of the desired content upon completing the generation of the content-based authentication token, the second request including the content-based authentication token; receiving the additional portion of the desired content; and continuing the playing of the desired content using the additional portion.

21. The instructions are 21. The non-transitory computer-readable medium of claim 20, further comprising an operation of receiving a response from the content sharing platform to the first request for the desired content, the response including a playback event identifier for a playback event associated with the first request and one or more resource locators for obtaining the desired content.

22. 22. The non-transitory computer-readable medium of claim 21, wherein the response includes a plurality of resource locators each used to obtain a respective one of a plurality of additional portions of the desired content, the second request for the additional portions includes a respective resource locator of the plurality of resource locators, and the second request is repeatedly sent with the content-based authentication token and a respective resource locator for obtaining further additional portions of the desired content.

23. 22. The non-transitory computer-readable medium of claim 21, wherein the response includes a single resource locator for obtaining the desired content, and wherein the second request for the additional portion includes the single resource locator, and wherein the second request is required to be sent along with the content-based authentication token within a predetermined time period from the start of the playback of the desired content to avoid termination of the playback of the desired content.

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