コンテンツ共有プラットフォーム(本明細書においては「コンテンツ配信プラットフォーム」とも呼ばれる)は、クライアントデバイスを介してユーザにビデオアイテム、オーディオアイテム、またはゲームアイテムなどのコンテンツを提供する可能性がある。ユーザは、コンテンツ共有プラットフォームにアクセスし、コンテンツをアップロードするおよび/または消費するためにコンテンツ共有プラットフォームに関連するユーザアカウントにログインする可能性がある。コンテンツ共有プラットフォームは、コンテンツをクライアントデバイスに配信するためにコンテンツ配布ネットワーク(CDN: content distribution network)(本明細書においては「コンテンツ配信ネットワーク」とも呼ばれる)を使用する場合がある。CDNは、コンテンツの配信の高い可用性および高い性能を提供するために一緒に働くサーバの地理的に分散されたネットワークを含み得る。たとえば、クライアントデバイスAと同じ地理的近傍にあるCDNのサーバAが、クライアントデバイスAにコンテンツを配信するために選択され得る。サーバAによって配信されるコンテンツは、クライアントデバイスAと同じ地理的近傍にない別のサーバ、CDNのサーバBよりも迅速にクライアントデバイスAに配信され得る。
一部のシステムにおいて、ユーザは、クライアントデバイスの(たとえば、モバイルアプリケーション、ウェブブラウザなどによって提供される)認可されたメディアプレイヤーを介して、コンテンツ共有プラットフォームからのコンテンツを要求することができる。コンテンツ共有プラットフォームは、認可サービスを使用して、ユーザが要求されたコンテンツにアクセスするパーミッションを有するかどうかを決定するためにユーザに関連するユーザアカウントを認可し得る。ユーザアカウントがコンテンツにアクセスすることを認可される場合、コンテンツ共有プラットフォームは、CDNから要求されたコンテンツを取得するためにクライアントデバイスによって使用され得る1つまたは複数のリソースロケータ(たとえば、ユニフォームリソースロケータ(URL))を生成することができる。
しかし、場合によっては、ユーザは、認可されていないメディアプレイヤー(たとえば、オーバーレイアプリケーション(overlay application)、サードパーティのメディアプレイヤー、修正されたメディアプレイヤーなど)を使用して、CDNからのコンテンツにアクセスし、受信されたコンテンツに対して認可されていない機能を実行し得る。たとえば、認可されていないメディアプレイヤーは、認可されたメディアプレイヤーによって禁止され得る特徴である、受信されたコンテンツをストレージ媒体にダウンロードすることが可能であり得る。現在のシステムにおいて、認可されていないメディアプレイヤーからのコンテンツ要求を特定することは困難である。これは、コンテンツ共有プラットフォームが、要求されたコンテンツにアクセスするパーミッションを認可されていないメディアプレイヤーに誤って与える原因となり、認可されていないメディアプレイヤーが受信されたコンテンツに対して認可されていない機能を実行することにつながり得る。さらに、認可されたメディアプレイヤーは、認可されたメディアプレイヤーの真正性を証明することができる、各コンテンツ要求に関する偽造が困難な認証トークンを生成することが可能であるが、これらのコンテンツに関連する認証トークンを生成することは、時間がかかり得る。したがって、コンテンツに関連する認証トークンの使用は、各コンテンツ要求に関して望ましくないレイテンシを引き起こしかねず、そのレイテンシは、ユーザに不便をかけかねない。
本開示の態様および実装は、所望のコンテンツの残りの部分を取得するために使用されるコンテンツベースの認証トークンを生成しながら、クライアントデバイスが所望のコンテンツの一部を消費することを可能にすることによって、既存のテクノロジーのこれらのおよびその他の欠点に対処する。特に、ユーザは、クライアントデバイスにおいて消費するコンテンツを選択することができる。そして、クライアントデバイスは、所望のコンテンツに基づく認証トークン(コンテンツベースの認証トークン)の生成を開始し、コンテンツ共有プラットフォームに所望のコンテンツの要求を送信することができる。一部の実施形態においては、要求に応答して、コンテンツ共有プラットフォームは、要求されたコンテンツにアクセスするためのCDNサーバに関連するアドレス(CDNリソースロケータ)を特定し、CDNリソースロケータに1つまたは複数の暗号署名されたパラメータを付加し、結果として得られるリソースロケータを返すことができる。パラメータは、リソースロケータを介してアクセスされた要求されたコンテンツがどのようにして提供されるべきかをCDNに示すために使用され得る、たとえば、リソースロケータの使用の期限を示すための有効期限パラメータ、要求されたコンテンツの所望のビットレートを示すためのビットレートパラメータ、コンテンツ要求に関連する再生イベントを特定するための再生イベント識別子パラメータなどを含み得る。また、パラメータは、CDNが要求されたコンテンツの最初の再生(たとえば、要求されたビデオの最初の5秒などの、要求されたコンテンツの最初の部分)をクライアントデバイスに提供するべきであり、所望のコンテンツの残りのそれぞれの追加の要求がコンテンツベースの認証トークンを含むべきであることを示し得る。
最初の再生を消費する間に、クライアントデバイスは、コンテンツベースの認証トークンの生成を終了することができる。したがって、クライアントデバイスは、それから、要求されたコンテンツの別の部分の要求をCDNに、コンテンツベースの認証トークンと一緒に送信することができる。そして、CDNは、コンテンツベースの認証トークンを認証することができ、CDNによるコンテンツベースの認証トークンの真正性の検証に応答して、CDNは、要求されたコンテンツの別の部分の追加のリソースロケータをクライアントデバイスに送信することができる。一部の実施形態において、残りのコンテンツの一部のそれぞれの追加の要求は、コンテンツベースの認証トークンをともなうべきである。
CDNによるコンテンツベースの認証トークンをともなう追加の要求の受信およびコンテンツベースの認証トークンの認証に応答して、CDNは、追加のコンテンツ要求に対応するコンテンツの部分を提供する。CDNによるコンテンツベースの認証トークンを持たない追加の要求の受信に応答して(またはCDNがコンテンツベースの認証トークンを認証することに失敗する場合)、CDNは、追加のコンテンツ要求を拒否することができる。
要求されたコンテンツが単一のリソースロケータを介してアクセスされ得る一部の実施形態において、コンテンツ共有プラットフォームは、CDNが所定の量の時間(たとえば、5秒)の間、要求されたコンテンツの再生をクライアントデバイスに提供するべきであり、その後、再生が継続するかまたは終了されるかどちらかであるべきであることを示す1つまたは複数の暗号署名されたパラメータをリソースロケータに付加することができる。特に、CDNは、所定の量の時間内にコンテンツベースの認証トークンを受信しない場合、再生を終了するべきである。あるいは、CDNは、所定の量の時間内にコンテンツベースの認証トークンを受信する場合、再生を継続するべきである。一部の実装において、クライアントデバイスは、プライマリ通信チャネルを使用してコンテンツの消費を開始し、コンテンツベースの認証トークンが生成されると、たとえば、サイドチャネル(たとえば、別個の通信チャネル、異なるポートなど)を使用してCDNにトークンを送信することができる。CDNによるコンテンツベースの認証トークンの受信に応答して、CDNは、クライアントデバイスが要求されたコンテンツの消費を終了することを可能にし得る。
本開示の態様は、クライアントデバイスのメディアプレイヤーの性能の向上と、コンテンツ共有プラットフォームの性能の向上とをもたらす。特に、本開示の態様は、コンテンツ共有プラットフォームおよびCDNが、偽造が困難な認証トークンを使用することによって、コンテンツを要求するメディアプレイヤーの真正性を検証することを可能にし、それによって、認可されていないメディアプレイヤーがCDNからのコンテンツにアクセスすることおよびコンテンツに対して認可されていない機能を実行することを防止する。さらに、本明細書において開示されるテクノロジーは、ユーザを望ましくないレイテンシにさらすことなく、偽造が困難な認証トークンの生成を可能にする。したがって、本明細書に開示されるテクノロジーは、ユーザが安定した中断のない視聴体験をすることを可能にする。
本開示の実装は、簡単および簡潔にするためにビデオを参照することが多い。しかし、本開示の教示は、メディアアイテムに広く適用され、たとえば、ビデオ、オーディオ、テキスト、画像、プログラム命令などを含む様々な種類のコンテンツに適用されてよい。
図1は、本開示の1つの実装による例示的なシステムアーキテクチャ100を示す。システムアーキテクチャ100(本明細書においては「システム」とも呼ばれる)は、コンテンツ共有プラットフォーム120(本明細書においては「コンテンツ配布プラットフォーム」とも呼ばれる)、データストア106、ネットワーク104に接続されたクライアントデバイス110A~110Z(本明細書においては全体的に「クライアントデバイス110」と呼ばれる)、プロキシサーバ140、およびコンテンツ配布ネットワーク(CDN)130(本明細書においては「コンテンツ配信ネットワーク」とも呼ばれる)を含む。CDN 130は、複数のサーバマシン132A~132Z(本明細書においては「サーバ132A~132Z」とも呼ばれる)を含む可能性がある。
ネットワーク104は、パブリックネットワーク(たとえば、インターネット)、プライベートネットワーク(たとえば、ローカルエリアネットワーク(LAN)もしくは広域ネットワーク(WAN))、有線ネットワーク(たとえば、イーサネットネットワーク)、ワイヤレスネットワーク(たとえば、802.11ネットワークもしくはWi-Fiネットワーク)、セルラネットワーク(たとえば、ロングタームエボリューション(LTE)ネットワーク)、ルータ、ハブ、スイッチ、サーバコンピュータ、および/またはこれらの組合せを含む可能性がある。
データストア106は、(メディアアイテムなどの)コンテンツアイテムおよびコンテンツアイテムをタグ付けし、編成し、インデックス付けするデータ構造を記憶することができる永続的なストレージである可能性がある。データストア106は、メインメモリ、磁気または光ストレージに基づくディスク、テープまたはハードドライブ、NAS、SANなどの1つまたは複数のストレージデバイスによってホストされる可能性がある。一部の実施形態において、データストア106は、ネットワークアタッチトファイルサーバ(network-attached file server)である可能性があり、一方、その他の実施形態において、データストア106は、コンテンツ共有プラットフォーム120またはコンテンツ共有プラットフォーム120に結合された1つもしくは複数の異なるマシンによってホストされる可能性があるオブジェクト指向データベース、リレーショナルデータベースなどの何らかのその他の種類の永続的なストレージである可能性がある。一部の実施形態において、データストア106は、ネットワーク104を介してコンテンツ共有プラットフォーム120に結合されてよい。
クライアントデバイス110A~110Zは、それぞれ、パーソナルコンピュータ(PC)、ラップトップ、モバイル電話、スマートフォン、タブレットコンピュータ、ネットブックコンピュータ、ネットワークに接続されたテレビなどのコンピューティングデバイスを含む可能性がある。一部の実施形態において、クライアントデバイス110A~110Zは、「ユーザデバイス」とも呼ばれる可能性がある。一部の実施形態において、各クライアントデバイス110A~110Zは、メディアプレイヤー112(またはメディアビュワー)およびトークンモジュール114を含んでよい。一部の実施形態において、メディアプレイヤー112は、ユーザが画像、ビデオアイテム、ウェブページ、ドキュメント、オーディオアイテムなどのコンテンツを再生するか、閲覧するか、またはアップロードすることを可能にするアプリケーションであってよい。たとえば、メディアプレイヤー112は、ウェブサーバによって提供されるコンテンツ(たとえば、ハイパーテキストマークアップ言語(HTML)ページなどのウェブページ、デジタルメディアアイテムなど)にアクセスするか、それらのコンテンツを取り出すか、またはナビゲートすることができるウェブブラウザである可能性がある。メディアプレイヤー112は、ユーザに対してコンテンツ(たとえば、ウェブページ、メディアビュワー)をレンダリングするか、表示するか、または提示し得る。メディアプレイヤー112は、ウェブページ(たとえば、オンライン売買業者によって販売される製品についての情報を提供する可能性があるウェブページ)に埋め込まれる埋め込みメディアプレイヤー(たとえば、Flash(登録商標)プレイヤーまたはHTML5プレイヤー)も含み得る。別の例において、メディアプレイヤー112は、ユーザがデジタルメディアアイテム(たとえば、デジタルビデオアイテム、デジタル画像、電子ブックなど)を再生することを可能にするスタンドアロンのアプリケーション(たとえば、モバイルアプリケーションまたはネイティブアプリケーション)であり得る。本開示の態様によれば、メディアプレイヤー112は、ユーザがコンテンツ共有プラットフォーム上で共有するためにコンテンツを記録し、編集し、および/またはアップロードするためのコンテンツ共有プラットフォームアプリケーションであり得る。したがって、メディアプレイヤー112は、コンテンツ共有プラットフォーム120によってクライアントデバイス110A~110Zに提供され得る。たとえば、メディアプレイヤー112は、コンテンツ共有プラットフォーム120によって提供されるウェブページに埋め込まれる埋め込みメディアプレイヤーであり得る。別の例において、メディアプレイヤー112は、コンテンツ共有プラットフォーム120からダウンロードされるアプリケーションである可能性がある。
クライアントデバイス110によってホストされるトークンモジュール114は、1つまたは複数の認証トークンを生成するために使用され得る。認証トークンは、デジタルメディアアイテムの各コンテンツ要求に関して生成され得る。認証トークンは、クライアント110によってコンテンツ共有プラットフォーム120、コンテンツ配布ネットワーク130、および/またはプロキシサーバ140に送信されることが可能であり、そのとき、コンテンツ共有プラットフォーム120、コンテンツ配布ネットワーク130、および/またはプロキシサーバ140は、認証トークンを復号すること、認証トークンの暗号署名を判定すること、認証トークンのスパムビット(spam bit)を検査すること、および/またはトークンの認証に関連する任意のその他のプロセスを実行することによって認証プロセスを実行することができる。認証トークンの認証に応答して、コンテンツ共有プラットフォーム120および/またはコンテンツ配布ネットワーク130は、要求されたデジタルメディアアイテムの再生を開始または継続することができる。一部の実施形態において、認証トークンは、下でさらに詳細に検討されるように、クライアント110および/またはコンテンツ要求の真正性を再確認するために、コンテンツ共有プラットフォーム120および/またはコンテンツ配布ネットワーク130の少なくとも一方に周期的に送信され得る。
一部の実施形態において、認証トークンは、セッションベースの認証トークンおよび/またはコンテンツベースの認証トークンであることが可能である。セッションベースの認証トークンは、デジタルメディアアイテムのコンテンツ要求を開始するユーザまたはユーザアカウントに関連するデータを使用して生成された認証トークンであることが可能である。たとえば、セッションベースの認証トークンは、クライアントデバイス110またはクライアントデバイス110のアプリケーションを特定する情報と、ハッシュアルゴリズムとを使用して生成され得る。特定する情報は、たとえば、特定のクライアントデバイスまたはアプリケーション(たとえば、ブラウザ)に固有のいくらかの量のデータを保持する、クライアントデバイス110に記憶されるファイルを指し得るクッキーの形態であることが可能である。たとえば、ユーザは、ユーザアカウント情報を使用してコンテンツ共有プラットフォーム120にログインし得る。ユーザアカウントの認可に応答して、コンテンツ共有プラットフォーム120は、クライアントデバイス110にクッキーを送信することができる。クライアントデバイス110は、トークンモジュール114によって、クッキーに基づいてセッションベースの認証トークンを生成することができる。クライアントデバイス110は、コンテンツ共有プラットフォーム120へのコンテンツ要求にセッションベースの認証トークンを含めることができる。一部の実施形態において、クッキーは、アカウント情報の暗号化されたバージョンを含むキー-値ペアを含み得る。
コンテンツベースの認証トークンは、ユーザによって要求されたデジタルメディアアイテムに関連するデータを使用して生成された認証トークンであることが可能である。たとえば、コンテンツベースの認証トークンは、デジタルメディアアイテムの識別情報と、ハッシュアルゴリズムとを使用して生成され得る。セッションベースの認証トークンと比較して、新しいコンテンツベースの認証トークンは、たとえば、それぞれのデジタルメディアアイテムに関連するコンテンツ識別子に基づいて、各デジタルメディアアイテム要求に関して生成されることが可能であり、一方、各デジタルメディアアイテム要求に関して同じセッションベースの認証トークンが使用されることが可能である。下で詳細に説明されるように、コンテンツ識別子は、コンテンツ共有プラットフォーム120によって再生プロセスが開始されるまで、クライアントデバイス110に知られていない場合がある。ただし、セッションベースの認証トークンは、いかなる再生よりも前に生成され得る。したがって、クライアントデバイス110は、セッションベースの認証トークンを使用して再生を開始し、それから、最初の再生の消費中に生成されたコンテンツベースの認証トークンを使用して再生を継続するおよび/または再生の終了を防止することができる。
一部の実施形態において、コンテンツ要求のために、クライアントデバイス110は、最初のコンテンツ要求をセッションベースの認証トークンと一緒にコンテンツ共有プラットフォーム120に送信することができる。そのとき、コンテンツ共有プラットフォーム120は、セッションベースの認証トークンを認証し、コンテンツ要求のための再生イベントを作成し、コンテンツ要求を再生イベント識別子に関連付けることができる。また、コンテンツ共有プラットフォーム120は、要求されたコンテンツの最初の再生をクライアントデバイス110に提供するようにCDN 130に命令することができる。さらに、コンテンツ共有プラットフォーム120は、コンテンツベースの認証トークンを、要求されたコンテンツの継続再生のそれぞれの追加の要求と一緒にCDN 130に送信することをクライアントデバイス110に要求するようにCDN 130に命令することができる。これは、下でより詳細に検討されるように、コンテンツ共有プラットフォーム120が、クライアントデバイス110が要求されたコンテンツの最初の再生を消費することを可能にする前にセッションベースの認証トークンなどの認証トークンを受信すること可能にし、CDN 130が、クライアントデバイス110が要求されたコンテンツの残りの再生を消費することを可能にする前にコンテンツベースの認証トークンなどの比較的強力な認証トークンを受信することを可能にする。
一部の実施形態において、コンテンツ共有プラットフォーム120、プロキシサーバ140、および/またはサーバマシン132A~132Zは、ユーザにメディアアイテムへのアクセスを提供するかまたはユーザにメディアアイテムを提供するために使用されてよい(ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなどの)1つまたは複数のコンピューティングデバイス、データストア(たとえば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェア構成要素、またはハードウェア構成要素である場合がある。たとえば、コンテンツ共有プラットフォーム120は、ユーザがメディアアイテムを消費するか、アップロードするか、検索するか、賛成する(「いいね!」)か、賛成しない(「気に入らない!」)か、またはコメントすることを可能にする可能性がある。コンテンツ共有プラットフォーム120は、ユーザにメディアアイテムへのアクセスを提供するために使用される可能性があるウェブサイト(たとえば、ウェブページ)またはアプリケーションバックエンドソフトウェアを含む可能性もある。
本開示の一部の実施形態において、「ユーザ」は、1人の個人として表される可能性がある。しかし、本開示のその他の実施形態は、「ユーザ」が1組のユーザによって制御されるエンティティおよび/または自動化されたソースであることを包含する。たとえば、ソーシャルネットワーク内のコミュニティとして連合させられた1組の個人ユーザが、「ユーザ」とみなされる可能性がある。別の例においては、自動化された消費者が、コンテンツ共有プラットフォーム120のトピックチャンネル(topic channel)などの自動化された摂取パイプライン(ingestion pipeline)である可能性がある。
コンテンツ共有プラットフォーム120は、複数のチャンネル(たとえば、チャンネルAからZ、そのうちのチャンネルAのみが図1に示されている)を含み得る。チャンネルは、共通のソースから利用可能なデータコンテンツ、または共通の話題、テーマ、もしくは趣旨を有するデータコンテンツであることが可能である。データコンテンツは、ユーザによって選択されたデジタルコンテンツ、ユーザによって利用可能にされたデジタルコンテンツ、ユーザによってアップロードされたデジタルコンテンツ、コンテンツプロバイダによって選択されたデジタルコンテンツ、放送者によって選択されたデジタルコンテンツなどであることが可能である。たとえば、チャンネルXは、ビデオYおよびZを含み得る。チャンネルは、チャンネルに対して行為を実行することができるユーザである所有者に関連付けられ得る。異なる活動が、所有者がデジタルコンテンツをチャンネル上で利用可能にすること、所有者が別のチャンネルに関連するデジタルコンテンツを選択すること(たとえば、いいね!すること)、所有者が別のチャンネルに関連するデジタルコンテンツにコメントすることなどの所有者の行為に基づいてチャンネルに関連付けられ得る。チャンネルに関連する活動は、チャンネルに関する活動のフィードへとまとめられ得る。チャンネルの所有者以外のユーザは、それらのユーザが関心のある1つまたは複数のチャンネルを登録する(subscribe)ことができる。「登録する」という概念は、「いいね!する」、「フォローする」、「友達になる」とも呼ばれる可能性がある。
ユーザがチャンネルを登録すると、ユーザは、チャンネルの活動のフィードからの情報を提示され得る。ユーザが複数のチャンネルを登録する場合、ユーザが登録している各チャンネルに関する活動のフィードが、同時配信される(syndicated)活動のフィードへと組み合わされ得る。同時配信される活動のフィードからの情報は、ユーザに提示され得る。チャンネルは、独自のフィードを有する可能性がある。たとえば、コンテンツ共有プラットフォーム上のチャンネルのホームページにナビゲートするとき、そのチャンネルによって生成されたフィードアイテムが、チャンネルのホームページ上に示される可能性がある。ユーザは、ユーザが登録しているチャンネルのすべてからのコンテンツアイテムの少なくともサブセットを含むフィードである同時配信されるフィードを有する可能性がある。同時配信されるフィードは、ユーザが加入していないチャンネルからのコンテンツアイテムも含む可能性がある。たとえば、コンテンツ共有プラットフォーム120またはその他のソーシャルネットワークは、おすすめのコンテンツアイテムをユーザの同時配信されるフィードに挿入し得、またはユーザの関連するつながりに関連するコンテンツアイテムを同時配信されるフィードに挿入する可能性がある。
各チャンネルは、1つまたは複数のメディアアイテム122を含む可能性がある。メディアアイテム122の例は、デジタルビデオ、デジタルムービー、デジタル写真、デジタルミュージック、オーディオコンテンツ、メロディー、ウェブサイトコンテンツ、ソーシャルメディアの最新記事、電子ブック(eブック)、電子雑誌、デジタル新聞、デジタルオーディオブック、電子ジャーナル、ウェブブログ、リアルシンプルシンジケーション(RSS: real simple syndication)フィード、電子漫画、ソフトウェアアプリケーションなどを含み得るがこれらに限定されない。一部の実施形態において、メディアアイテム122は、コンテンツまたはコンテンツアイテムとも呼ばれる。
限定ではなく簡潔さおよび簡単さのために、ビデオアイテム、オーディオアイテム、またはゲームアイテムが、本明細書全体を通じてメディアアイテム122の例として使用される。本明細書において使用されるとき、「メディア」、「メディアアイテム」、「オンラインメディアアイテム」、「デジタルメディア」、「デジタルメディアアイテム」、「コンテンツ」、および「コンテンツアイテム」は、エンティティにデジタルメディアアイテムを提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して実行またはロードされることが可能な電子ファイルを含み得る。1つの実施形態において、コンテンツ共有プラットフォーム120は、データストア106を使用してメディアアイテム122を記憶する可能性がある。別の実施形態において、コンテンツ共有プラットフォーム120は、ビデオアイテムまたはフィンガープリントをデータストア106を使用して1つまたは複数のフォーマットの電子ファイルとして記憶し得る。
一部の実施形態において、メディアアイテム122は、ビデオアイテムである。ビデオアイテムは、動いているシーンを表す連続的なビデオフレーム(たとえば、画像フレーム)の組である。たとえば、一連の連続的なビデオフレームが、アニメーションを生成するために継続的に撮影されるかまたは後で再構築される可能性がある。ビデオアイテムは、アナログ、デジタル、2次元、および3次元のビデオを含むがこれらに限定されない様々なフォーマットで提示される可能性がある。さらに、ビデオアイテムは、ムービー、ビデオクリップ、または順に表示されるアニメーションされる画像の任意の組を含む可能性がある。加えて、ビデオアイテムは、ビデオ構成要素およびオーディオ構成要素を含むビデオファイルとして記憶される可能性がある。ビデオ構成要素は、ビデオコーディングフォーマットまたは画像コーディングフォーマット(たとえば、H.264(MPEG-4 AVC)、H.264 MPEG-4 Part 2、グラフィックインターチェンジフォーマット(GIF: Graphic Interchange Format)、WebPなど)のビデオデータを指す可能性がある。オーディオ構成要素は、オーディオコーディングフォーマット(たとえば、アドバンストオーディオコーディング(AAC: advanced audio coding)、MP3など)のオーディオデータを指す可能性がある。GIFが、画像ファイル(たとえば、.gifファイル)として保存されるかまたは一連の画像としてアニメーションされるGIF(たとえば、GIF89aフォーマット)に保存される可能性があることは留意されてよい。H.264が、たとえば、ビデオコンテンツの記録、圧縮、または配布のためのブロック指向の動き補償に基づくビデオ圧縮規格であるビデオコーディングフォーマットである可能性があることは留意されてよい。
一部の実施形態において、メディアアイテムは、クライアントデバイス110A~110Zのうちの1つまたは複数へのライブストリームなどでストリーミングされ得る。「ストリーミングされる」または「ストリーミングする」は、メディアアイテムの受信された部分が、(テクノロジーの制限内で)受信後直ちにまたはメディアコンテンツのその他の部分が配信されている間に、メディアアイテム全体が受信デバイスによって受信されることなしに受信デバイスによって再生される可能性がある、メディアアイテムなどのコンテンツの送信またはブロードキャストを指すことは留意される。「ストリーム」は、ストリーミングされるまたはストリーミングしているメディアアイテムなどのコンテンツを指しうる。ライブストリームメディアアイテムは、ライブイベントのライブブロードキャストまたは送信を指し得、ここで、メディアアイテムは、イベントが行われるときに少なくとも部分的に同時に受信デバイスに送信され、メディアアイテムは、丸々すべて利用可能なわけではない。
一部の実施形態において、コンテンツ共有プラットフォーム120は、ユーザがメディアアイテムを含むプレイリスト(たとえば、メディアアイテム122を含むプレイリストA~Z)を作成するか、共有するか、閲覧するか、または使用し得る。プレイリストは、いかなるユーザインタラクションもなしに特定の順序で次々に再生されるように構成されるメディアアイテムの集合を指す。一部の実施形態においては、コンテンツ共有プラットフォーム120が、ユーザの代わりにプレイリストを保持する可能性がある。一部の実施形態において、コンテンツ共有プラットフォーム120のプレイリストの特徴は、ユーザがそれらのユーザの好きなメディアアイテムを再生するために単一の場所にまとめてグループ化することを可能にする。実施形態において、コンテンツ共有プラットフォーム120は、再生または表示するためにプレイリストのメディアアイテムをクライアントデバイス110に送信する可能性がある。たとえば、メディアビュワー112が、メディアアイテムがプレイリストに列挙されている順序でプレイリストのメディアアイテムを再生するために使用され得る。別の例において、ユーザは、プレイリストのメディアアイテムの間を遷移し得る。さらに別の例において、ユーザは、プレイリストの次のメディアアイテムが再生されるのを待つことができ、またはプレイリスト内の特定のメディアアイテムを再生のために選択し得る。
一部の実施形態において、ユーザは、ユーザアカウントを通じてコンテンツ共有プラットフォーム120にアクセスし得る。ユーザは、クライアントデバイス110上のアプリケーション(たとえば、メディアビュワー112)を介してユーザアカウント情報(たとえば、ユーザ名およびパスワード)を与えることによってユーザアカウントにアクセスし(たとえば、ログインする)得る。一部の実施形態において、ユーザアカウントは、単一のユーザに関連付けられる可能性がある。その他の実施形態において、ユーザアカウントは、共有されたアカウント(たとえば、複数のユーザによって共有される家族アカウント)(本明細書においては「共有されたユーザアカウント」とも呼ばれる)であり得る。共有されたアカウントは、それぞれが異なるユーザに関連する複数のユーザプロファイルを有し得る。複数のユーザは、同じアカウント情報または異なるアカウント情報を使用して共有されたアカウントにログインし得る。一部の実施形態において、共有されたアカウントの複数のユーザは、共有されたアカウントの異なるユーザプロファイルに基づいて区別される可能性がある。
一部の実施形態においては、データ認可サービス124(本明細書においては「コアデータサービス」または「認可データソース」とも呼ばれる)が、ユーザアカウントが要求されたコンテンツを取得することを許可されるようにユーザアカウントを認可することができる。一部の実施形態において、データ認可サービス124は、要求されたコンテンツへのユーザアカウント(たとえば、ユーザアカウントに関連するクライアントデバイス)のアクセスを認可するか、クライアントデバイスへの要求されたコンテンツの配信を認可するか、またはそれら両方を行うことができる。ユーザアカウントが要求されたコンテンツにアクセスする認可は、どのコンテンツがアクセスされるかおよび誰がコンテンツにアクセスすることを許可されるかを認可することを含み得る。
コンテンツの配信の認可は、コンテンツがどのように配信されるかを認可することを含み得る。
一部の実施形態において、データ認可サービス124は、ユーザアカウント情報を使用してユーザアカウントを認可することができる。一部の実施形態においては、クライアントデバイス110またはメディアプレイヤー112に関連する認証トークン(たとえば、セッションベースの認証トークン、コンテンツベースの認証トークンなど)が、ユーザアカウントおよび/または要求されたコンテンツの再生を認可するために使用され得る。
一部の実施形態において、データ認可サービス124は、コンテンツ共有プラットフォーム120の一部である。一部の実施形態において、データ認可サービス124は、コンテンツ共有プラットフォーム120の一部ではなく、サードパーティによって提供される認可サービスなどの外部サービスである。
上述のように、コンテンツ配布ネットワーク(CDN)130は、サーバマシン132A~132Z(本明細書においては全体的に「サーバマシン132」または「サーバ132」と呼ばれる)として表される1つまたは複数のノードを含み得る。実施形態において、コンテンツ配布ネットワーク130は、コンテンツの迅速な配信を行うために一緒に働くサーバの地理的に分散されたネットワークを含む。サーバのネットワークは、場合によってはクライアントデバイス110との近さに基づいてコンテンツまたはサービスを配布することによって高い可用性および高い性能を提供するために地理的に分散される。CDNサーバがクライアントデバイス110に近いほど、コンテンツはクライアントデバイス110により迅速に配信され得る。
たとえば、異なるサーバマシン132A~132Zが、特定の国の中でまたは異なる国にまたがって地理的に分散され得る。英国にあるクライアントデバイス110Aを使用するユーザAが、コンテンツ共有プラットフォーム120によってホストされるコンテンツを取得することを要求し得る。要求は、コンテンツ共有プラットフォーム120のデータ認可サービス124によって受信されることが可能であり、ユーザAに関連するユーザアカウントが、要求されたコンテンツを取得することを認可されることが可能である。認可の後、コンテンツ共有プラットフォーム120は、ユニフォームリソースロケータ(URL)などのリソースロケータをクライアントデバイス110Aに送信することができる。リソースロケータは、コンピュータネットワーク上のリソース(たとえば、コンテンツ)の位置およびリソースを取り出すためのメカニズムを指定する参照を指し得る。リソースロケータは、クライアントデバイス110Aの地理的近傍にあるコンテンツ配布ネットワーク130のサーバマシン132からコンテンツを取得するようにクライアントデバイス110Aに指示し得る。たとえば、リソースロケータは、やはり英国にあるコンテンツ配布ネットワーク130の特定のサーバマシン132から要求されたコンテンツを取得するようにクライアントデバイス110Aに指示し得る。別の例において、米国の西海岸にあるクライアントデバイス110Bを使用する別のユーザBが、ユーザAと同じコンテンツを取得することを要求する。要求は、コンテンツ共有プラットフォーム120のデータ認可サービス124によって受信されることが可能であり、ユーザBに関連するユーザアカウントが、要求されたコンテンツを取得することを認可されることが可能である。
認可の後、コンテンツ共有プラットフォーム120は、リソースロケータをクライアントデバイス110Bに送信することができる。リソースロケータは、クライアントデバイス110Bの地理的近傍にあるコンテンツ配布ネットワーク130のサーバマシン132からコンテンツを取得するようにクライアントデバイス110Bに指示し得る。たとえば、リソースロケータは、米国の西海岸にあるコンテンツ配布ネットワーク130のサーバマシン132から要求されたコンテンツを取得するようにクライアントデバイス110Bに指示し得る。
一部の実施形態において、コンテンツ配布ネットワーク130は、コンテンツ共有プラットフォーム120の一部である。その他の実施形態において、コンテンツ配布ネットワーク130は、コンテンツ共有プラットフォーム120にCDNサービスを提供するサードパーティプラットフォームである。その他の実施形態においては、コンテンツ配布ネットワーク130の一部が、コンテンツ共有プラットフォーム120によって運用されることが可能であり、コンテンツ配布ネットワーク130の別の部分が、サードパーティによって運用されることが可能である。実施形態において、コンテンツ配布ネットワーク130は、データストア134などのデータストアを含む。データストア134は、データストア106と同様であることが可能である。データストアは、メディアコンテンツなどのコンテンツに関するデータファイル136を含み得る。データストア106は、1つもしくは複数の公開鍵または1つもしくは複数の秘密鍵などの1つまたは複数の暗号鍵137も含み得る。
認可モジュール138が、CDN 130のサーバ132に含まれ得る。認可モジュール138は、本明細書において説明される本開示の態様を実行することができる。たとえば、認可モジュール138は、クライアントデバイス110から受信されたセッションベースの認証トークンおよび/またはコンテンツベースの認証トークンを認証することができる。一部の実施形態において、認可モジュール138は、復号鍵および/またはライブラリを使用して、クライアントデバイス110から受信されたセッションベースの認証トークンおよび/またはコンテンツベースの認証トークンを認証することができる。認証すると、認可モジュール138は、クライアントデバイス110にリソースロケータを解放するおよび/または再生を開始するべきかどうかを、データ認可サービス124および/またはサーバ132に示すことができる。
プロキシサーバ140は、再生開始のレイテンシを改善するためのプロトコルを実装することができる1つまたは複数のノード(たとえば、サーバ)を含み得る。プロキシサーバ140は、初期再生モジュール142を含み得る。一部の実施形態において、プロキシサーバ140は、初期再生モジュール142を介して、クライアント110がコンテンツベースの認証トークンを生成する前に所定の量の再生データ(たとえば、最初の再生)を受信することを可能にし得る。一部の実施形態において、プロキシサーバ140は、コンテンツ共有プラットフォーム120および/またはコンテンツ配布ネットワーク130の一部である。その他の実施形態において、プロキシサーバ140は、クライアント110に初期再生サービスを提供するサードパーティプラットフォームである。一部の実施形態において、プロキシサーバ140は、クライアントデバイス110の一部である。プロキシサーバ140に関連する機能は、下で詳細に説明される。
概して、一実施形態においてコンテンツ共有プラットフォーム120、コンテンツ配布ネットワーク130、および/またはプロキシサーバ140によって実行されるものとして説明される機能は、その他の実施形態においては、適宜、クライアントデバイス110Aから110Z上で実行されることも可能である。加えて、特定の構成要素に帰せられる機能が、一緒に動作する異なるまたは複数の構成要素によって実行されることが可能である。コンテンツ共有プラットフォーム120、コンテンツ配布ネットワーク130、またはプロキシサーバ140は、適切なアプリケーションプログラミングインターフェースを通じてその他のシステムまたはデバイスに提供されるサービスとしてアクセスされることも可能であり、したがって、ウェブサイトにおける使用に限定されない。
本開示の実施形態がコンテンツ共有プラットフォーム、およびコンテンツ共有プラットフォーム120上のコンテンツアイテムのソーシャルネットワークの共有を促進することの観点で検討されるが、実施形態は、概して、ユーザの間のつながりを提供する任意の種類のソーシャルネットワークまたはコンテンツ配信プラットフォームにも適用される可能性がある。本開示の実装は、チャンネルの登録をユーザに提供するコンテンツ共有プラットフォームに限定されない。
上の説明に加えて、ユーザは、本明細書において説明されるシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会的行為、もしくは活動、職業、ユーザのプリファレンス、またはユーザの現在位置についての情報)の集合を有効化してよいかどうかといつ有効化してよいかとの両方、およびユーザがコンテンツまたは通信をサーバから送信されるかどうかについての選択をユーザが行うことを可能にするコントロールを提供される場合がある。さらに、特定のデータが、個人を特定できる情報が削除されるように、記憶されるかまたは使用される前に1つまたは複数の方法で処理される可能性がある。たとえば、ユーザのアイデンティティ(identity)が、個人を特定できる情報がユーザに関して決定されることが不可能であるか、または位置情報が取得される場合にユーザの地理的位置が(都市、郵便番号、もしくは州のレベルなどに)一般化される可能性があり、したがって、ユーザの特定の位置が決定されることが不可能であるように処理される可能性がある。したがって、ユーザは、どの情報がユーザについて収集されるか、その情報がどのように使用されるのか、およびどの情報がユーザに提供されるのかを制御することができてよい。
図2は、本開示の実施形態による、コンテンツの残りの再生を可能にするために使用されるコンテンツベースの認証トークンを生成しながら、コンテンツの最初の再生を可能にするための動作の図である。システム200は、図1のシステムアーキテクチャ100と同様の構成要素を含む可能性がある。図1の構成要素が図2を説明するのを助けるために使用される可能性があることは、留意されてよい。限定ではなく例示を目的として、コンテンツ共有プラットフォーム120のデータ認可サービス124、CDN 130のサーバ132、プロキシサーバ140の初期再生モジュール142、またはクライアントデバイス110によって実行されるものとして説明されるシステム200に関連する動作は、別段の説明がない限り、それらの任意の構成要素によって実行されてよい。図2に関連して説明される動作は、限定ではなく例示のために順に実行されることが示される。動作が任意の順序で実行される可能性があることおよび動作のいずれかが1つまたは複数のその他の動作と同時に実行される可能性があることは、留意されてよい。一部の実装においては、同じ、異なる、より少ない、またはより多くの数の動作が、任意の順序で実行される可能性がある。
動作202において、クライアントデバイス110は、セッションベースの認証トークンを生成する。一部の実施形態において、セッションベースの認証トークンは、クライアントデバイス110に関連するクッキーを使用して生成され得る。たとえば、ユーザは、ユーザアカウント情報を使用してコンテンツ共有プラットフォーム120にログインすることができ、コンテンツ共有プラットフォーム120によるユーザアカウントの認可に応答して、コンテンツ共有プラットフォーム120は、ユーザデバイス110にクッキーを送信することができる。そして、クライアントデバイス110は、トークンモジュール114によって、クッキーに基づいてセッションベースの認証トークンを生成することができる。その他の実施形態において、セッションベースのトークンは、ユーザまたはユーザアカウントに関連するその他のデータ(たとえば、ユーザ名およびパスワード、インターネットプロトコル(IP)アドレスなど)を使用して生成され得る。
動作204において、コンテンツのユーザ要求に応答して、クライアントデバイス110は、コンテンツベースの認証トークンの生成を開始する。コンテンツベースの認証トークンは、たとえば、以前の(キャッシュされた)再生イベント、コンテンツ要求を発行したアプリケーション、および要求されたコンテンツを特定するコンテンツ識別子から導出された情報を使用して生成され得る。たとえば、クライアントデバイス110のユーザは、ブラウザまたはネイティブアプリケーションなどのアプリケーションを使用して、コンテンツ共有プラットフォーム120によってホストされるビデオアイテムを再生することを要求し得る。ビデオアイテムのユーザ要求に応じて、クライアントデバイス110は、ビデオアイテムを特定する初期情報を取り出し、コンテンツベースの認証トークンの生成を開始することができる。一部の実施形態において、初期特定情報は、クライアントデバイス110のGUIにロードされたデータから取り出され得る。たとえば、ユーザは、ビデオアイテムおよび再生を開始するためのボタン(再生ボタン)を表示するウェブページをロードし得る。ウェブページは、ビデオアイテムを特定する初期情報を含み得る。ユーザによるビデオアイテムの再生の要求(たとえば、再生ボタンの選択)に応答して、クライアントデバイス110は、GUIにロードされたデータからの初期特定情報を使用して、コンテンツベースの認証トークンの生成を開始することができる。一部の実施形態において、クライアントデバイス110は、コンテンツ識別子以外のデータを使用してコンテンツベースの認証トークンの生成を開始し、その後、コンテンツ識別子を使用することができる。つまり、コンテンツ識別子は、コンテンツの要求が送信された後にデータ認可サービス124によって提供されることが可能であるか、またはクライアントデバイス110によって受信される要求されたコンテンツの最初の部分からクライアントデバイス110によって導出されることが可能である。たとえば、クライアントデバイス110は、コンテンツを取得する要求を送信することができ(下で検討される動作206)、コンテンツ識別子は、コンテンツの要求に対する応答に含まれるか、またはクライアントデバイス110によって受信される要求されたコンテンツの最初の部分から導出され得る。
セッションベースの認証トークンと比較して、コンテンツベースの認証トークンは、より強力な認証トークンであり、この認証トークンは、直ちには分からないコンテンツ識別子を必要とし、それによって、遅らされた生成プロセスをもたらす。したがって、クライアントデバイス110は、(まったく遅延なく、コンテンツの再生の前に生成され得る)セッションベースの認証トークンを使用して、CDNネットワーク130から要求されたコンテンツの最初の再生を取得し、コンテンツベースの認証トークンを使用して、再生の残りを取得することができる。最初の再生は、ビデオアイテムの最初の部分(たとえば、ビデオの最初の5秒間)のみを含み得る。セッションベースのトークンがビデオアイテムの最初の部分のみを取得することを可能にすることは、ビデオの始めで開始しないコンテンツ要求に対する保護を提供する。特に、これは、認可されていないユーザが有効なセッションベースの認証トークンを生成し、ビデオアイテムの全体を小分けにして(たとえば、ビデオアイテムの開始から最初の5秒の部分、ビデオアイテムの5秒のマークから2番目の5秒の部分など)要求し、部分を1つのビデオへと組み合わせることを防止する。
動作206において、クライアントデバイス110は、プロキシサーバ140の初期再生モジュール142にコンテンツを取得する要求を送信することができる。一部の実施形態において、クライアントデバイス110からの要求は、受信されるデータのフォーマットを含み得る。たとえば、要求は、クライアントデバイス110のメディアビュワー112と互換性があるビデオアイテムのフォーマットを含み得る。一部の実施形態において、要求は、ビデオアイテムなどのコンテンツの再生を提供するメディアビュワー112に関する追加的な情報(たとえば、種類、バージョンなど)を含み得る。
一部の実施形態において、コンテンツ要求は、動作202において生成されたセッションベースの認証トークンを含み得る。その他の実施形態においては、セッションベースの認証トークンの代わりに、コンテンツ要求は、コンテンツを取得しようと試みるクライアントデバイス、ユーザ、またはユーザアカウントの識別子を含み得る。たとえば、ユーザ要求は、コンテンツを取得することを要求するユーザアカウントに関連するユーザ名およびパスワードを特定し得る。別の例において、要求は、クライアントデバイス110またはユーザデバイスのアプリケーションを特定するクッキーを含むことが可能であり、クッキーは、特定のユーザアカウントを特定するために使用されることが可能である。動作208において、プロキシサーバ140は、コンテンツ要求を、セッションベースの認証トークン(および/またはコンテンツを取得しようと試みるクライアントデバイス、ユーザ、もしくはユーザアカウントのその他の識別子)とともにデータ認可サービス124に転送(送信)することができる。コンテンツ要求を受信すると、コンテンツ共有プラットフォーム120のデータ認可サービス124は、再生イベントを作成し、再生イベント識別子をコンテンツ要求に関連付けることができる。
動作210において、コンテンツ共有プラットフォーム120のデータ認可サービス124は、コンテンツ要求を認可することができる。要求を認可するために、データ認可サービス124は、たとえば、認証プロセスを使用して、セッションベースの認証トークンを認証することができる。たとえば、認証プロセスを実行することは、セッションベースの認証トークンを復号すること、セッションベースの認証トークンの暗号署名を判定すること、セッションベースのトークンのスパムビットを検査すること、および/またはセッションベースの認証トークンの認証に関連する任意のその他のプロセスを実行することを含み得る。
その他の実施形態において、データ認可サービス124は、クライアントデバイス110、ユーザ、またはユーザアカウントのうちの少なくとも1つがコンテンツを取得することを許可されると判定し得る。一部の実施形態において、要求は、コンテンツを取得することを要求するユーザアカウントのアカウント情報を特定し得る。たとえば、アカウント情報は、クッキー内で暗号化され得る。別の例において、アカウント情報は、ユーザによって入力され、要求内で提供され得る。一部の実施形態において、ユーザ名およびパスワードなどのアカウント情報は、アカウント情報(たとえば、受信されたユーザ名およびパスワード)をアカウント情報の記憶されたレコードと比較することによってデータ認可サービス124により認証され得る。要求のアカウント情報がレコードのアカウント情報と一致する場合、データ認可サービス124は、特定のユーザアカウントが認証されると判定することができる。
一部の実施形態においては、データ認可サービス124によるセッションベースの認証トークン(または識別子)の認証の失敗に応答して、コンテンツ要求は、コンテンツ共有プラットフォーム120によって拒否され得る。一部の実施形態において、データ認可サービス124がコンテンツを取得する要求を認可しない場合、データ認可サービス124は、要求されたコンテンツを取得する認可が与えられないことを示すメッセージをクライアントデバイス110に送信することができる。一部の実施形態において、データ認可サービス124によるコンテンツを取得する要求の不認可に応答して、コンテンツ共有プラットフォーム120は、新しいセッションベースの認証トークンまたは新しいログイン情報および/または追加的な情報を要求するメッセージをクライアントデバイス110に送信することができる。
一部の実施形態においては、セッションベースのトークンの認証プロセス中に処理された1つもしくは複数のパラメータ(たとえば、ユーザアカウント、クライアントデバイスの位置、IPアドレスなどに関連するパラメータ)の検出か、またはセッションベースの認証トークン(もしくは識別子)の認証の失敗かのどちらかに応答して、データ認可サービス124は、1つまたは複数のアクションを開始することができる。アクションは、デジタル著作権管理(DRM)の制限を適用すること(たとえば、クライアントデバイス110がCDNによって生成された暗号化を使用するDRM再生を提供されることを要求する)と、クライアントデバイス110からのReCaptchaの検証を要求することと、サインインするようにクライアントデバイス110のユーザに要求することと、要求されたコンテンツの再生を絞る(throttle)ようにサーバ132に命令することと、サーバ132によるコンテンツベースの認証トークンの確認を要求することであって、サーバ132が、コンテンツベースのトークンによる検証プロセスの失敗に応答して、ビデオアイテムの残り(「継続再生」)の要求を拒否するように命令される、要求することと、サーバ132によるコンテンツベースの認証トークンの確認を要求することであって、サーバ132が、コンテンツベースの認証トークンによる検証プロセスの失敗に応答して、継続再生の要求を絞るように命令される、要求することと、コンテンツ要求を拒否することとを含み得る。その他の実施形態においては、セッションベースの認証トークンまたはクライアントデバイス、ユーザ、もしくはユーザアカウントの認証に応答して、データ認可サービス124は、いかなる制限もなしにコンテンツ全体の再生を許可し得る。
一部の実施形態において、データ認可サービス124によるコンテンツを取得する要求の認可に応答して、データ認可サービス124は、クライアントデバイス110がCDNネットワーク130から要求されたコンテンツの最初の再生を取得することを認可するための1つまたは複数のリソースロケータ(たとえば、URL)を生成する。一部の実施形態において、リソースロケータは、要求されたコンテンツをクライアントデバイス110に配信することになるCDN 130のサーバを特定し得る。たとえば、リソースロケータは、要求されたコンテンツの最初の再生を取得するためにアクセスされ得る特定のサーバ(たとえば、サーバ132A、サーバ132Bなど)を特定するホスト名を含むことができる。一部の実施形態において、データ認可サービス124は、どのデータが提供されるべきかおよびデータがどのように提供されるべきかをサーバ132に示すために使用されることが可能である1つまたは複数の暗号署名されたパラメータ(たとえば、有効期限パラメータ、ビットレートパラメータ、イベント識別子パラメータなど)をリソースロケータに付加することができる。一部の実施形態において、暗号署名されたパラメータは、要求されたコンテンツの最初の再生(たとえば、要求されたコンテンツの所定の量)のみをクライアントデバイス110に提供することをサーバ132に示すことができる。たとえば、最初の再生は、単一のリソースロケータを使用して提供されることが可能である、要求されたコンテンツに関連するビデオアイテムの最初の5秒を含み得る。さらに、暗号署名されたパラメータは、継続再生(たとえば、追加のリソースロケータを使用する所望のコンテンツの残り)のそれぞれの追加の要求がコンテンツベースの認証トークンを含むべきであることをサーバ132に示すことができる。
動作212において、ユーザアカウントの認可に応答して、データ認可サービス124は、コンテンツの要求(たとえば、動作208)に対する応答を初期再生モジュール142に送信することができる。一部の実施形態において、応答は、コンテンツをクライアントデバイス110に配信するべきCDN 130のサーバ132を特定する1つまたは複数のリソースロケータと、再生イベント識別子とを含み得る。一部の実施形態において、応答は、要求されたコンテンツの最初の再生のみをクライアントデバイス110に提供することをサーバ132に示す1つまたは複数の暗号署名されたパラメータも含み得る。一部の実施形態において、応答は、再生イベント識別子および/またはユーザアカウント情報も含み得る。一部の実施形態において、リソースロケータは、ハイパーテキスト転送プロトコル(HTTP)応答に含まれ得る。一部の実施形態において、データ認可サービス124は、応答を暗号化することができる。一部の実施形態において、応答は、1つまたは複数の復号鍵を含み得る。復号鍵は、応答および/またはリソースロケータに関連するコンテンツを復号するために使用され得る。
動作214において、初期再生モジュール142は、暗号署名されたパラメータを付加されたリソースロケータを使用してコンテンツを要求することができる。たとえば、初期再生モジュール142は、リソースロケータを使用してHTTP要求を送信することができる。一部の実施形態において、要求は、CDN 130のサーバ132に送信され得る。一部の実施形態において、CDN 130のサーバ132は、初期再生モジュール142から要求を受信する。要求は、上述のように、暗号署名されたパラメータを付加されたリソースロケータを含む。
動作216において、サーバ132は、暗号署名されたパラメータによって命令されたように、初期再生モジュール142からの要求に、最初の再生に関連するデータによって応答することができる。たとえば、応答は、ビデオアイテムの一部(たとえば、最初の5秒)を含み得る。最初の再生は、単一のリソースロケータを使用して取得され得る。動作218において、プロキシサーバは、初期再生データをユーザの消費のためにクライアントデバイス110に送信することができる。一部の実施形態においては、初期再生データの暗号化に応答して、初期再生モジュール142は、初期再生データを復号することができる。
動作220において、クライアントデバイス110は、コンテンツベースの認証トークンの生成を終了することができる。
動作222において、クライアントデバイス110は、サーバ132にビデオアイテムの残り(「継続再生」)の要求を送信することができる。要求は、コンテンツベースの認証トークンを含み得る。要求は、たとえば、再生イベント識別子および/または位置識別子を使用して、要求されたコンテンツを特定することができる。位置識別子は、再生が継続するべきビデオアイテム内の位置(たとえば、時点)を示すことができる。一部の実施形態において、クライアントデバイス110からサーバ132への要求は、受信されるデータのフォーマットを含み得る。
サーバ132は、コンテンツベースの認証トークンをローカルで認証することができるか、または代替的に(動作224において)、サーバ132は、認証のためにコンテンツベースの認証トークンをデータ認可サービス124に送信することができる。そして、データ認可サービス124は、たとえば、認証プロセスを使用して、コンテンツベースの認証トークンを認証することができる。たとえば、データ認可サービス124は、コンテンツベースのトークンを復号し、コンテンツベースのトークンの暗号署名を判定し、コンテンツベースの認証トークンのスパムビットを検査し、および/またはコンテンツベースの認証トークンの認証に関連する任意のその他のプロセスを実行することができる。
一部の実施形態において、データ認可サービス124による継続再生を取得する要求の認可に応答して、データ認可サービス124は、クライアントデバイス110がサーバ132から要求されたコンテンツの継続再生を取得することを認可するためのリソースロケータを生成または取得することができる。
コンテンツ共有プラットフォーム120のデータ認可サービス124によるコンテンツベースの認証トークンの認証に応答して、データ認可サービス124は(任意の動作226において)、継続再生に関連するリソースロケータ(および再生イベント識別子)を含む応答をサーバ132に送信することができる。その他の実施形態において、データ認可サービス124は、動作212において、(それぞれが暗号署名されたパラメータを付加された)要求されたコンテンツのリソースロケータを送信し、応答で、コンテンツベースのトークンが検証されたことをサーバ132に示すことができる。動作228において、サーバ132は、継続再生に関連するデータによって動作222のコンテンツ要求に応答するか、または継続再生のリソースロケータをクライアントデバイス110に送信することができる。そして、クライアントデバイス110は、リソースロケータを使用して、サーバ132からの継続再生を要求することができる。継続再生は、ビデオアイテムの別の部分(たとえば、次の5秒、次の10秒など)を含み得る。
一部の実施形態において、CDN 130は、たとえば、認可モジュール138を使用して、コンテンツベースのトークンの検証のすべてまたは一部を実行することができる。たとえば、認可モジュール138は、復号鍵およびライブラリを使用して、コンテンツベースの認証トークンを検証することができる。したがって、CDN 130は、任意の動作224および226に関連して検討されたようにコンテンツベースの認証トークンに対して認証プロセスを実行するようにデータ認可サービス124に要求しない。
一部の実施形態において、CDN 130は、クライアントデバイス110からの継続再生のそれぞれの追加の要求がコンテンツベースの認証トークンをともなうことを要求し得る。一部の実施形態においては、それぞれの追加のコンテンツ要求に関してコンテンツベースの認証トークンを要求するのではなく、サーバ132は、代わりにセッションベースの認証トークンを要求し得る。たとえば、動作222において、クライアントデバイス110は、ビデオアイテムの残り(「継続再生」)の要求をサーバ132に送信することができ、要求は、セッションベースの認証トークンを含み得る。要求の受信およびセッションベースの認証トークンの認証に応答して、サーバ132は、継続再生に関連するデータによって要求に応答するか、または継続再生のリソースロケータをクライアントデバイス110に送信することができる。
一部の実施形態においては、コンテンツベースの認証トークンが認証されると、コンテンツ共有プラットフォーム120および/またはCDN 130は、クライアントデバイス110からの継続再生のいかなる追加の要求に関してもコンテンツベースの認証トークンを再認証する必要がない。クライアントデバイスは、コンテンツ全体がユーザによって消費されるまで、所望のコンテンツの要求を送信し続けることができ、各要求は、コンテンツベースの認証トークン(および再生イベント識別子)をともなう。一部の実施形態において、サーバ132は、要求がコンテンツベースのトークンをともなわない(または無効なおよび/もしくは認証されていないコンテンツベースのトークンをともなう)とき、クライアントデバイス110の継続再生の要求を拒否することができる。一部の実施形態においては、コンテンツベースの認証トークンをともなわない要求、または無効なコンテンツベースの認証トークンをともなう要求の受信に応答して、コンテンツ共有プラットフォーム120および/またはCDN 130は、クライアントデバイス110に1つまたは複数の強制アクション(enforcement action)を課すことができる。たとえば、コンテンツ共有プラットフォーム120および/またはCDN 130は、クライアントデバイス110に厳しい帯域幅制限を適用すること、再生品質を下げること、DRMの制限を適用すること、ReCaptchaの検証を要求すること、サインインするようにクライアントデバイス110のユーザに要求することなどが可能である。
一部の実施形態において、サーバ132(および/またはデータ認可サービス124)は、ステータス追跡テーブルを使用して再生イベントのステータスを追跡することができる。特に、サーバ132は、あらゆる進行中の再生イベントのステータスを、それらの再生イベントのそれぞれの再生イベント識別子によって追跡することができる。ステータス追跡テーブルは、各再生イベント識別子に関して、コンテンツベースの認証トークンが検証済みであるのか、検証を保留中であるのか、または検証に失敗したのかを示すことができる。さらに、サーバ132は、コンテンツベースの認証トークンがまだ検証を保留中である、継続再生のすべての未解決の要求をステータス追跡テーブルに記録することができる。検証が済むと、サーバ132は、継続再生イベントを解放することができる。さらに、サーバ132は、有効期限パラメータによるリソースロケータの使用の期限の指示に応答して、ステータス追跡テーブルから対応する再生イベント識別子を削除することができる。一部の実施形態において、サーバ132は、キャッシュ置換ポリシー(たとえば、先入れ先出し、最長時間未使用(least recently used)など)などのその他の方法を使用してステータス追跡テーブルから再生イベント識別子を削除することができる。
図3は、本開示の実施形態による、再生の継続を可能にするために使用されるコンテンツベースの認証トークンを生成しながら、コンテンツの再生を開始するための動作の図である。システム300は、図1のシステムアーキテクチャ100と同様の構成要素を含んでよい。図1の構成要素が図3を説明するのを助けるために使用される可能性があることは、留意されてよい。限定ではなく例示を目的として、システム300に関連する動作は、コンテンツ共有プラットフォーム120のデータ認可サービス124、コンテンツ配布ネットワーク130のサーバマシン132、またはクライアントデバイス110によって実行されるものとして説明され、そうでないことが説明されない限りそのシステム300の任意の構成要素によって実行される可能性がある。図3に関連して説明される動作は、限定ではなく例示のために順に実行されることが示される。動作が任意の順序で実行される可能性があることおよび動作のいずれかが1つまたは複数のその他の動作と同時に実行される可能性があることは、留意されてよい。一部の実装においては、同じ、異なる、より少ない、またはより多くの数の動作が、任意の順序で実行される可能性がある。
動作302において、クライアントデバイス110は、セッションベースの認証トークンを生成する。一部の実施形態において、セッションベースの認証トークンは、クライアントデバイス110に関連するクッキーを使用して生成され得る。たとえば、ユーザは、ユーザアカウント情報を使用してコンテンツ共有プラットフォーム120にログインすることができ、コンテンツ共有プラットフォーム120によるユーザアカウントの認可に応答して、コンテンツ共有プラットフォーム120は、ユーザデバイス110にクッキーを送信することができる。そして、クライアントデバイス110は、トークンモジュール114によって、クッキーに基づいてセッションベースの認証トークンを生成することができる。その他の実施形態において、セッションベースの認証トークンは、ユーザまたはユーザアカウントに関連するその他のデータ(たとえば、ユーザ名およびパスワード、インターネットプロトコル(IP)アドレスなど)を使用して生成され得る。
動作304において、コンテンツのユーザ要求に応答して、クライアントデバイス110は、コンテンツベースの認証トークンの生成を開始する。コンテンツベースの認証トークンは、たとえば、以前の(キャッシュされた)再生イベント、コンテンツ要求を発行したアプリケーション、および要求されたコンテンツを特定するコンテンツ識別子から導出された情報を使用して生成され得る。たとえば、クライアントデバイス110のユーザは、ブラウザまたはネイティブアプリケーションなどのアプリケーションを使用して、コンテンツ共有プラットフォーム120によってホストされるビデオアイテムを再生することを要求し得る。ビデオアイテムのユーザ要求に応じて、クライアントデバイス110は、ビデオアイテムを特定する初期情報を取り出し、(たとえば、特定する情報にハッシュアルゴリズムを適用することによる)コンテンツベースの認証トークンの生成を開始することができる。一部の実施形態において、初期特定は、クライアントデバイス110のGUIにロードされたデータから取り出され得る。たとえば、ユーザは、ビデオアイテムおよび再生を開始するためのボタン(再生ボタン)を表示するウェブページをロードし得る。ウェブページは、ビデオアイテムを特定する初期情報を含み得る。ユーザによるビデオアイテムの再生の要求(たとえば、再生ボタンの選択)に応答して、クライアントデバイス110は、GUIにロードされたデータからの初期特定情報を使用して、コンテンツベースの認証トークンの生成を開始することができる。一部の実施形態において、クライアントデバイス110は、コンテンツ識別子以外のデータを使用してコンテンツベースの認証トークンの生成を開始し、その後、コンテンツ識別子を使用することができる。つまり、コンテンツ識別子は、コンテンツの要求が送信された後にデータ認可サービス124によって提供されることが可能であるか、またはクライアントデバイス110によって受信される要求されたコンテンツの最初の部分からクライアントデバイス110によって導出されることが可能である。たとえば、クライアントデバイス110は、コンテンツを取得する要求を送信することができ(下で検討される動作306)、コンテンツ識別子は、コンテンツの要求に対する応答に含まれるか、またはクライアントデバイス110によって受信される要求されたコンテンツの最初の部分から導出され得る。一例において、コンテンツベースのトークンを生成することは、数秒を必要とし得る。
動作306において、クライアントデバイス110は、データ認可サービス124にコンテンツを取得する要求を送信することができる。一部の実施形態において、クライアントデバイス110からの要求は、受信されるデータのフォーマットを含み得る。たとえば、要求は、クライアントデバイス110のメディアビュワー112と互換性があるビデオアイテムのフォーマットを含み得る。一部の実施形態において、要求は、ビデオアイテムなどのコンテンツの再生を提供するメディアビュワー112に関する追加的な情報(たとえば、種類、バージョンなど)を含み得る。
一部の実施形態において、コンテンツ要求は、動作302において生成されたセッションベースの認証トークンを含み得る。その他の実施形態においては、セッションベースの認証トークンの代わりに、コンテンツ要求は、コンテンツを取得しようと試みるクライアントデバイス110、ユーザ、またはユーザアカウントの識別子を含み得る。たとえば、ユーザ要求は、コンテンツを取得することを要求するユーザアカウントに関連するユーザ名およびパスワードを特定し得る。別の例において、要求は、クライアントデバイス110またはユーザデバイスのアプリケーションを特定するクッキーを含むことが可能であり、クッキーは、特定のユーザアカウントを特定するために使用されることが可能である。コンテンツ要求を受信すると、コンテンツ共有プラットフォーム120のデータ認可サービス124は、再生イベントを作成し、再生イベント識別子をコンテンツ要求に関連付けることができる。
動作308において、コンテンツ共有プラットフォーム120のデータ認可サービス124は、コンテンツ要求を認可することができる。要求を認可するために、データ認可サービス124は、たとえば、認証プロセスを使用して、セッションベースの認証トークンを認証することができる。たとえば、認証プロセスを実行することは、セッションベースのトークンを復号すること、セッションベースのトークンの暗号署名を判定すること、セッションベースのトークンのスパムビットを検査すること、および/またはセッションベースのトークンの認証に関連する任意のその他のプロセスを実行することを含み得る。
その他の実施形態において、データ認可サービス124は、クライアントデバイス110、ユーザ、またはユーザアカウントのうちの少なくとも1つがコンテンツを取得することを許可されると判定し得る。一部の実施形態において、要求は、コンテンツを取得することを要求するユーザアカウントのアカウント情報を特定し得る。たとえば、アカウント情報は、クッキー内で暗号化され得る。別の例において、アカウント情報は、ユーザによって入力され、要求内で提供され得る。一部の実施形態において、ユーザ名およびパスワードなどのアカウント情報は、アカウント情報(たとえば、受信されたユーザ名およびパスワード)をアカウント情報の記憶されたレコードと比較することによってデータ認可サービス124により認証され得る。要求のアカウント情報がレコードのアカウント情報と一致する場合、データ認可サービス124は、特定のユーザアカウントが認証されると判定することができる。
一部の実施形態においては、データ認可サービス124によるセッションベースの認証トークン(または識別子)の認証の失敗に応答して、コンテンツ要求は、コンテンツ共有プラットフォーム120によって拒否され得る。一部の実施形態において、データ認可サービス124がコンテンツを取得する要求を認可しない場合、データ認可サービス124は、要求されたコンテンツを取得する認可が与えられないことを示すメッセージをクライアントデバイス110に送信することができる。一部の実施形態において、データ認可サービス124によるコンテンツを取得する要求の不認可に応答して、コンテンツ共有プラットフォーム120は、新しいセッションベースの認証トークンまたは新しいログイン情報および/または追加的な情報を要求するメッセージをクライアントデバイス110に送信することができる。
一部の実施形態においては、セッションベースの認証トークンの認証プロセス中に処理された1つもしくは複数のパラメータ(たとえば、ユーザアカウント、クライアントデバイスの位置、IPアドレスなどに関連するパラメータ)の検出か、またはセッションベースの認証トークン(もしくは識別子)の認証の失敗かのどちらかに応答して、データ認可サービス124は、1つまたは複数のアクションを開始することができる。アクションは、デジタル著作権管理(DRM)の制限を適用すること(たとえば、クライアントデバイス110がCDNによって生成された暗号化を使用するDRM再生を提供されることを要求する)と、クライアントデバイス110からのReCaptchaの検証を要求することと、サインインするようにクライアントデバイス110のユーザに要求することと、要求されたコンテンツの再生を絞るようにサーバ132に命令することと、サーバ132によるコンテンツベースのトークンの確認を要求することであって、サーバ132が、コンテンツベースのトークンによる検証プロセスの失敗に応答して、ビデオアイテムの残り(「継続再生」)の要求を拒否するように命令される、要求することと、サーバ132によるコンテンツベースのトークンの確認を要求することであって、サーバ132が、コンテンツベースのトークンによる検証プロセスの失敗に応答して、継続再生の要求を絞るように命令される、要求することと、コンテンツ要求を拒否することとを含み得る。その他の実施形態においては、セッションベースの認証トークンまたはクライアントデバイス、ユーザ、もしくはユーザアカウントの認証に応答して、データ認可サービス124は、いかなる制限もなしにコンテンツ全体の再生を許可し得る。
一部の実施形態において、データ認可サービス124によるコンテンツを取得する要求の認可に応答して、データ認可サービス124は、クライアントデバイス110がCDN 130から要求されたコンテンツの再生を取得することを認可するためのリソースロケータを生成する。一部の実施形態において、リソースロケータ(たとえば、URL)は、要求されたコンテンツをクライアントデバイス110に配信することになるCDN 130のサーバを特定し得る。たとえば、リソースロケータは、要求されたコンテンツの再生を取得するためにアクセスされ得る特定のサーバ(たとえば、サーバ132A、サーバ132Bなど)を特定するホスト名を含むことができる。一部の実施形態において、データ認可サービス124は、所定の量の時間(たとえば、5秒)の間、要求されたコンテンツの再生をクライアントデバイス110に提供することをCDN 130に示すために使用され得る1つまたは複数の暗号署名されたパラメータをリソースロケータに付加することができる。さらに、パラメータは、クライアントデバイス110からのコンテンツベースのトークンの受信または認証の失敗に応答してクライアントデバイス110に対する再生を終了することをCDN 130に示すことができる。
動作310において、ユーザアカウントの認可に応答して、データ認可サービス124は、コンテンツの要求(たとえば、動作306)に対する応答をクライアントデバイス110に送信することができる。一部の実施形態において、応答は、コンテンツをクライアントデバイス110に配信するべきCDN 130のサーバ132を特定するリソースロケータと、再生イベント識別子とを含み得る。一部の実施形態において、応答は、所定の期間、要求されたコンテンツの再生をクライアントデバイス110に提供し、サーバ132が前記期間内にコンテンツベースの認証トークンを受信することに失敗する場合、再生を終了することをサーバ132に示す1つまたは複数の暗号署名されたパラメータも含み得る。一部の実施形態において、応答は、再生イベント識別子および/またはユーザアカウント情報も含み得る。一部の実施形態において、リソースロケータは、ハイパーテキスト転送プロトコル(HTTP)応答に含まれ得る。一部の実施形態において、データ認可サービス124は、応答を暗号化することができる。一部の実施形態において、応答は、1つまたは複数の復号鍵を含み得る。復号鍵は、応答および/またはリソースロケータに関連するコンテンツを復号するために使用され得る。
動作312において、クライアントデバイス110は、暗号署名されたパラメータを付加されたリソースロケータを使用してコンテンツを要求することができる。たとえば、クライアントデバイス110は、リソースロケータを使用してHTTP要求を送信することができる。一部の実施形態において、要求は、サーバ132に送信され得る。一部の実施形態において、サーバ132は、クライアントデバイス110から要求を受信する。要求は、上述のように、暗号署名されたパラメータを付加されたリソースロケータを含む。
動作314において、サーバ132は、暗号署名されたパラメータによって命令されたように、クライアントデバイス110からの要求に、再生に関連するデータによって応答することができる。たとえば、応答は、要求されたビデオアイテムを含み得る。動作316において、クライアントデバイス110は、コンテンツベースの認証トークンの生成を終了することができる。
動作318において、クライアントデバイス110は、コンテンツベースの認証トークンをサーバ132に送信することができる。一部の実施形態において、コンテンツベースの認証トークンは、サイドチャネルを使用して送信され得る。たとえば、クライアントデバイス110のプライマリチャネルが、サーバ132から再生を受信するために使用されることが可能であり、サイドチャネル(たとえば、別個の通信チャネル、異なるポートなど)が、コンテンツベースの認証トークンをサーバ132に送信するためにクライアントデバイス110によって使用されることが可能である。
サーバ132は、コンテンツベースの認証トークンをローカルで認証することができるか、または代替的に(任意の動作320において)、サーバ132は、認証のためにコンテンツベースの認証トークンをデータ認可サービス124に送信することができる。そして、データ認可サービス124は、たとえば、認証プロセスを使用して、コンテンツベースの認証トークンを認証することができる。たとえば、データ認可サービス124は、コンテンツベースの認証トークンを復号し、コンテンツベースのトークンの暗号署名を判定し、コンテンツベースの認証トークンのスパムビットを検査し、および/またはコンテンツベースの認証トークンの認証に関連する任意のその他のプロセスを実行することができる。
コンテンツ共有プラットフォーム120のデータ認可サービス124によるコンテンツベースの認証トークンの認証に応答して、データ認可サービス124は(任意の動作322において)、コンテンツベースの認証トークンの真正性を検証する応答をサーバ132に送信することができる。コンテンツベースのトークンが本物であることに応答して、サーバ132は、クライアントデバイス110への再生の提供を継続することができる。コンテンツベースの認証トークンが無効であることに応答して、サーバ132は、クライアントデバイス110への再生を終了することができる。
一部の実施形態において、CDN 130は、たとえば、認可モジュール138を使用して、コンテンツベースの認証トークンの検証のすべてまたは一部を実行することができる。たとえば、認可モジュール138は、復号鍵およびライブラリを使用して、コンテンツベースの認証トークンを検証することができる。一部の実施形態においては、コンテンツベースの認証トークンの受信の失敗、または無効なコンテンツベースの認証トークンの受信に応答して、コンテンツ共有プラットフォーム120および/またはCDN 130は、クライアントデバイス110に1つまたは複数の強制アクションを課すことができる。たとえば、コンテンツ共有プラットフォーム120および/またはCDN 130は、クライアントデバイス110に厳しい帯域幅制限を適用すること、再生品質を下げること、デジタル著作権管理(DRM)の制限を適用すること、ReCaptchaの検証を要求すること、サインインするようにクライアントデバイス110のユーザに要求することなどが可能である。
一部の実施形態において、サーバ132(および/またはデータ認可サービス124)は、ステータス追跡テーブルを使用して再生イベントのステータスを追跡することができる。特に、サーバ132は、あらゆる進行中の再生イベントのステータスを、それらの再生イベントのそれぞれの再生イベント識別子によって追跡することができる。ステータス追跡テーブルは、各再生イベント識別子に関して、コンテンツベースの認証トークンが検証済みであるのか、検証を保留中であるのか、または検証に失敗したのかを示すことができる。さらに、サーバ132は、コンテンツベースの認証トークンがまだ検証を保留中である、継続再生のすべての未解決の要求をステータス追跡テーブルに記録することができる。一部の実施形態において、サーバ132は、コンテンツを視聴するための所定の期間が満了した後、コンテンツベースの認証トークンが受信および/または検証されるまで、再生を一時停止することができる。検証が済むと、サーバ132は、継続再生イベントを再開することができる。さらに、サーバ132は、有効期限パラメータによるリソースロケータの使用の期限の指示に応答して、ステータス追跡テーブルから対応する再生イベント識別子を削除することができる。一部の実施形態において、サーバ132は、キャッシュ置換ポリシー(たとえば、先入れ先出し、最長時間未使用など)などのその他の方法を使用してステータス追跡テーブルから再生イベント識別子を削除することができる。
図4は、本開示の実施形態による、残りの再生を可能にするために使用されるコンテンツベースの認証トークンを待ちながら、クライアントデバイス上でのコンテンツの最初の再生を認可するための方法400の流れ図を示す。方法は、ハードウェア(回路、専用論理など)、ソフトウェア(たとえば、処理デバイス上で実行される命令)、またはこれらの組合せを含む場合がある処理論理によって実行される。一部の実施形態において、方法400の一部のまたはすべての動作は、図1のシステム100の1つまたは複数の構成要素によって実行されてよい。その他の実施形態において、方法400の1つまたは複数の動作は、図1~図3に関連して説明されたコンテンツ配布ネットワーク130の認可モジュール、データ認可サービス124、または初期再生モジュール142によって実行されてよい。図1~図3に関連して説明された構成要素が図4の態様を示すために使用される場合があることは、留意されてよい。
ブロック402において、方法400を実装する処理論理は、クライアントデバイスからコンテンツの要求を受信する。コンテンツの要求は、クライアントデバイスとコンテンツ共有プラットフォームとの間のセッションに関連するセッションベースの認証トークンを含み得る。
ブロック404において、処理論理は、セッションベースの認証トークンを確認する。たとえば、処理論理は、セッションベースの認証トークンを復号すること、セッションベースの認証トークンの暗号署名を判定すること、セッションベースのトークンのスパムビットを検査すること、および/またはセッションベースの認証トークンの認証に関連する任意のその他のプロセスを実行することを含み得る認証プロセスを実行することができる。
ブロック406において、処理論理は、クライアントデバイスにおいて要求されたコンテンツの再生を開始させる。一部の実施形態において、要求されたコンテンツの再生を開始させることは、セッションベースの認証トークンを確認すると、コンテンツの要求を再生イベントの再生イベント識別子に関連付けることと、再生イベント識別子に関連する応答を生成することとを含み得る。応答は、要求されたコンテンツを取得するための1つまたは複数のリソースロケータと、要求されたコンテンツの最初の部分の再生を認可するパラメータとを含み得る。さらに、パラメータは、要求されたコンテンツの追加の部分の再生のために有効なコンテンツベースの認証トークンが必要とされることを示すことができる。応答は、再生イベント識別子も含み得る。一部の実施形態において、要求されたコンテンツの再生を開始させることは、セッションベースの認証トークンを確認すると、要求されたコンテンツの最初の部分のクライアントデバイスへの提供/ストリーミングを開始するためのインジケーション(または命令)をCDNサーバに提供することと、再生イベント識別子に関連する応答をクライアントデバイスに提供することとを含み得る。応答は、要求されたコンテンツ(たとえば、要求されたコンテンツの残り)を取得するための1つまたは複数のリソースロケータと、再生イベント識別子とを含み得る。
一部の実施形態において、有効なコンテンツベースの認証トークンは、要求されたコンテンツの識別子、コンテンツの要求を発行したクライアントデバイスのアプリケーションの識別子、およびクライアントデバイスのアプリケーションによって開始された以前の再生イベントに関連するデータに基づいて、クライアントデバイスによって生成され得る。要求されたコンテンツの再生は、有効なコンテンツベースの認証トークンの生成がクライアントデバイスにおいて完了される前に、クライアントデバイスにおいて開始し得る。
一部の実施形態において、応答は、要求されたコンテンツのそれぞれの追加の部分を取得するためにそれぞれ使用される複数のリソースロケータを含み、パラメータは、要求されたコンテンツの複数の追加の部分の各々を取得するために有効なコンテンツベースの認証トークンが必要とされることを示すことができる。
その他の実施形態において、応答は、要求されたコンテンツを取得するための単一のリソースロケータを含み、パラメータは、要求されたコンテンツの再生を終了することを回避し、要求されたコンテンツの追加の部分の再生を許すために、要求されたコンテンツの再生の開始から所定の期間内に有効なコンテンツベースの認証トークンが受信されることを要求されることを示すことができる。有効なコンテンツベースの認証トークンの受信の失敗に応答して、処理論理は、要求されたコンテンツの追加の部分の再生を防止することができる。
一部の実施形態において、クライアントデバイスにおいて要求されたコンテンツの再生を継続させることは、クライアントデバイスによって供給されたコンテンツベースの認証トークンを受信することと、コンテンツベースの認証トークンを確認することと、コンテンツベースの認証トークンが有効であることをCDNサーバ(たとえば、サーバ132)に通知することとを含む。その他の実施形態において、コンテンツベースの認証トークンは、CDN 130の認可モジュール138、またはサードパーティのサービスを使用して確認され得る。
ブロック408において、クライアントデバイスによって供給された有効なコンテンツベースの認証トークンに応答して、処理論理は、クライアントデバイスにおいて要求されたコンテンツの再生を継続させる。有効なコンテンツベースの認証トークンは、要求されたコンテンツの識別子に基づき得る。一部の実施形態において、識別子は、クライアントデバイスに送信されたコンテンツからクライアントデバイスによって導出され得る。あるいは、有効なコンテンツベースの認証トークンの受信の失敗に応答して、上述のように、要求されたコンテンツの追加の部分の再生が防止される。
図5は、本開示の実施形態による、再生の終了を防止するために使用されるコンテンツベースの認証トークンを生成しながら再生を要求するための方法500の流れ図を示す。方法は、ハードウェア(回路、専用論理など)を含む可能性がある処理論理、ソフトウェア(たとえば、処理デバイス上で実行される命令)、またはこれらの組合せによって実行される。一部の実施形態において、方法500の一部のまたはすべての動作は、図1のシステム100の1つまたは複数の構成要素によって実行される可能性がある。その他の実施形態において、方法500の1つまたは複数の動作は、図1~図3に関連して説明されたコンテンツ配布ネットワーク130の認可モジュールおよび/またはデータ認可サービス124によって実行されてよい。図1~図3に関連して説明された構成要素が図5の態様を示すために使用される可能性があることは、留意され得る。
ブロック502において、方法500を実装する処理論理は、所望のコンテンツを特定するユーザ入力を受信する。たとえば、クライアントデバイスのユーザは、ブラウザまたはネイティブアプリケーションなどのアプリケーションを使用して、コンテンツ共有プラットフォームによってホストされるビデオアイテムまたはオーディオアイテムを再生することを要求し得る。
ブロック504において、処理論理は、所望のコンテンツに基づくコンテンツベースの認証トークンの生成を開始する。一部の実施形態において、コンテンツベースの認証トークンは、所望のコンテンツの識別子、所望のコンテンツの第1の要求を発行したクライアントデバイスのアプリケーションの識別子、および/またはクライアントデバイスのアプリケーションによって開始された以前の再生イベントに関連するデータに基づいて、処理論理によって生成され得る。
ブロック506において、処理論理は、所望のコンテンツの第1の要求をコンテンツ共有プラットフォームに送信する。第1の要求は、クライアントデバイスとコンテンツ共有プラットフォームとの間のセッションに関連するセッションベースの認証トークンを含み得る。
ブロック508において、処理論理は、コンテンツ共有プラットフォームから所望のコンテンツの最初の部分を受信する。さらに、一部の実施形態において、処理論理は、所望のコンテンツの第1の要求に対するコンテンツ共有プラットフォームの応答を受信することができる。応答は、第1の要求に関連する再生イベントの再生イベント識別子と、所望のコンテンツ(たとえば、要求されたコンテンツの残り)を取得するための1つまたは複数のリソースロケータとを含み得る。一部の実施形態において、応答は、所望のコンテンツのそれぞれの部分を取得するためにそれぞれ使用される複数のリソースロケータを含む。その他の実施形態において、応答は、所望のコンテンツを取得するための単一のリソースロケータを含む。
ブロック510において、処理論理は、最初の部分を使用して所望のコンテンツの再生を開始する。所望のコンテンツの再生は、コンテンツベースの認証トークンの生成がクライアントデバイスにおいて完了される前に開始し得る。
ブロック512において、処理論理は、コンテンツベースの認証トークンの生成を完了すると、所望のコンテンツの追加の部分の第2の要求を送信する。第2の要求は、コンテンツベースの認証トークンを含む。一部の実施形態において、追加の部分の第2の要求は、リソースロケータのうちのそれぞれのリソースロケータを含む。第2の要求は、コンテンツベースの認証トークン、および所望のコンテンツのさらなる追加の部分を取得するためのそれぞれのリソースロケータとともに繰り返し送信され得る。
その他の実施形態において、応答は、単一のリソースロケータを含み、第2の要求は、所望のコンテンツの再生の終了を回避するために、所望のコンテンツの再生の開始から所定の期間内にコンテンツベースの認証トークンとともに送信されることを要求される。
ブロック514において、処理論理は、所望のコンテンツの追加の部分を受信する。
ブロック516において、処理論理は、追加の部分を使用して所望のコンテンツの再生を継続する。
図6は、本開示の一実施形態による例示的なコンピュータシステム600を示すブロック図である。コンピュータシステム600は、本明細書において検討される方法のうちのいずれか1つまたは複数をマシンに実行させる命令の1つまたは複数の組を実行する。命令のセット、命令などは、コンピュータシステム600によって実行されるときにコンピュータシステム600に初期再生モジュール142(図示せず)、認可モジュール138、および/またはデータ認可サービス124(図示せず)の1つまたは複数の動作を実行させる命令を指す場合がある。マシンは、クライアント-サーバネットワーク環境内のサーバもしくはクライアントデバイスとして、またはピアツーピア(もしくは分散型)ネットワーク環境内のピアマシンとして動作する可能性がある。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、モバイル電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって行われるべき行為を指定する(逐次的もしくはその他の)命令の組を実行することができる任意のマシンである可能性がある。さらに、単一のマシンだけが示されているが、用語「マシン」は、本明細書において検討される方法のうちのいずれか1つまたは複数を実行するための命令の組を個々にまたは連携して実行するマシンの任意の集合を含むとやはり受け取られる。
コンピュータシステム600は、バス608を介して互いに通信する処理デバイス602、メインメモリ604(たとえば、読み出し専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)またはRambus DRAM(RDRAM)などのダイナミックランダムアクセスメモリ(DRAM)など)、スタティックメモリ606(たとえば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータストレージデバイス616を含む。
処理デバイス602は、マイクロプロセッサ、中央演算処理装置などの1つまたは複数の汎用処理デバイスを表す。より詳細には、処理デバイス602は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、またはその他の命令セットを実装する処理デバイスもしくは命令セットの組合せを実装する処理デバイスである可能性がある。処理デバイス602は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなど1つまたは複数の専用処理デバイスである可能性もある。処理デバイス602は、本明細書において検討される動作を実行するためのシステムアーキテクチャ100および認可モジュール151の命令を実行するように構成される。
コンピュータシステム600は、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、またはインターネットなどのネットワーク618を介したその他のマシンとの通信を提供するネットワークインターフェースデバイス622をさらに含む可能性がある。コンピュータシステム600は、ディスプレイデバイス610(たとえば、液晶ディスプレイ(LCD)またはブラウン管(CRT))、英数字入力デバイス612(たとえば、キーボード)、カーソル制御デバイス614(たとえば、マウス)、および信号生成デバイス620(たとえば、スピーカ)も含む可能性がある。
データストレージデバイス616は、本明細書において説明された方法または機能のうちの任意の1つまたは複数を具現化するシステムアーキテクチャ100または認可モジュール138の命令のセットが記憶される非一時的コンピュータ可読ストレージ媒体624を含んでよい。システムアーキテクチャ100または認可モジュール138の命令のセットは、コンピュータシステム600によるそれらの命令の実行中にメインメモリ604内におよび/または処理デバイス602内に完全にまたは少なくとも部分的に存在する場合もあり、また、メインメモリ604および処理デバイス602は、コンピュータ可読ストレージ媒体を構成する。命令の組は、ネットワークインターフェースデバイス622を介してネットワーク618上でさらに送信または受信される可能性がある。
コンピュータ可読ストレージ媒体624の例は単一の媒体として示されているが、用語「コンピュータ可読ストレージ媒体」は、命令の組を記憶する単一の媒体または複数の媒体(たとえば、集中的なもしくは分散型のデータベース、ならびに/または関連するキャッシュおよびサーバ)を含み得る。用語「コンピュータ可読ストレージ媒体」は、マシンによる実行のために命令の組を記憶するか、符号化するか、または運ぶことができ、本開示の方法のうちのいずれか1つまたは複数をマシンに実行させる任意の媒体を含み得る。用語「コンピュータ可読ストレージ媒体」は、ソリッドステートメモリ、光学式媒体、および磁気式媒体を含み得るがこれらに限定され得ない。
上述の説明において、多くの詳細が説明されている。しかし、本開示がこれらの具体的詳細なしに実施される可能性があることは、本開示の恩恵に浴する当業者に明らかであろう。場合によっては、本開示を曖昧にすることを避けるために、よく知られた構造およびデバイスは、詳細にではなくブロック図の形態で示されている。
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズムおよび記号表現の観点で提示された。これらのアルゴリズムの記述および表現は、データ処理技術に精通した者によって、それらの者の成果の内容を当該技術に精通したその他の者に最も効果的に伝えるために使用される手段である。ここでおよび概して、アルゴリズムは、所望の結果をもたらす自己矛盾のない一連の動作であると考えられる。動作とは、物理量の物理的操作を必要とする動作である。必ずではないが通常、これらの量は、記憶、転送、組合せ、比較、およびその他の操作を行われ得る電気的または磁気的信号の形態をとる。これらの信号をビット、値、要素、シンボル、文字、語、数などと呼ぶことが、主に共通使用の理由で便利な場合があることが分かっている。
しかし、これらのおよび同様の用語のすべてが適切な物理量に関連付けられるべきであり、これらの量に付される便宜的なラベルであるに過ぎないことは、留意されてよい。別途はっきりと記載されていない限り、説明全体を通じて、「生成する」、「提供する」、「調整する」、「受信する」、「取り消す」などの用語を利用する検討は、コンピュータシステムのメモリまたはレジスタ内の物理的(たとえば、電子的)量として表されるデータを操作し、コンピュータシステムのメモリまたはレジスタまたはその他のそのような情報ストレージ、送信、もしくは表示デバイス内の物理的量として同様に表されるその他のデータに変換するコンピュータシステムまたは同様の電子的なコンピューティングデバイスの行為およびプロセスを指すことが理解される。
本開示は、本明細書の動作を実行するための装置にも関する。この装置は、必要とされる目的のために特別に構築される可能性があり、またはコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化もしくは再構成される汎用コンピュータを含む可能性がある。そのようなコンピュータプログラムは、フロッピーディスクを含む任意の種類のディスク、光ディスク、コンパクトディスク読み出し専用メモリ(CD-ROM)、光磁気ディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、磁気式もしくは光学式カード、または電子的な命令を記憶するのに好適な任意の種類の媒体などであるがこれらに限定されないコンピュータ可読ストレージ媒体に記憶される可能性がある。
語「例」または「例示的な」は、本明細書においては、例、具体例、または事例としての役割を果たすことを意味するために使用される。本明細書において「例」または「例示的な」と記載されたいずれの態様または設計も、必ずしもその他の態様または設計よりも好ましいかまたは有利であると解釈されるべきでない。むしろ、語「例」または「例示的な」の使用は、概念を具体化して提示するように意図される。本出願において使用されるとき、用語「または(or)」は、排他的な「または(or)」ではなく包含的な「または(or)」を意味するように意図される。つまり、別途明記されない限り、または文脈から明らかでない限り、「XはAまたはBを含む」は、自然な包含的順列(natural inclusive permutation)のいずれかを意味するように意図される。つまり、XがAを含む、XがBを含む、またはXがAとBとの両方を含む場合、「XがAまたはBを含む」は、上記の場合のいずれかの下で満足される。加えて、本出願および添付の請求項において使用される冠詞「a」および「an」は、別途明記されない限り、または文脈から単数形を対象とすることが明らかでない限り、通常「1つまたは複数の(one or more)」を意味するとみなされる可能性がある。さらに、用語「一実施形態(an embodiment)」、または「1つの実施形態(one embodiment)」、または「実装(an implementation)」、または「1つの実装(one implementation)」の使用は、全体を通じて、そのように説明されない限り同じ実施形態または実装を意味するように意図されていない。本明細書において使用される用語「第1の」、「第2の」、「第3の」、「第4の」などは、異なる要素を区別するためのラベルとして意図されており、必ずしも、それらの用語の数の指定に従った順序の意味を持たない可能性がある。
説明を簡単にするために、本明細書の方法は、一連の行為または動作として示され、説明される。しかし、本開示による行為は、様々な順序でおよび/または同時に、ならびに本明細書において提示および説明されないその他の行為とともに行われ得る。
さらに、開示された対象による方法を実施するために、示されるすべての行為が必要とされるわけではない可能性がある。加えて、当業者は、方法が、代替的に状態図による一連の相互に関連した状態またはイベントとして表される可能性があることを理解し、認識するであろう。その上、本明細書において開示された方法は、そのような方法をコンピューティングデバイスに運び、転送することを容易にするための製品に記憶され得ることを理解されたい。本明細書において使用される製品という用語は、任意のコンピュータ可読デバイスまたはストレージ媒体からアクセス可能なコンピュータプログラムを包含するように意図される。
さらなる実施形態において、上述の実施形態の動作を実行するための1つまたは複数の処理デバイスが、開示されている。加えて、本開示の実施形態においては、非一時的コンピュータ可読ストレージ媒体が、説明された実施形態の動作を実行するための命令を記憶する。また、その他の実施形態においては、説明された実施形態の動作を実行するためのシステムも、開示されている。
上述の説明は例示的であるように意図されており、限定的であるように意図されていないことを理解されたい。その他の実施形態は、上の説明を読み、理解すると、当業者に明らかであろう。したがって、本開示の範囲は、添付の請求項が与えられる均等物の全範囲と併せたそのような請求項に関連して決定される可能性がある。