(57)【特許請求の範囲】
【請求項１】
ローカルユーティリティを制御するコンピュータ実施方法であって、
プロセッサと、前記プロセッサによって実行される命令を記憶するメモリとを有するクライアントコンピュータにおいて、
ウェブブラウザにおいて、
前記クライアントコンピュータ上で実行されるローカルユーティリティのための２つ以上の制御要素を表示することであって、前記２つ以上の制御要素は、ループバックネットワークアドレスに帰着するドメインを含む各リンクを含み、前記ループバックネットワークアドレスは前記クライアントコンピュータにおけるローカルウェブサーバのための自己参照アドレスであり、前記ローカルユーティリティは前記ウェブブラウザとは異なる、表示することと、
前記２つ以上の制御要素のうちの１つの制御要素を選択するユーザインプットを受信することと、
前記ユーザインプットに応答して、前記選択した制御要素の個々のリンクを通して前記クライアントコンピュータに配置されるローカルウェブサーバへ要求を発行することと、を含み、前記ローカルウェブサーバは前記ローカルユーティリティに結合され、
前記ローカルウェブサーバにおいて、
前記ウェブブラウザから前記要求を受信することと、
前記ローカルユーティリティに前記要求のコマンド部分を提供することと、を含み、
前記ローカルウェブサーバに結合される前記ローカルユーティリティにおいて、
前記ローカルウェブサーバから前記要求の前記コマンド部分を受信することに応じて、前記要求の前記コマンド部分に基づいて１つ又は複数の行動をとること、
を含み、前記１つ又は複数の行動は、
メディアファイルの再生、
メディアファイルの停止、
メディアファイルの一時停止、
メディアファイルの高速先送り、
メディアファイルの巻き戻し、
メディアファイルのスキップ、
プレイリストの再生順序の変更、
プレイリストへのメディアファイルの追加、及び
プレイリストからのメディアファイルの削除
のうちの１つ又は複数を実行することを含む、
方法。
【請求項２】
前記ウェブブラウザは前記ローカルユーティリティの前記制御要素を含むモジュールを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記モジュールは、ウェブページのインラインフレームに含まれる、請求項２に記載のコンピュータ実施方法。
【請求項４】
前記制御要素に関連付けられる前記リンクはユニフォームリソースロケータである、請求項１〜３のいずれか１項に記載のコンピュータ実施方法。
【請求項５】
前記ウェブブラウザから発行された前記要求はｈｔｔｐ要求である、請求項１〜４のいずれか１項に記載のコンピュータ実施方法。
【請求項６】
前記ループバックネットワークアドレスはＩＰアドレスである、請求項１〜５のいずれか１項に記載のコンピュータ実施方法。
【請求項７】
前記ループバックネットワークアドレスは、前記ループバックネットワークアドレスとは異なるドメイン名に関連付けられる、請求項１〜６のいずれか１項に記載のコンピュータ実施方法。
【請求項８】
前記ループバックネットワークアドレスに帰着する前記ドメインは複数のサブドメインに分割され、
各サブドメインは前記ループバックネットワークアドレスに関連付けられる、請求項１〜７のいずれか１項に記載のコンピュータ実施方法。
【請求項９】
前記制御要素に関連付けられる前記リンクはｈｔｔｐｓプロトコルを指定する、請求項１〜８のいずれか１項に記載のコンピュータ実施方法。
【請求項１０】
前記ローカルウェブサーバおよび前記ローカルユーティリティは同じソフトウェアアプリケーションの一部である、請求項１〜９のいずれか１項に記載のコンピュータ実施方法。
【請求項１１】
電子装置であって、
１つ又は複数のプロセッサと、
ローカルユーティリティおよび前記ローカルユーティリティとは異なるウェブブラウザを含む２つ以上のプログラムを記憶するメモリと、
を備え、前記２つ以上のプログラムは、前記メモリに記憶され、前記１つ又は複数のプロセッサによって実行されるように構成され、前記２つ以上のプログラムは、請求項１〜１０に記載の前記方法のいずれかを実施するための命令を含む、電子装置。
【請求項１２】
ローカルユーティリティを含む１つ又は複数のプログラムを記憶する非一時的なコンピュータ可読記憶媒体であって、前記１つ又は複数のプログラムは命令を含み、前記命令は、電子装置によって実行されると、前記電子装置に、請求項１〜１０に記載の方法のいずれかを実施させる、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
開示される概念は、一般的には、アプリケーションを、そのアプリケーションを実行中の同じコンピュータによって表示されているウェブページを通して制御することに関する。
【背景技術】
【０００２】
背景
近代のコンピュータでは、ユーザは、ウェブ閲覧等の他の機能を提供することに加えて、テキスト、静止画像、ビデオ、及びオーディオを含め、複数の異なるタイプのメディアを消費することができる。コンピュータはインタラクティブ性を増すとともに、より強力になっているため、ユーザはますます、各自のコンピュータに直接、メディアを記憶し、そこで消費するようになっている。ユーザはまた、ますます多くの時間をオンラインで過ごしており、ニュース、ウェブログ（ブログ）、及びオンラインマガジンを読むとともに、ソーシャルネットワーキングサイトを訪れている。しかし、多くのコンピュータシステムでは、音楽プレーヤ等のメディア再生ソフトウェアは、ウェブブラウザ等のウェブアクセスソフトウェアとは別個である。したがって、ユーザは、音楽の再生を調整するか、若しくは変更するために、又は音楽プレーヤのステータス情報を見るために、表示されているウェブブラウザと音楽プレーヤとを切り替える必要がある。しかし、異なるアプリケーション間をナビゲートする必要性は、非効率的且つ不便であり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
現在、ローカルメディアソフトウェア又はウェブページのいずれか一方が、他方に情報を送信することが望ましい場合、そうすることができるように、ウェブページが、ローカルに記憶され実行されるメディアプレーヤ（又は任意の他のローカルユーティリティ）と通信することは難しい。したがって、ローカルメディアプレーヤとウェブブラウザとの通信を提供することに関連するこれらの問題及び他の問題を解消するシステム及び方法を提供することが有利だろう。
【課題を解決するための手段】
【０００４】
発明の概要
したがって、ウェブブラウザ等のアプリケーションとローカルユーティリティとの間での高速で効率的且つ安全な通信を可能にするシステム及び方法が必要とされる。幾つかの実施形態によれば、プロセッサと、メモリとを有する電子装置において、方法が実行される。この方法は、アプリケーションから発せられ、第１のトークンを含む第１の要求を、ローカルユーティリティにおいて受信することを含む。アプリケーションは、第１のサーバから複数のリンク及び第１のトークンを含むウェブページを受信してある。複数のリンクは、アプリケーションによって第２のサーバから受信されている。この方法は、第１のトークンを第３のサーバに送信することを含む、第１のトークンを認証することを更に含む。この方法は、第１のトークンの認証に応答して、ローカルユーティリティにおいて第２のトークンを生成することを更に含む。この方法は、アプリケーションからの続く要求に含めるために、第２のトークンをアプリケーションに送信することを更に含む。
【０００５】
幾つかの実施形態では、この方法は、第３のトークンを含む第２の要求を受信することと、第３のトークンが第２のトークンに一致することを検証することとを更に含む。第２のトークンと第３のトークンとが一致する場合、方法は、第２の要求の内容に基づいて１つ又は複数の行動をとることを含む。第２のトークンと第３のトークンとが一致しない場合、方法は、第２の要求の内容に基づいて１つ又は複数の行動をとらないことを含む。
【０００６】
幾つかの実施形態では、第１のトークンを認証することは、第１のトークンをローカルユーティリティから第３のサーバに送信することと、ローカルユーティリティにおいて、認証メッセージを第３のサーバから受信することとを含む。
【０００７】
幾つかの実施形態では、アプリケーションはウェブブラウザであり、ローカルユーティリティはメディアプレーヤである。幾つかの実施形態では、ローカルユーティリティは、ローカルユーティリティ及びアプリケーション（例えば、ウェブブラウザ）と通信するウェブサーバを含む。幾つかの実施形態では、複数のリンクはモジュールに含まれる。幾つかの実施形態では、モジュールはｉフレームである。幾つかの実施形態では、リンクは、ローカルユーティリティ制御コマンド及び／又はローカルユーティリティステータス要求に対応する。幾つかの実施形態では、リンクはユニフォームリソースロケータ（ＵＲＬ）である。
【０００８】
幾つかの実施形態によれば、１つ又は複数のプロセッサと、メモリと、メモリに記憶され、１つ若しくは複数のプロセッサによって実行されるように構成される１つ又は複数のプログラムとを含む電子装置は、上述した任意の方法の動作を実行する命令を含む。幾つかの実施形態によれば、非一時的なコンピュータ可読記憶媒体は、内部に、命令を記憶しており、命令は、電子装置によって実行されると、上述した任意の方法の動作を装置に実行させる。
【０００９】
図面の簡単な説明
本明細書に開示される実施形態は、添付図面の図に、限定ではなく例として示される。同様の参照符号は、図面全体を通して対応するパーツを指す。
【図面の簡単な説明】
【００１０】
【図１】幾つかの実施形態によるクライアント−サーバ環境を示すブロック図である。
【図２】幾つかの実施形態によるクライアントコンピュータシステムを示すブロック図である。
【図３】幾つかの実施形態によるクライアント−サーバ環境を示すブロック図である。
【図４】幾つかの実施形態によるクライアント−サーバ環境を示すブロック図である。
【図５】幾つかの実施形態によるクライアント−サーバ環境を示すブロック図である。
【図６Ａ】幾つかの実施形態によるウェブページを示すブロック図である。
【図６Ｂ】幾つかの実施形態によるウェブページを示すブロック図である。
【図７】幾つかの実施形態によるローカルユーティリティを制御する方法のフローチャートを示す。
【図８】幾つかの実施形態によるクライアントコンピュータシステムを示すブロック図である。
【図９】幾つかの実施形態によるサーバコンピュータシステムを示すブロック図である。
【図１０】幾つかの実施形態によるサーバコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【００１１】
例示的実施形態の説明
本明細書に記載のシステム及び方法は、クライアントコンピュータで実行される２つのアプリケーション間での双方向連続通信を可能にする。特に、開示される実施形態は、ユーザが、ウェブブラウザ等のローカルアプリケーションに表示されるウェブページに含まれる制御要素を通して、ローカルに実行されるユーティリティ（メディアプレーヤ、ダウンロードマネージャ、カメラ制御アプリケーション、フォト／ビデオエディタ等）の特定の側面を制御し、その特定の側面と対話できるようにする。本明細書に記載のシステム及び方法は、ウェブページに含めるローカルユーティリティの制御要素（制御ボタン、ステータスウィンドウ等）を含むモジュールを作成する方法も提供する。
【００１２】
ウェブページは、限られた機能（単純なテキスト及び画像の表示等）のみの提供に使用されていたが、本明細書では、専用のローカルに記憶され実行されるソフトウェアによって従来は提供されていた機能を実行することが可能である。例えば、ウェブページは本明細書では、ユーザが各自のコンピュータに音楽をストリーミングできるように、又はビデオ若しくは写真を撮影するようローカルウェブキャムを制御できるようにすることができる。しかし、そのような機能はブラウザベースの解決策（例えば、JAVA（登録商標）、QUICKTIME（商標）、FLASH（商標）等のプラグイン等）によって提供し得るが、ローカルに記憶され実行されるソフトウェアがやはり、ブラウザベースの解決策よりも効率的であるか、好都合であることが多い。例えば、メディアプレーヤアプリケーションは、コンピュータのローカルファイル構造への直接アクセスを有し、ローカルファイル構造を制御し、したがって、記憶されたメディアファイルのアクセス、解析、編成、及び再生を素早く効率的に行うことができる場合に、最も効率的であることが多い。
【００１３】
さらに、ローカルに記憶され実行されるアプリケーションは、ブラウザベースの解決策を用いては実施が難しい追加のサービス又は機能を提供し得る。例えば、ローカルメディアプレーヤは、最近再生された曲を識別するステータスアップデートをソーシャルネットワーキングサイトに自動的に掲示するように構成し得る。別の例では、ローカルメディアプレーヤは、ユーザのメディア消費履歴を追跡し得、それにより、メディアプレーヤに関連付けられたメディアサービスは、ユーザの好みに関連する新しいメディアアイテムの示唆を提供することができる。場合によっては、これらの特徴をウェブページにおいて、又はブラウザプラグインを用いて実施することは困難である。さらに、これらの機能を実行するローカルユーティリティがすでに存在する場合、ウェブブラウザ環境でそのようなローカルユーティリティを再生成しようとするよりも、そのローカルユーティリティを使用するほうが効率的であり得る。
【００１４】
しかし、特定のタイプのアプリケーションをローカルに記憶し実行することが有利であるが、ウェブブラウザからそのようなアプリケーションを制御することは困難であり、且つ／又は非効率的であり得る。例えば、ユーザは、音楽を聴きながらウェブをサーフィンしている場合、トラックの変更、音量の調整等を行うために、ウィンドウをウェブブラウザとローカルメディアプレーヤとの間で常に変更する必要がある。さらに、ユーザが、特定の曲又はプレイリストをストリーミングする選択肢を提供するウェブページにウェブブラウザをナビゲートする場合を考える。示唆される特定の曲を気に入り、ユーザはその音楽を開始し、引き続きウェブを閲覧する。後に、ユーザは、新しい曲をストリーミングする選択肢を提供する異なるブラウザウィンドウ又はタブ内のウェブページに遭遇する。ユーザがその新しい曲を選択する場合、一方のウェブページが新しい曲のオーディオ再生を開始したことを別のウェブページが知る術はないため、両方の曲が同時に再生される。したがって、ユーザは、不要な音楽を提供しているウェブページを見つけ、その音楽を停止し、再び新しいページにナビゲートし、最後に新しい音楽を開始するために、開かれている複数のブラウザインスタンス間をナビゲートするのに時間を費やさざるを得ない。これは不便である。これらの問題及び他の問題に鑑みて、ウェブブラウザ環境を出る必要なく、又はウェブページから注意を逸らす必要なく、ローカルアプリケーションの制御及びローカルアプリケーションとの対話を可能にする、ウェブページに含めるモジュールを提供することが有利である。さらに、ウェブページ作成者及び管理者が、過度のプログラミングを必要とせずに、ローカルユーティリティとウェブブラウザとの間での通信を可能にする、ウェブページに含めるモジュールを素早く容易に作成できるようにすることが有利である。
【００１５】
したがって、本明細書に開示される概念及び実施形態は、ローカルに記憶され実行されるユーティリティ（メディアプレーヤ等）と、別個のアプリケーション（ウェブブラウザ等）によって検索され、且つ／又は表示されるウェブページ及び他のリモートコンテンツ（まとめて「ウェブページ」）との間でのシームレスなユーザ経験を可能にする。開示されるシステム及び方法では、ユーザは、ウェブページから離れてナビゲートされずに、ローカルユーティリティを制御することができる。さらに、開示されるシステム及び方法では、複数の異なるモジュール及び／又はウェブページを通して、単一のローカルユーティリティを制御することができ、これは、上述した同時音楽再生状況等の制御衝突の回避に役立つ。場合によっては、開示される実施形態は、消費者に提供するローカルアプリケーションの利便性及びアクセス可能性を改善しようとするとともに、ユーザが訪れ得るウェブページ等の他のリソースとのシームレスな統合を可能にしようとするエンティティによって利用され得る。
【００１６】
図、特に図１をこれより参照し、図１は、幾つかの実施形態によるクライアント−サーバ環境のブロック図を示す。クライアント−サーバ環境は、クライアントコンピュータシステム１０２と、ウェブサーバ１０４と、モジュールサーバ１２２と、ＤＮＳサーバ１１４と、ネットワーク１０６とを含む。
【００１７】
クライアントコンピュータシステム１０２（「クライアントコンピュータ１０２」）は、ウェブブラウザ１０８と、ローカルウェブサーバ１１２と、ローカルユーティリティ１１０とを含む。ウェブブラウザ１０８は、ウェブページ１１６を検索し、且つ／又は表示するように構成される。以下に開示されるシステム及び方法を使用して、クライアントコンピュータ１０２は、ユーザが、ユーザに別個のウィンドウ又はアプリケーション環境でローカルユーティリティ１１０と対話するように要求するのではなく、ウェブブラウザ１０８を介してローカルユーティリティ１１０と対話できるようにする。
【００１８】
幾つかの実施形態では、ウェブページ１１６は、ウェブサーバ１０４によってクライアントコンピュータ１０２に送信される。例えば、ウェブページ１１６は、ユーザの要求時にウェブサーバ１０４から検索されるブログ又はソーシャルネットワーキングウェブページであり得る。当然、上述したように、ウェブページ１１６は、電子商取引、ニュース、エンターテイメント、メディア、及び／又は他のウェブページを含む任意のタイプのリモートコンテンツであり得、且つ／又は任意のタイプのリモートコンテンツを含み得る。幾つかの実施形態では、ウェブページ１１６は、ウェブブラウザ１０８とローカルウェブサーバ１１２との間での通信を開始するように構成される複数のリンクを含む。幾つかの実施形態では、リンクにはローカルユーティリティ制御要素１２０が関連付けられる。ローカルユーティリティ制御要素１２０が関連付けられたリンクは、本明細書では、ローカルユーティリティ制御リンクとも呼ばれる。幾つかの実施形態では、リンクは、ローカルユーティリティ制御要素１２０にプログラム的に関連付けられたｈｔｍｌ要素である。
【００１９】
幾つかの実施形態では、ローカルユーティリティ１１０はメディアプレーヤ（例えば、ローカル又はリモートに記憶されたメディアを再生するように構成されたメディアプレーヤ）であり、ローカルユーティリティ制御要素１２０は、選択された場合に、ローカルユーティリティに再生、一時停止、停止、スキップ等のメディア再生又は閲覧機能を実行させるグラフィカル要素を含む。（ユーザは、マウスクリック、キーボード入力、タッチ入力、音声入力等の任意の適切な様式でグラフィカル要素を選択し得る）。幾つかの実施形態では、ローカルユーティリティ制御要素１２０は、メディアプレーヤによって現在再生中のメディアについての情報を示す、「現在再生中」ウィンドウ等の出力要素を含む。
【００２０】
幾つかの実施形態では、リンクは、出力要素又は選択可能な要素に直接関連付けられるのではなく、むしろ、ウェブブラウザ１０８とローカルウェブサーバ１１２との間での他の必要な通信又は望ましい通信を可能にする。さらに、以下の開示では頻繁にローカルユーティリティ「制御要素」を参照するが、本教示は、要求（例えば、ｈｔｔｐ要求）をローカルユーティリティ１１０に送信するウェブページ内の任意の要素に適用可能である。要求は、ローカルユーティリティ１１０の動作状況を変更し得（例えば、トラックのスキップ）、ローカルユーティリティからの情報（例えば、「現在再生中」情報）を要求し得、又はローカルユーティリティ１１０に任意の他の行動をとらせ得る。
【００２１】
幾つかの実施形態では、ローカルユーティリティ制御要素１２０及びそれに関連付けられたローカルユーティリティ制御リンクは、モジュールサーバ１２２から受信されるモジュール１２４に含まれる。幾つかの実施形態では、ウェブページ１１６は、ウェブページ１１６に含めるために、モジュール（すなわち、モジュールの内容）をモジュールサーバ１２２からダウンロードさせるｈｔｍｌ要素又は他のコンピュータコードを含む。幾つかの実施形態では、モジュール１２４はインラインフレームである。（インラインフレームは、ドキュメントを別のドキュメント内に埋め込ませる）。幾つかの実施形態では、モジュールは、ウェブページ１１６内のｈｔｍｌ  ｉフレーム要素によって定義されるインラインフレームである。モジュールは、メディアプレーヤ及びビューア、カメラ又はウェブキャム制御アプリケーション、ダウンロードマネージャ等の様々な異なるタイプのローカルユーティリティのローカルユーティリティ制御要素１２０を含み得る。モジュールは、ローカルユーティリティ１１０の特定の側面を制御し、且つ／又は閲覧する「ウィジェット」として説明されることもあり得る。モジュール、モジュールの内容、及びモジュールがどのように作成されるかについて、図６Ａ及び図６Ｂを参照して後述する。
【００２２】
ローカルウェブサーバ１１２は、ローカルユーティリティ１１０と通信し、それにより、ｈｔｔｐ要求等のウェブブラウザ１０８から発行された要求は、ローカルウェブサーバ１１２によって受信され、要求からの情報は、ローカルユーティリティ１１０に送信されるか、又は他の様式で提供される。本考察では、ローカルウェブサーバ１１２はローカルユーティリティ１１０のフロントエンドとして機能するため、ローカルウェブサーバ１１２との通信を、ローカルユーティリティ１１０との通信と同じものと見なし得ることを理解されたい。幾つかの実施形態では、ローカルウェブサーバ１１２は、ローカルユーティリティ１１０とプログラム的に統合され、ローカルユーティリティ１１０とローカルウェブブラウザ１０８（及び／又は他のローカル又はリモートアプリケーション）との間での専用インタフェースとして機能する。幾つかの実施形態では、ローカルユーティリティ１１０及びローカルウェブサーバ１１２は、同じソフトウェアアプリケーションの一部であり、一方によって実行又は提供されるものとして本明細書において説明される動作又は機能は、他方によって実行又は提供することもできる。
【００２３】
幾つかの実施形態では、ウェブブラウザ１０８は、インターネットプロトコル（ＩＰ）通信を介してローカルウェブサーバ１１２と通信する。例えば、幾つかの実施形態では、ウェブページ１１６内のリンク（例えば、ローカルユーティリティ制御要素１２０に関連付けられたリンク）は、実行されると、ウェブブラウザ１０８にハイパーテキスト転送プロトコル（ｈｔｔｐ）要求を特定のＩＰアドレスに送信させるユニフォームリソースロケータ（ＵＲＬ）である。幾つかの実施形態では、ｈｔｔｐ要求は、ローカルウェブサーバ１１２及び／又はローカルユーティリティ１１０によって認識され、ローカルユーティリティ１１０に何らかの行動をとらせるパラメータ及び／又はコマンドを含む。ローカルユーティリティ１１０がメディアプレーヤである実施形態では、パラメータ及び／又はコマンドは、メディアプレーヤに再生制御機能（例えば、停止、再生、スキップ等）を実行させ得るか、又はメディアプレーヤに、要求された情報（例えば、現在再生されている曲、直前に再生されたアルバム等）をウェブブラウザ１０８に提供させ得る。
【００２４】
ローカルユーティリティ制御要素１２０が実行されるとき、ローカルウェブサーバ１１２がｈｔｔｐ要求をウェブブラウザ１０８から受信するために、ローカルユーティリティ制御リンクは、ローカルウェブサーバ１１２のＩＰアドレスに向けられなければならない。この機能は、ローカルウェブサーバ１１２にループバックアドレスを関連付け、ループバックアドレスを予め定義されたドメイン名にリンクすることによって提供し得る。
【００２５】
特に、幾つかの実施形態では、ローカルウェブサーバ１１２にはクライアントコンピュータ１０２のループバックアドレス（又はループバックネットワークアドレス）が関連付けられる。本明細書で使用される場合、ループバックアドレスは自己参照アドレスであり、それにより、コンピュータから発行され、ループバックアドレスにアドレス指定される通信（ＩＰ通信を含む）は、同じコンピュータによって受信されることになる。ＩＰｖ４プロトコル通信が使用される実施形態では、コンピュータのループバックネットワークアドレスは、ＩＰアドレス127.0.0.1に対応する（図１に示されるように）。幾つかの実施形態では、他のループバックネットワークアドレスが使用される。
【００２６】
ウェブブラウザ１０８がｈｔｔｐ要求をローカルウェブサーバ１１２に送信するために、ウェブページ１１６は、「http://127.0.0.1/[command]」等のＵＲＬに関連付けられたリンクを含み得る。（詳細に後述するように、ＵＲＬの[command]部分は、ローカルユーティリティ１１０に同じ動作を実行させるように構成し得る）。リンクが実行されると、ウェブブラウザ１０８はｈｔｔｐ要求をＩＰアドレス127.0.0.1に送信し、このアドレスはローカルウェブサーバ１１２に対応する。したがって、通信が、ウェブブラウザ１０８とローカルウェブサーバ１１２（ひいてはローカルユーティリティ１１０）との間で可能になる。
【００２７】
しかし、様々な理由により、ループバックアドレスをローカルユーティリティ制御リンクのＵＲＬに直接（すなわち、127.0.0.1をＵＲＬにハードコード化することにより）包含することが実際的ではないことがある。例えば、本発明の幾つかの実施形態で使用されるセキュリティの特徴は、ＵＲＬがループバックアドレスに直接アドレス指定される場合、可能ではない。むしろ、ＵＲＬ内のＩＰアドレスを使用するよりも、ドメイン名を使用するほうが有利であり得る。したがって、１つ又は複数の外部ドメイン名をドメイン名システムに登録し、ループバックアドレスに関連付け得る。図１に示されるように、ドメイン名システム（ＤＮＳ）サーバ１１４はドメイン名テーブル１１８を含む。ドメイン名テーブルは、ドメイン名をネットワークアドレス（ＩＰアドレス等）にマッピングする。ウェブブラウザがｈｔｔｐ要求をＵＲＬに発行すると、ＤＮＳサーバは通常、ＵＲＬ内のドメインを実際のネットワークアドレスに変換するのに使用される。例えば、ｈｔｔｐ要求をＵＲＬ  www.Example.com/homeに発行するブラウザは、「ホーム」ページを要求する実際のネットワークアドレスを特定する必要がある。そうするために、ウェブブラウザ１０８はＤＮＳサーバ１１４と通信し、ドメイン「Example.com」のネットワークアドレス（例えば、ＩＰアドレス）を要求する。図１に示されるように、ドメイン名テーブル１１８はドメイン「Example.com」にＩＰアドレス75.25.1.92を相関付け、ＤＮＳサーバ１１４はこのＩＰアドレスをウェブブラウザ１０８に返す。ウェブブラウザ１０８は次に、ページ「/home」（及び「Example.com」に意図される実際に任意の他の通信）に対する要求をＩＰアドレス75.25.1.92に送信する。
【００２８】
幾つかの実施形態では、クライアントコンピュータ１０２でのウェブブラウザ１０８とローカルユーティリティ１１０との通信を促進するために、ドメインをドメイン名システムに登録し得、ドメイン名システムにおいて、ドメインにループバックアドレスが関連付けられる。図１に示されるように、ドメイン名テーブル１１８は、ドメイン「loopdomain.com」のエントリを含み、このエントリにはループバックネットワークアドレス127.0.0.1が関連付けられる。
【００２９】
「loopdomain.com」にループバックアドレスを関連付けるＤＮＳエントリは、上述したように、ウェブページ１１６内のリンクと併せて使用し得る。特に、ループバックＩＰアドレスをローカルユーティリティ制御リンクにハードコード化するのではなく、リンクに「http://loopdomain.com/[command]」等のＵＲＬを関連付け得る。このドメインが、ドメイン名テーブル１１８を介してループバックアドレスにマッピングされるため、このドメインにアドレス指定された任意のｈｔｔｐ要求は、任意の他のコンピュータに送信されることなく（実際に、ローカルクライアントコンピュータ１０２を出る必要さえなく）、ウェブブラウザ１０８からローカルウェブサーバ１１２に直接送信される。しかし、ＵＲＬに、単にＩＰアドレスではなく外部ドメイン名が関連付けられるため、図３を参照して後述するような幾つかの他の特徴及び利点を達成し得る。
【００３０】
ＩＰプロトコルを介して通信するために、ウェブブラウザ１０８及びローカルウェブサーバ１１２は、幾つかの技法を使用して、オープン通信チャネルを確立し維持する。幾つかの実施形態では、ウェブブラウザ１０８は、開いているＴＣＰ／ＵＤＰポート等の開いているポートを使用してローカルウェブサーバ１１２と通信しなければならない。幾つかの実施形態では、ウェブブラウザ１０８は、ポートスキャン技法を使用して、ローカルウェブサーバ１１２で利用可能なポートを識別する。例えば、幾つかの実施形態では、ウェブページ１１６及び／又はウェブブラウザ１０８は、予め定義されたポート範囲内で利用可能な最初のポートを見つけることにより、ローカルウェブサーバ１１２に接続しようとする。開かれているポートが識別されると、ウェブブラウザ１０８はそのポートを介してローカルウェブサーバ１１２と通信する。
【００３１】
しかし、ウェブブラウザ１０８が開いているポートを識別しようとしている場合、サーバがクライアントコンピュータ１０２で実行されていないとき、ローカルウェブサーバ１１２での開かれているポートは見つからない。場合によっては、開いているポートを識別することができないことは、ローカルユーティリティ１１０が現在、クライアントコンピュータ１０２で実行されていないことをウェブブラウザ１０８（又はウェブページ１１６内のスクリプト若しくは他のコード）に示す。したがって、ウェブブラウザ１０８は、ローカルユーティリティ１１０を自動的に起動するように構成し得る。（この考察では、ローカルユーティリティ１１０の起動は、ローカルウェブサーバ１１２の起動を含む）。幾つかの実施形態では、これは、クライアントコンピュータ１０２のオペレーティングシステムによって認識されるカスタムＵＲＩスキームを使用して達成される。幾つかの実施形態では、ウェブページ１１６は、カスタムＵＲＩスキームを使用するリンクを含み得、ローカルユーティリティ１１０を起動するコマンドを含む。このリンクがブラウザによって実行される（開いているポートが識別されなかった後）場合、クライアントコンピュータ１０２はローカルユーティリティ１１０を起動し、それにより、ウェブブラウザ１０８との通信を確立し得る。
【００３２】
一例では、ユーザが、メディアプレーヤウィジェットを含むウェブページを閲覧しており、ユーザが「再生」コマンドを選択する場合、ウェブブラウザ１０８は、上述したポートスキャン法を介してローカルユーティリティ１１０と通信しようとする。ローカルユーティリティ１１０が実行されていない場合、ウェブブラウザ１０８は、カスタムＵＲＩスキームを使用してリンクを実行して、ローカルユーティリティ１１０を起動し、その後、選択された曲を再生するコマンドを首尾よく通信する。
【００３３】
図２は、リアルタイム双方向通信を、クライアントコンピュータシステム１０２においてウェブブラウザ１０８とローカルサーバ１１２との間でいかに確立し得るかを示すブロック図である。ｈｔｔｐ通信では、ウェブサーバは、クライアントコンピュータでのウェブブラウザとの招かれていない通信を開始しないことがある。むしろ、ウェブサーバは、ウェブブラウザによって発行される要求に応答することしかできない。したがって、通信がウェブブラウザとウェブサーバとの間で渡される間、全ての通信は最初に、ウェブブラウザによって開始されなければならない。しかし、特定の状況では、特定の要求なしでのウェブサーバによるウェブブラウザへの情報の送信を許可すべきである。例えば、ローカルメディアプレーヤアプリケーションが、ウェブページ内のメディアプレーヤウィジェットの「現在再生中」ウィンドウを埋めるなど、現在再生されている曲についての情報を送信することが有利であり得る。そして、ローカルメディアプレーヤは、ウェブブラウザがアップデートを要求するときだけではなく、アップデートが生じるときは常に、現在再生されている曲についての更新された情報を送信可能であるべきである。
【００３４】
図２に示されるように、幾つかの実施形態では、ウェブページ１１６は、オープンエンドメッセージ要求２０２をローカルウェブサーバ１１２に送信するように構成される。幾つかの実施形態では、オープンエンドメッセージ要求２０２は、ウェブページ１１６がロードされるとすぐに、ウェブブラウザ１０８から送信され、それにより、ローカルユーティリティ１１０がウェブブラウザ１０８に送信したいあらゆる情報を、その後、随時、メッセージに応答して送信し得る。幾つかの実施形態では、オープンエンドメッセージ要求２０２は、ローカルユーティリティ１１０がウェブブラウザ１０８に提供したい任意のタイプの情報に対する要求である。幾つかの実施形態では、オープンエンドメッセージ要求２０２は、ローカルユーティリティ１１０がメディアプレーヤである実施形態では、現在再生されている曲等の、予め定義されるカテゴリの情報に対する要求である。
【００３５】
ローカルウェブサーバ１１２は、オープンエンドメッセージ要求２０２を受信すると、ウェブブラウザ１０８に送信すべき何らかの情報があるとローカルユーティリティ１１０が判断するまで、要求に関して行動をとらない。場合によっては、ローカルユーティリティ１１０は、オープンエンドメッセージ要求２０２を受信した直後は、ウェブブラウザ１０８に送信するいかなる情報も有さない。したがって、ローカルウェブサーバ１１２は、リターンメッセージ２０４を送信する必要があるイベントを待つ。そのようなイベントが発生する場合、ローカルウェブサーバ１１２はリターンメッセージ２０４をウェブブラウザ１０８に送信する。幾つかの実施形態では、ウェブブラウザ１０８は即座に、別のオープンエンドメッセージ要求２０２をローカルウェブサーバ１１２に送信し、それにより、未決の要求が常に存在する。このようにして、ローカルウェブサーバ１１２は、オープンエンドメッセージ要求２０２を介してウェブブラウザ１０８に「未承認」情報を送信することができる。
【００３６】
他方、ユーザが複数のローカルユーティリティ制御要素１２０のうちの１つを選択したなど、ウェブブラウザ１０８がコマンドをローカルウェブサーバ１１２に発行する準備ができた場合、ウェブブラウザ１０８は単にコマンド２０６を発行する。ウェブブラウザ１０８は、要求を送信するためにインビテーションを必要としないため、コマンド２０６は随時送信し得る。幾つかの実施形態では、コマンド２０６はｈｔｔｐ要求の部分である。コマンド２０６及びオープンエンドメッセージ要求２０２を使用して、連続した双方向通信が、ローカルウェブサーバ１１２とウェブブラウザ１０８との間で可能になる。
【００３７】
幾つかの実施形態では、ウェブブラウザ１０８は、ウェブページ１１６及び／又はモジュール１２４によって要求される全ての通信を促進するために、ローカルウェブサーバ１１２との幾つかの接続を要求する。幾つかのブラウザは任意の単一のサーバへの同時接続数を制限するため、これは問題を呈し得る。しかし、場合によっては、ウェブページ１１６は、ローカルユーティリティ１１０との所望レベルの対話性を可能にするために、サーバ接続の最大数を超える接続数を要求し得る。例えば、ユーザは、単一のウェブブラウザで複数の開かれたウェブページを有し得、複数のウェブページは、ローカルユーティリティ１１０と通信するローカルユーティリティ制御要素１２０を有する。したがって、ブラウザが、ローカルウェブサーバ１１２への許容最大同時接続数をすぐに超える場合がある。さらに、未決の要求の維持により、多くの利用可能な接続が永続的に占有され得るため、この問題は、上述したオープンエンドメッセージ要求によって悪化するおそれがある。
【００３８】
この問題は、複数のサブドメインを通してローカルウェブサーバ１１２に接続することによって回避し得る。特に、ループバックアドレスに関連付けられたドメインは、random1.loopdomain.com、random2.loopdomain.com等の複数のサブドメインに分割し得る。幾つかの実施形態では、図１のドメイン名テーブル１１８に示されるように、これらのサブドメインにはそれぞれ、ループバックアドレス（この場合、127.0.0.1）が関連付けられる。ローカルウェブサーバ１１２との通信の開始を意図されるウェブページ１１６内のリンクは、これらのサブドメインに配信し得、したがって、ウェブブラウザ１０８からこれらのサブドメインのうちの任意のサブドメインへの任意の要求は、ローカルウェブサーバ１１２に向けられる。そして、要求は異なるドメイン名に送信されるため、ウェブブラウザ１０８は、異なるサーバに向けられているものとして要求を登録し、したがって、オープン接続の数を制限しない。
【００３９】
図３は、幾つかの実施形態により、通信をウェブブラウザ１０８とローカルウェブサーバ１１２との間にいかに確立し得るかを示すブロック図であり、ウェブページ１１６はセキュアプロトコルを介して受信される。
【００４０】
幾つかの場合、ウェブページは、ハイパーテキスト転送プロトコルセキュア（ｈｔｔｐｓ）等のセキュアプロトコルを介してウェブブラウザに送信される。しかし、ウェブブラウザは、ウェブページがｈｔｔｐｓコンテンツ並びにｈｔｔｐコンテンツを含む場合、アラート又は警告をユーザに発行するように構成される。したがって、ウェブページ１１６が、ｈｔｔｐｓ（例えば、https://Example.com）を介してウェブブラウザ１０８によって受信されるが、ローカルユーティリティ制御要素１２０に通常のｈｔｔｐ（例えば、http://www.loopdomain.com/[control]）が関連付けられている場合、ウェブブラウザ１０８は、警告メッセージをユーザに表示し得る。したがって、ウェブブラウザ１０８及びローカルウェブサーバ１１２がｈｔｔｐｓを介して通信できるようにすることが有利である。利点の中でも特に、これにより、ウェブブラウザ１０８での警告メッセージのトリガーが回避される。
【００４１】
セキュアプロトコルを介してウェブサーバと自由に通信可能になるには、先に、ウェブブラウザは、ウェブサーバとのセキュア通信チャネルを確立しなければならない。セキュア通信チャネルとは、保護された通信のために、２つ以上の装置間で認証され、且つ／又はセキュアであるセッションを表す。セキュア通信チャネルは、２つの装置間での認証ルーチン成功を前提とする。セキュア通信チャネルは、リモートサーバからクライアントコンピュータにデジタル証明書を転送することを含むルーチンを通して確立し得る。幾つかの実施形態では、ウェブブラウザ１０８及びローカルウェブサーバ１１２は、このタイプの認証ルーチンを使用してセキュア通信チャネルを確立する。特に、幾つかの実施形態では、ローカルウェブサーバ１１２は、ウェブサーバ１１２を認証するために、ウェブブラウザ１０８がウェブサーバ１１２に要求し得るデジタル証明書３０２を記憶する。幾つかの実施形態では、デジタル証明書３０２は公開鍵を含み、ウェブブラウザ１０８は、公開鍵を用いて、ローカルウェブサーバ１１２に送信される１つ又は複数のメッセージを暗号化する。
【００４２】
典型的なコンピュータネットワーキング使用では、デジタル証明書には、単一のドメイン（そのサブドメインを含む）が一意に関連付けられる。場合によっては、認証を続けるために、デジタル証明書に、証明書要求が送信されるドメインと同じドメインを関連付けなければならない。例えば、証明書要求がウェブブラウザから、www.BankPage.comに関連付けられたサーバに送信され、サーバが、www.EvilPage.comが関連付けられたデジタル証明書を返す場合、ウェブブラウザ１０８は、要求のドメイン（BankPage.com）と証明書のドメイン（EvilPage.com）とが一致しないことを認識する。これは、例えば、EvilPage.comからのサーバが、BankPage.comからのサーバとしてなりすまし、BankPage.comに意図される通信を傍受しようとする場合に生じ得る。しかし、ドメインが一致しないため、認証は失敗し、ウェブブラウザはそれ以上、EvilPage.comからのサーバとは通信しない。
【００４３】
上述したように、幾つかの実施形態では、ローカルユーティリティ制御要素１２０には、外部ドメイン（例えば、loopdomain.com）へのリンクが関連付けられる。したがって、ローカルウェブブラウザ１０８が、上述した認証プロセスを使用してローカルウェブサーバ１１２とのセキュア通信チャネルを確立するためには、ローカルウェブサーバ１０８は、それと同じドメインが関連付けられたデジタル証明書を有さなければならない。したがって、幾つかの実施形態では、ローカルウェブサーバ１１２は、ローカルユーティリティ制御リンクと同じドメイン（例えば、loopdomain.com）が関連付けられたデジタル証明書３０２を記憶する。
【００４４】
図３を再び参照し、図３は、ローカルユーティリティ制御リンクがｈｔｔｐｓプロトコルを指定し、外部ドメイン「loopdomain.com」を参照する一実施形態を示す。例えば、ローカルユーティリティ制御要素１２０は、「再生」ボタンであり得、以下のリンク：https://loopdomain.com/[play command]を関連付け得る。このリンクを実行すると（ウェブページ１１６での再生ボタンのユーザ選択に応答するなど）、ウェブブラウザ１０８は、ＤＮＳサーバ１１４によって供給されるアドレスでのサーバとのセキュア通信チャネルを確立しようとする。図３に示されるように、loopdomain.comのアドレスはループバックアドレスであるため、ウェブブラウザ１０８は、デジタル証明書に対する要求をローカルウェブサーバ１１２に送信する。これに応答して、ローカルウェブサーバ１１２は、デジタル証明書３０２（loopdomain.comが関連付けられる）をウェブブラウザ１０８に送信する。この場合、ブラウザ１０８は、loopdomain.comに証明書を要求し（実行されたリンクがそのドメインにアドレス指定されていたため）、ローカルウェブサーバ１１２から、そのドメインに関連付けられた証明書を受信してある。したがって、ウェブブラウザ１０８は、証明書に要求と同じドメインが関連付けられていることを確認し、したがって、認証ルーチンのこの部分を完了し、ウェブブラウザ１０８とローカルウェブサーバ１１２との間にセキュア通信チャネルを確立する。
【００４５】
幾つかの実施形態では、デジタル証明書３０２がクライアントコンピュータのユーザに提供される際、デジタル証明書３０２にはローカルウェブサーバ１１２がバンドルされる。幾つかの実施形態では、デジタル証明書３０２はコピーされ、ローカルウェブサーバ１１２のあらゆるインスタンスに含められる。幾つかの実施形態では、デジタル証明書３０２はワイルドカード証明書であり、それにより、証明書は、親ドメインに関連付けられた任意のサブドメイン（例えば、random1.loopdomain.com、random2.loopdomain.com等）を認証する。他の実施形態では、ユーザは、最初にローカルウェブサーバを実行するとき、デジタル証明書を取得し、且つ／又はインストールする。さらに他の実施形態では、ユーザは定期的に、デジタル証明書を更新し、且つ／又は他の様式で置き換える。
【００４６】
上記考察では、ｈｔｔｐｓプロトコルに関して認証プロセスを説明しているが、開示される概念は、他のセキュアプロトコル及び認証技法にも適用される。さらに、ｈｔｔｐｓ実施でのデジタル証明書が説明されるが、他のタイプの認証トークン、証明書、及びルーチンを、特に上述したものに代えて使用することも可能である。そして、認証プロセスの特定の態様について上述されているが、考察されていない他のステップ及び／又は手順を含んでもよい。例えば、認証プロセスは、セキュア通信チャネルに使用すべき暗号コード又は暗号鍵を確立し得る。
【００４７】
図４は、幾つかの実施形態による、クライアント−サーバ環境での複数のクライアントコンピュータ１０２−１〜１０２−ｎを示すブロック図である。上述したように、デジタル証明書３０２は、各クライアントコンピュータ１０２−ｎにインストールされたローカルウェブサーバに含めることができる。例えば、企業が、ローカルユーティリティと、関連付けられたローカルウェブサーバとを含むメディアプレーヤソフトウェア（例えば、メディアプレーヤアプリケーション）を配信する場合、各ソフトウェアパッケージはデジタル証明書３０２のコピーを含むことになる。したがって、同じデジタル証明書３０２（又は単一のデジタル証明書の同一コピー）が各クライアントコンピュータ１０２−ｎに常住することになる。
【００４８】
デジタル証明書３０２は通常、厳密に保護され、証明書を所有する組織外部で共有されることは意図されない。したがって、デジタル証明書３０２は、図３及び図４に記載されるように使用される場合、コピーが証明書所有者によって所有又は制御されない異なるコンピュータに常駐するため、侵害されたとみなされ得る。実際に、クライアントコンピュータには、証明書が発行された当事者ではなく、ソフトウェアパッケージのユーザが関連付けられる。
【００４９】
通常、侵害されたセキュリティ証明書は、深刻なセキュリティの問題である。例えば、オンライン商取引ウェブサイトの支払いページのデジタル証明書が侵害される場合、クライアントと商取引ウェブサイトのサーバとの通信が、悪意のある第三者によって傍受されるおそれがある。しかし、証明書が侵害されていることは、上述した実施形態では、同様のセキュリティリスクを生み出さない。むしろ、暗号化された通信は単に、クライアントコンピュータ自体にループバックされるため、セキュアメッセージは実際には決してクライアントコンピュータから出ない。これらの内部通信は、悪意のある当事者によって容易に傍受又は他の様式で改竄されない。
【００５０】
場合によっては、ローカルウェブサーバ１１２は、悪意のあるウェブページがローカルユーティリティ１１０と通信して、望ましくない動作を実行すること、又は機密データにアクセスすることを阻止するために、許可されたモジュール１２４からのコマンド及び要求のみを許容すべきである。例えば、ローカルユーティリティ１１０がカメラ制御アプリケーションである場合、悪意のあるウェブページは、接続されたウェブキャムを作動させ、許可されていない画像を捕捉しようとすることがある。または、悪意のあるウェブページは、メディアプレーヤからメディアアクセス履歴を抽出しようとすることがある。したがって、ローカルウェブサーバ１１２は、ウェブページからの要求が許可されているか否かを判断し、許可されていない要求を阻止することが可能であるべきである。本発明の一実施形態による方法例について、図５を参照して考察する。
【００５１】
図５は、幾つかの実施形態によるクライアント−サーバ環境のブロック図を示す。クライアント−サーバ環境は、クライアントコンピュータ１０２、ウェブサーバ１０４、モジュールサーバ１２２、トークンサーバ５０２、及び認証サーバ５０４を含み、これらはそれぞれネットワーク１０６に結合される。クライアントコンピュータ１０２は、図１を参照して上述したように、ウェブブラウザ１０８、ローカルユーティリティ１１０、及びローカルウェブサーバ１１２を含む。幾つかの実施形態では、モジュールサーバ１２２、トークンサーバ５０２、及び認証サーバ５０４には全て、共通のエンティティ又はサービスプロバイダに関連付けられる。
【００５２】
幾つかの実施形態では、図５のクライアント−サーバ環境を参照して後述するように、トークンパッシング手順を使用して、モジュール１２４とローカルウェブサーバ１１２との間に認証された通信を確立する。
【００５３】
ウェブブラウザ１０８は、ウェブサーバ１０４からウェブページ１１６を受信するように構成される。幾つかの実施形態では、ウェブページ１１６は、ローカルユーティリティ制御要素１２０を含むモジュール１２４への参照を含み、モジュール（及び／又はローカルユーティリティ制御要素１２０及びローカルユーティリティ制御リンクを含む、モジュールの内容）は、モジュールサーバ１２２から受信される。幾つかの実施形態では、ウェブサーバ１０４及びモジュールサーバ１２２には異なるドメインが関連付けられる。幾つかの実施形態では、モジュールへの参照は、モジュールサーバ１２２のＵＲＬが関連付けられたｈｔｍｌ  ｉフレーム要素である。
【００５４】
ウェブブラウザ１０８は、ウェブページ１１６をウェブサーバ１０４から受信すると、モジュールサーバ１２２と交信して、モジュール１２４を受信する。幾つかの実施形態では、モジュール１２４に対する要求の受信に応答して、モジュールサーバ１２２は、トークンサーバ５０２に第１のトークンを要求して受信する。次に、モジュールサーバ１２２は、モジュール１２４及び第１のトークンをウェブブラウザ１０８に送信する。幾つかの実施形態では、トークンは、文字列、ファイル、又はｈｔｔｐ通信に含めることができるか、又は他の様式でコンピュータ間で共有することができる任意の他の情報である。
【００５５】
次に、第１のトークンは、ウェブブラウザ１０８からローカルウェブサーバ１１２に送信される。幾つかの実施形態では、モジュール１２４は、第１のトークンを、モジュール１２４に含まれるリンクの実行によって開始されるｈｔｔｐ要求と共にローカルウェブサーバ１１２に送信するように構成される。ローカルウェブサーバ１１２への要求にトークンが含まれない場合、要求は無視される。第１のトークンが要求に含まれる場合、トークンは、認証のために、ローカルウェブサーバ１１２からローカルユーティリティ１１０に渡される。
【００５６】
幾つかの実施形態では、第１のトークンを認証するために、ローカルユーティリティ１１０は第１のトークンを認証サーバ５０４に送信する。認証サーバ５０４は、トークンサーバ５０２を使用して、トークンサーバ５０２が実際に第１のトークンを発行したか否かを確認する。次に、認証サーバ５０４は、ローカルユーティリティ１１０に、第１のトークンが真正であるか否か（例えば、第１のトークンがトークンサーバ５０２によってモジュール１２４に発行されたか否か）を返信する。
【００５７】
認証サーバ５０４からの返信により、第１のトークンがトークンサーバ５０２によって発行されていなかったことが示される場合、ローカルユーティリティは、ウェブブラウザ１０８からの要求を無視し、要求に含まれるあらゆるコマンドに関してそれ以上の行動をとらない。返信により、第１のトークンが真正であることが示される場合、ローカルユーティリティ１１０（及び／又はローカルウェブサーバ１１２）は第２のトークンを生成し、ウェブサーバ１１２は第２のトークンをモジュール１２４に送信する。次に、モジュール１２４は、ローカルウェブサーバ１１２への続く全ての要求に第２のトークンを含め、ローカルウェブサーバ１１２は、第２のトークンを含む要求に対してのみ行動をとる。
【００５８】
幾つかの実施形態では、ローカルウェブサーバ１１２とウェブブラウザ１０８との間の許容される唯一の通信は、モジュールサーバ１２２によって提供されるモジュールから発せられる通信である。したがって、上述したトークンパッシング法は、有効な第２のトークンを含む要求のみが認識され、有効な第２のトークンは、認証サーバ５０４による第１のトークンの認証後でのみ取得可能であるため、ウェブページとローカルウェブサーバ１１２との間での許可されてない通信を阻止する。
【００５９】
上記では、ユーザが、リモートソースから受信されるウェブページを介してローカルユーティリティ１１０と対話することができるように、ウェブブラウザ１０８とローカルユーティリティ１１０との間での連続した双方向通信をいかに可能にするかの態様について説明している。一態様は、ウェブページ１１６内にローカルユーティリティ制御要素１２０を提供することに関する。ローカルユーティリティ制御要素１２０及びモジュール１２４の態様について、図６Ａ及び図６Ｂを参照して考察する。
【００６０】
図６Ａは、幾つかの実施形態によるウェブページ６００及びモジュール１２４を示すブロック図である。モジュール１２４は、メディアプレーヤであるローカルユーティリティ１１０を制御し、ローカルユーティリティ１１０についての情報を提供する幾つかのローカルユーティリティ制御要素１２０を含む。幾つかの実施形態では、ローカルユーティリティ制御要素１２０は、再生制御要素６０２、プレイリスト情報６０４、及び現在再生中ウィンドウ６０６を含む。幾つかの実施形態では、モジュール１２４は、画像（例えば、アルバムアート）、テキスト（例えば、歌詞）等の他の情報を表示し、テキスト（例えば、カラオケ表示）、ビデオ（例えば、音楽ビデオ）等をスクロールし、且つ／又は同期することが可能である。異なるより多数又はより少数の制御要素を含むローカルユーティリティ制御要素１２０の異なる組み合わせも可能である。さらに、モジュール１２４内のローカルユーティリティ制御要素１２０のタイプは、通信するように構成されるローカルユーティリティ１１０の特定のタイプに依存する。
【００６１】
上述したように、幾つかの実施形態では、モジュール１２４はインラインフレームであり、このフレームは、ｈｔｍｌ  ｉフレーム要素によって定義し得る。幾つかの実施形態では、インラインフレームの内容はリモートサーバ（例えば、モジュールサーバ１２２）から受信される。幾つかの実施形態では、ウェブページ６００のｈｔｍｌは、厳密にどのローカルユーティリティ制御要素１２０をモジュール１２０に含めるべきかをモジュールサーバ１２２に対して指定するリンクを含む。幾つかの実施形態では、リンクは、モジュール１２４の他の側面も同様に指定する。モジュール１２４が、例えば、メディアプレーヤウィジェットである場合、リンクは、ウィジェットがユーザに提供すべき曲を指定することができる。
【００６２】
特に、ウェブページ作成者は、ウェブページ６００内に、ウェブページ訪問者が特定の曲、プレイリスト、アルバム、ラジオ局等を再生できるようにするように構成されたウィジェットを含めたいことがある。このように、ウェブページ６００は、カスタマイズされた独自のユーザ経験を訪問者に提供することができる。したがって、ウェブ作成者は、ウェブページに含めるためのカスタマイズモジュールを提供するモジュール作成サービスを使用し、厳密に、１つ又は複数のどの曲（又は他のメディアタイプ）をモジュール１２４に含めるべきかを指定し得る。このサービスは、作成者によって要求される特定のモジュールコンテンツに対応するカスタムリンク（例えば、ＵＲＬ）を提供し得る。このカスタムリンクをウェブページ６００内に含めることにより、モジュールに、厳密に作成者が要求したものが入れられる。そして、詳細に上述したように、訪問者が、モジュール１２０によって提供される曲の再生を要求する場合、ウェブページ６００はローカルユーティリティ１１０と通信して、曲の再生を開始する。（ローカルユーティリティ１１０がメディアプレーヤである実施形態では、メディアプレーヤは、ローカルに記憶されたファイルにアクセスして、ユーザが選択したものを再生するか、又はメディアを外部メディアプロバイダから受信し得る。幾つかの実施形態では、メディアプロバイダにはモジュール作成サービスが関連付けられる）。
【００６３】
幾つかの実施形態では、カスタムリンクは、モジュールサーバ１２２に関連付けられたドメインにアドレス指定されたＵＲＬであり、モジュールサーバ１２２によって認識される一意の文字列を含む。幾つかの実施形態では、一意の文字列は、特定のコンテンツを有するモジュール１２４のカスタムリンクを提供する要求に応答して、モジュールサーバ１２２によって提供される。例えば、ウェブページ作成者は、作成者が好きなアルバム又はプレイリストが入ったモジュールを要求し得る（モジュールサーバ１２２から）。それと引き換えに、モジュールサーバ１２２は、一意の文字列を含むカスタムリンクを作成し、それをウェブページ作成者に提供する。カスタムリンクが実行される（ウェブブラウザ１０８に、モジュールサーバ１２２への文字列を含むｈｔｔｐ要求を作成させる）と、モジュールサーバ１２２は、文字列に基づいて、要求されたモジュールコンテンツを特定し、そのコンテンツをウェブブラウザ１０８に提供する。
【００６４】
幾つかの実施形態では、モジュール１２４の内容は、ウェブページ６００によって自動的にリアルタイムで確立される。幾つかの実施形態では、ウェブページ６００は、動的に生成される情報に基づいて、カスタムリンクをモジュールサーバ１２２に要求するコード（例えば、スクリプト）を含む。例えば、ウェブページ６００は、曲のリストを表示し、ユーザがお気に入りに投票できるようにし得る。ウェブブラウザによってロードされると、ウェブページ６００は、現在の最高の評価の曲に基づいて、モジュールサーバ１２２からカスタムリンクを要求し得る。したがって、投票結果が経時変化するにつれて、又は新しい曲が投票リストに追加され、他の曲が投票リストから削除されるにつれ、モジュールのコンテンツ（ウェブページ６００がロードされる際に作成される）はそれに従って変更される。
【００６５】
ローカルユーティリティ１１０がメディアプレーヤである幾つかの実施形態では、モジュール１２４は、所定のメディア選択肢をユーザに提供せず、むしろ、メディアプレーヤの現在のステータスへのウィンドウとして動作する。例えば、ウェブページが指定する曲、アルバム、又はプレイリストを示す代わりに、モジュール１２４は、ユーザの現在選択されているプレイリストと、「現在再生中」情報とを示す。したがって、このモジュール１２４は単に、ユーザの都合を考えて、ウェブページ６００によって提供し得、したがって、メディアプレーヤを制御するために、ウェブページ６００から離れてナビゲートされる必要がない。
【００６６】
図６Ｂは、幾つかの実施形態によるウェブページ６１０及びモジュール１２４を示すブロック図である。ウェブページ６００のように、ウェブページ６１０はモジュール１２４を含み、モジュール１２４は、現在再生中ウィンドウ６０６と、プレイリスト情報６０４と、再生制御要素６０２とを含むローカルユーティリティ制御要素１２０を含む。（上述したように、ローカルユーティリティ制御要素１２０の多くの異なる組み合わせをモジュール１２４に含め得る）。ウェブページ６１０は幾つかのモジュール作成リンク６１２も含む。幾つかの実施形態では、モジュール作成リンク６１２には、モジュール作成リンク６１２が実行される際、カスタムリンクをモジュールサーバ１２２に要求するコード（例えば、スクリプト）が関連付けられる。幾つかの実施形態では、モジュール作成リンク６１２が選択される（ウェブブラウザ１０８に、モジュールサーバ１２２への文字列を含むｈｔｔｐ要求を行わせる）場合、モジュールサーバ１２２は、要求に含まれる情報に従ってモジュールを作成する。次に、ユーザに表示するために、モジュールをウェブページ６１０に含めることができる。
【００６７】
幾つかの実施形態では、モジュール作成リンク６１２には、他の人々又はエンティティによって共有される情報が関連付けられる。幾つかの実施形態では、モジュール作成リンク６１２には、ソーシャルネットワークのメンバによって提供される情報を関連付け得る。例えば、ウェブページ６１０には、ユーザが、メディア消費についての情報（メディアアクセス履歴、記憶されているプレイリスト、お気に入りの曲等を含む）等の情報を共有することができるソーシャルネットワークを関連付け得る。幾つかの実施形態では、ユーザは、情報をウェブページに掲示し、且つ／又は個人情報へのソーシャルネットワークによるアクセスを可能にする（例えば、ユーザのメディアプレーヤ又はユーザが加入しているメディアサービスから情報を検索する）ことによってそのような情報を共有する。
【００６８】
ウェブページ６１０又はそのプロバイダは、この情報を使用して、ユーザの情報に基づくモジュール作成リンク６１２を作成し、且つ／又は提供し得る。次に、モジュール作成リンク６１２を他のユーザに提示し得、それにより、他のユーザは、その情報に基づいてモジュールを作成することができる。（プライバシーを保護するために、あるユーザの情報に基づくモジュール作成リンク６１２は、ユーザがそのような共有を許可した他のユーザのみに提供し得る）。図６Ｂに示されるように、モジュール作成リンク６１２は、別のユーザのトップトラック、別のユーザのお気に入りのプレイリスト、及び／又は別のユーザが何を現在再生中であるかに基づいて、ユーザがモジュールを作成できるようにし得る。モジュール作成リンク６１２は、ユーザが、別のユーザの「好きなサウンド」であるラジオ局を開始できるようにもし得る。
【００６９】
ユーザの「トップ」又は「お気に入り」の曲又はプレイリストは、最も頻繁に再生されるか、最近再生されたか、最も高い評価等のものを含み得る。そして、図６Ｂに示されるモジュール作成リンク６１２の例では、「トラック」及び「プレイリスト」が言及されるが、これらのリンクは、曲、プレイリスト、アルバム、アーティスト、ジャンル、ラジオ曲、音楽テーマ等の任意のメディア情報又は分類に基づき得る。
【００７０】
幾つかの実施形態では、別のユーザが何を「現在再生中」であるかは、そのユーザに最近作成されたモジュールに基づく。例えば、幾つかのウェブページは、モジュールを要求し、且つ／又は表示することが可能であるが、作成された後、モジュール（又はローカルユーティリティ）のリアルタイムステータスを識別することができない。したがって、どの曲又はプレイリストが実際に、任意所与のユーザでアクティブであるかを確実に特定することは可能ではないことがあるが、ウェブページ及び／又はウェブページプロバイダは、任意所与のユーザのためにどのモジュールが最近作成されたかの記録を有し得る。
【００７１】
幾つかの実施形態では、モジュール作成リンク６１２は、音楽選択アルゴリズムを使用して、どの曲、アーティスト、ジャンル等をモジュール１２４に含めるかを判断し得る。例えば、ユーザが、特定のユーザが好きなサウンドのラジオ局を開始するように構成されるモジュール作成リンクを選択する場合、そのユーザが「好きなサウンド」が何であるか（すなわち、そのユーザのテイスト及び／又は好みに基づく音楽フィンガープリント）を判断し、次に、その記述に合う曲を選択することが必要であり得る。幾つかの実施形態では、ユーザの音楽フィンガープリントは、最も頻繁に再生されるか、最近再生されたか、又は評価が最も高い曲、アーティスト、ジャンル等に基づく。次に、音楽フィンガープリントを使用して、モジュール１２４に含める音楽（例えば、曲識別子）を提供する音楽選択アルゴリズムにシーディングする（seed a music selection algorithm）。幾つかの実施形態では、音楽選択アルゴリズムは、ウェブサーバ１０４、モジュールサーバ１２２、ウェブページ６１０のプロバイダ、又は任意の他のリモートソースによって提供される。
【００７２】
図７は、幾つかの実施形態によるローカルユーティリティを制御する方法７００を表すフローチャートである。方法７００は、少なくとも１つのプロセッサと、メモリとを有するクライアントコンピュータ（例えば、クライアントコンピュータ１０２）において実行され、メモリはプロセッサによって実行される命令を記憶する。幾つかの実施形態では、方法７００は、ローカルユーティリティ１１０、ローカルウェブサーバ１１２、及び／又はウェブブラウザ１０８のうちの任意を含むローカルコンピュータ１０２において実行される。
【００７３】
クライアントコンピュータのローカルユーティリティは、アプリケーションから発せられ、第１のトークンを含む第１の要求を受信し（７０２）、ここで、アプリケーションは、複数のリンク及び第１のトークンを含むウェブページを第１のサーバから受信してある。複数のリンクは、第２のサーバからアプリケーションによって受信されている。
【００７４】
幾つかの実施形態では、ローカルユーティリティは、クライアントコンピュータによって記憶され実行されるソフトウェアである。幾つかの実施形態では、アプリケーションは、ウェブブラウザ１０８等の、リモートサーバから受信した情報を表示し、且つ／又はレンダリングすることが可能な任意のアプリケーションである。
【００７５】
幾つかの実施形態では、ウェブページは、ハイパーテキストマークアップ言語（ｈｔｔｐ）及び／又は他のタイプ、標準、又はスタイルのプログラミング言語、スクリプト、実行可能関数等で符号化される。幾つかの実施形態では、複数のリンク及び第１のトークンは、ウェブページ内のモジュールに存在する。幾つかの実施形態では、モジュールはｉフレームである。上述したように、複数のリンクはユニフォームリソースロケータ（ＵＲＬ）であり得、ハイパーテキスト転送プロトコル又はハイパーテキスト転送プロトコルセキュアを含む任意の適切なプロトコルを指定し得る。幾つかの実施形態では、複数のリンクのうちの１つ又は複数には、ループバックネットワークアドレス（例えば、127.0.0.1、*.loopdomain.com等）に帰着するドメインが関連付けられる。
【００７６】
幾つかの実施形態では、ウェブページは、複数のリンクのうちの１つ又は複数がそれぞれ関連付けられた１つ又は複数のローカルユーティリティ制御要素を含む。ローカルユーティリティ制御要素の例については上に述べた。幾つかの実施形態では、ローカルユーティリティ制御要素は、ユーザにより選択可能であり（例えば、制御ボタン）、幾つかの実施形態では、選択可能ではなく、ステータス情報又は他の出力をユーザに提供するだけである（例えば、ステータスウィンドウ）。ローカルユーティリティがメディアプレーヤである実施形態では、ローカルユーティリティ制御要素は、メディアプレーヤ制御要素であり得、ローカルユーティリティに、メディアファイルの再生、メディアファイルの停止、メディアファイルの一時停止、メディアファイルの高速先送り、メディアファイルの巻き戻し、メディアファイルのスキップ、プレイリストの再生順序の変更、プレイリストへのメディアファイルの追加、メディアファイルの購入、ローカルライブラリへのメディアファイルの追加、及びプレイリストからのメディアファイルの削除のうちの１つ又は複数を実行させ得る。
【００７７】
幾つかの実施形態では、ローカルユーティリティは、音楽及び／又はビデオ等のメディアの記憶、再生、及び／又は編集を行うことが可能なメディアプレーヤである。幾つかの実施形態では、ローカルユーティリティはダウンロードマネージャである。幾つかの実施形態では、ローカルユーティリティは、ローカルユーティリティに結合されて通信するウェブサーバ（例えば、ローカルウェブサーバ１１２）を含む。幾つかの実施形態では、第１のトークンを含む第１の要求は、ウェブサーバで受信され、ウェブサーバは第１のトークンをローカルユーティリティに渡す。
【００７８】
図７に戻ると、方法７００は、第１のトークンを第３のサーバに送信することを含む、第１のトークンを認証すること（７０６）を更に含む。幾つかの実施形態では、第１のトークンを認証することは、第１のトークンをローカルユーティリティから第３のサーバに送信すること（７０７）と、ローカルユーティリティにおいて、第３のサーバから認証メッセージを受信すること（７０８）とを含む。幾つかの実施形態では、認証メッセージは、第１のトークンは第２のサーバによって発行されたことを示す。幾つかの実施形態では、第１のトークンは、ローカルユーティリティから第３のサーバに送信される。
【００７９】
方法７００は、第１のトークンの認証に応答して、ローカルユーティリティにおいて第２のトークンを生成すること（７１０）を更に含む。第２のトークンは、アプリケーションからの続く要求に含めるために、アプリケーションに送信される（７１２）。幾つかの実施形態では、第２のトークンは、ローカルユーティリティのローカルウェブサーバによってアプリケーションに送信される。
【００８０】
幾つかの実施形態では、方法は、第３のトークンを含む第２の要求を受信すること（７１４）を含む。幾つかの実施形態では、第２の要求は、アプリケーション（例えば、ウェブブラウザ１０８）から送信され、ローカルユーティリティ（例えば、ローカルユーティリティ１１０及び／又はローカルウェブサーバ１１２）によって受信される。幾つかの実施形態では、第２の要求は、第３のトークンと、１つ若しくは複数のローカルユーティリティ制御コマンド、１つ若しくは複数のローカルユーティリティステータス要求、又はそれらの任意の組み合わせとを含むｈｔｍｌ要求である。幾つかの実施形態では、要求は、ローカルユーティリティ及び／又はローカルウェブサーバによって認識可能な文字列であり、ローカルユーティリティ及び／又はウェブサーバに何らかの行動をとらせる。幾つかの実施形態では、ペイロードはファイル又は他のデータ構造である。
【００８１】
幾つかの実施形態では、方法は、第３のトークンが第２のトークンに一致することを検証すること（７１６）を含む。第２のトークンと第３のトークンが一致する場合、第２の要求の内容に基づく１つ又は複数の行動がとられる（７１８）。第２のトークンと第３のトークンとが一致しない場合、第２の要求の内容に基づく行動はとられない（７２０）。第３のトークンが第２のトークンに一致する（すなわち、同じトークンである）ことを検証することにより、ローカルユーティリティは、第２の要求が、第１のトークンを使用して前に認証された（図５を参照して上述したように）モジュールと同じモジュールによって発行されたことを検証する。
【００８２】
方法７００は、第１の要求及び第２の要求を受信することを含み得る。幾つかの実施形態では、第１の要求又は第２の要求のうちの少なくとも一方は、アプリケーションでの複数のリンクのうちの１つの実行に応答して、アプリケーションからローカルユーティリティに送信される。例えば、アプリケーションは、リンクに関連付けられた制御要素のユーザ選択に応答して、又はアプリケーション（例えば、ウェブブラウザ）が、ウェブページの処理、表示、若しくはレンダリングに併せてリンクを実行することに応答して、第１及び第２の要求のうちのいずれか又は両方を送信し得る。
【００８３】
実行されるリンクがユーザ選択可能な実施形態では、アプリケーションは、リンクを実行する前にリンクのユーザ選択を受信し、ユーザ選択に応答して、少なくとも１つの第１の要求又は第２の要求をアプリケーションからローカルユーティリティに送信し得る。幾つかの実施形態では、ユーザは、上述したように、ローカルユーティリティ制御要素のうちの１つを選択することによってリンクを選択する。実行されるリンクがユーザ選択可能ではない実施形態では、クライアントコンピュータは、ウェブページを処理し、ウェブページの処理に応答して、少なくとも１つの第１の要求又は第２の要求をアプリケーションからローカルユーティリティに送信し得る。
【００８４】
図８は、幾つかの実施によるクライアントコンピュータ１０２を示すブロック図である。クライアントコンピュータ１０２は通常、プログラム（例えば、メモリ８１０に記憶されたプログラム）を実行する１つ又は複数の処理ユニット（プロセッサと呼ばれることもあるＣＰＵ）８０２と、１つ又は複数のネットワーク又は他の通信インタフェース８０４と、ユーザインタフェース８０５と、メモリ８１０と、これらの構成要素を相互接続する１つ又は複数の通信バス８０１とを含む。通信バス８０１は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路（チップセットと呼ばれることもある）を含み得る。幾つかの実施形態では、ユーザインタフェース８０５は、ディスプレイ８０６と、入力装置８０７（例えば、キーボード、マウス、タッチスクリーン、キーパッド等）とを備える。
【００８５】
メモリ８１０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、又は他のランダムアクセス個体状態メモリ装置等の高速ランダムアクセスメモリを含み、通常、１つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、又は他の不揮発性個体状態記憶装置等の不揮発性メモリを含む。メモリ８１０は任意選択的に、ＣＰＵ８０２から離れて配置される１つ又は複数の記憶装置を含む。メモリ８１０又は代替的にメモリ８１０内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を備える。幾つかの実施では、メモリ８１０又はメモリ８１０のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する：
・様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するプロシージャを含むオペレーティングシステム８１２、
・インターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワーク等の１つ又は複数の通信インタフェース８０４（有線又は無線）及び１つ又は複数の通信ネットワーク１０６を介して、クライアントコンピュータ１０２を他のコンピュータ（例えば、ウェブサーバ１０４、モジュールサーバ１２２、トークンサーバ５０２、及び／又はＤＮＳサーバ１１４）に接続するために使用される通信モジュール８１４、
・入力装置８０７を介してユーザからコマンドを受信し、ディスプレイ装置８０６においてユーザインタフェースオブジェクトを生成するユーザインタフェースモジュール８１６、
・情報リソースを受信して表示し、ウェブサーバ（例えば、ウェブサーバ１０４、モジュールサーバ１２２、ＤＮＳサーバ１１４、及び／又はローカルウェブサーバ１１２）と通信するように構成されるウェブブラウザ１０８、
・１つ又は複数のコンピュータベースの機能をユーザに提供するローカルユーティリティ１１０、及び
・ローカルユーティリティ１１０及び／又はウェブブラウザ１０８等の他のソースと通信するローカルウェブサーバ１１２。
【００８６】
幾つかの実施形態では、ウェブブラウザ１０８は、情報リソースの受信及び／又は表示を行うことが可能な任意のプログラム、ソフトウェア、又はアプリケーションである。幾つかの実施形態では、情報リソースはウェブページである。幾つかの実施形態では、ウェブページは、ハイパーテキストマークアップ言語で書かれるか、又はハイパーテキストマークアップ言語を含むが、同様に、追加の言語及び／又は異なる言語を含んでもよく、又は追加の言語及び／又は異なる言語で書かれてもよい。
【００８７】
幾つかの実施形態では、ローカルユーティリティ１１０は、１つ又は複数のコンピュータベースの機能をユーザに提供する任意のプログラム、ソフトウェア、又はアプリケーションである。幾つかの実施形態では、ローカルユーティリティはメディアプレーヤである。幾つかの実施形態では、ローカルユーティリティはダウンロードマネージャである。幾つかの実施形態では、ローカルユーティリティはカメラ又はプリンタ制御ソフトウェアである。ローカルユーティリティはメディアエディタである。ローカルユーティリティ１１０は、ローカルウェブサーバ１１２並びに特にウェブサーバ１０４、モジュールサーバ１２２、トークンサーバ５０２、及び認証モジュール５０４等の他のコンピュータ、サーバ、及びシステムと通信し得る。
【００８８】
幾つかの実施形態では、ローカルウェブサーバ１１２は、情報をウェブブラウザ１０８から受信し、その情報をローカルユーティリティ１１０に渡す。ウェブブラウザ１０８から受信される情報については上述してある。幾つかの実施形態では、情報は１つ又は複数のｈｔｔｐ要求である。
【００８９】
幾つかの実施態様では、上で識別されたプログラム又はモジュールは、図１〜図６を参照して上述したものを含め、上述した機能又は方法を実行する命令セットに対応する。命令セットは、１つ又は複数のプロセッサ（例えば、ＣＰＵ８０２）によって実行することができる。上で識別されたモジュール又はプログラム（すなわち、命令セット）は、別個のソフトウェアプログラム、プロシージャ、又はモジュールとして実施される必要はなく、したがって、様々な実施態様において、これらのプログラム又はモジュールの様々なサブセットを組み合わせるか、又は他の様式で再構成し得る。幾つかの実施態様では、メモリ８１０は、上で識別されたモジュール及びデータ構造のサブセットを記憶する。さらに、メモリ８１０は、上述されていない追加のモジュール及びデータ構造を記憶し得る。
【００９０】
図９は、幾つかの実施形態によるモジュールサーバ１２２を示すブロック図である。モジュールサーバ１２２は通常、プログラム（例えば、メモリ９１０に記憶されたプログラム）を実行する１つ又は複数の処理ユニット（プロセッサと呼ばれることもあるＣＰＵ）９０２と、１つ又は複数のネットワーク又は他の通信インタフェース９０４と、任意選択的なユーザインタフェース９０５と、メモリ９１０と、これらの構成要素を相互接続する１つ又は複数の通信バス９０１とを含む。通信バス９０１は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路（チップセットと呼ばれることもある）を含み得る。幾つかの実施形態では、ユーザインタフェース９０５は、ディスプレイ９０６と、入力装置９０７（例えば、キーボード、マウス、タッチスクリーン、キーパッド等）とを備える。
【００９１】
メモリ９１０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、又は他のランダムアクセス個体状態メモリ装置等の高速ランダムアクセスメモリを含み、通常、１つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、又は他の不揮発性個体状態記憶装置等の不揮発性メモリを含む。メモリ９１０は任意選択的に、ＣＰＵ９０２から離れて配置される１つ又は複数の記憶装置を含む。メモリ９１０又は代替的にメモリ９１０内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を備える。幾つかの実施態様では、メモリ９１０又はメモリ９１０のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する：
・様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するプロシージャを含むオペレーティングシステム９１２、
・インターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワーク等の１つ又は複数の通信インタフェース９０４（有線又は無線）及び１つ又は複数の通信ネットワーク１０６を介して、モジュールサーバ１２２を他のコンピュータ（例えば、クライアントコンピュータ１０２、ウェブサーバ１０４、トークンサーバ５０２、及び／又はＤＮＳサーバ１１４）に接続するために使用される通信モジュール９１４、
・入力装置９０７を介してユーザからコマンドを受信し、ディスプレイ装置９０６においてユーザインタフェースオブジェクトを生成する、任意選択的なユーザインタフェースモジュール９１６、及び
・ウェブページに含めるモジュールを生成するモジュール作成モジュール９１８。
【００９２】
幾つかの実施形態では、モジュール作成モジュール９１８は、別個のコンピュータに提供すべきモジュールの内容についての仕様を受信する。例えば、モジュール作成モジュール９１８は、ウェブページ作成者又はウェブページそれ自体からモジュール仕様を受信し得る（上述したように）。幾つかの実施形態では、モジュールはメディアプレーヤウィジェットであり、仕様は、曲識別子、プレイリスト識別子、アルバム識別子、ラジオ局識別子、ディスプレイパラメータ、及び／又は任意の他の情報を含む。
【００９３】
幾つかの実施形態では、モジュール作成モジュール９１８は、仕様に従ってモジュールを作成し、モジュールをモジュール識別子に関連付けて記憶する。モジュールが要求される（例えば、モジュール識別子を含むｈｔｔｐ要求により）場合、モジュールサーバ１２２は、記憶されているモジュールを要求側装置（例えば、クライアントコンピュータ１０２）に送信し得る。
【００９４】
他の実施形態では、モジュール作成モジュール９１８は、モジュール仕様受信時にモジュールを作成して記憶せず、むしろ、モジュール識別子を仕様に割り当てる。モジュールが要求される（例えば、モジュール識別子を含むｈｔｔｐ要求により）場合、モジュール作成モジュール９１８は、モジュールをリアルタイムで作成し、モジュールを要求側装置（例えば、クライアントコンピュータ１０２）に送信する。
【００９５】
幾つかの実施態様では、上で識別されたプログラム又はモジュールは、図１〜図６を参照して上述したものを含め、上述した機能又は方法を実行する命令セットに対応する。命令セットは、１つ又は複数のプロセッサ（例えば、ＣＰＵ９０２）によって実行することができる。上で識別されたモジュール又はプログラム（すなわち、命令セット）は、別個のソフトウェアプログラム、プロシージャ、又はモジュールとして実施される必要はなく、したがって、様々な実施態様において、これらのプログラム又はモジュールの様々なサブセットを組み合わせるか、又は他の様式で再構成し得る。幾つかの実施態様では、メモリ９１０は、上で識別されたモジュール及びデータ構造のサブセットを記憶する。さらに、メモリ９１０は、上述されていない追加のモジュール及びデータ構造を記憶し得る。
【００９６】
図１０は、幾つかの実施形態による認証サーバ５０４を示すブロック図である。認証サーバ５０４は通常、プログラム（例えば、メモリ１０１０に記憶されたプログラム）を実行する１つ又は複数の処理ユニット（プロセッサと呼ばれることもあるＣＰＵ）１００２と、１つ又は複数のネットワーク又は他の通信インタフェース１００４と、任意選択的なユーザインタフェース１００５と、メモリ１０１０と、これらの構成要素を相互接続する１つ又は複数の通信バス１００１とを含む。通信バス１００１は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路（チップセットと呼ばれることもある）を含み得る。幾つかの実施形態では、ユーザインタフェース１００５は、ディスプレイ１００６と、入力装置１００７（例えば、キーボード、マウス、タッチスクリーン、キーパッド等）とを備える。
【００９７】
メモリ１０１０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、又は他のランダムアクセス個体状態メモリ装置等の高速ランダムアクセスメモリを含み、通常、１つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、又は他の不揮発性個体状態記憶装置等の不揮発性メモリを含む。メモリ１０１０は任意選択的に、ＣＰＵ１００２から離れて配置される１つ又は複数の記憶装置を含む。メモリ１０１０又は代替的にメモリ１０１０内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を備える。幾つかの実施態様では、メモリ１０１０又はメモリ１０１０のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する：
・様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するプロシージャを含むオペレーティングシステム１０１２、
・インターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワーク等の１つ又は複数の通信インタフェース１００４（有線又は無線）及び１つ又は複数の通信ネットワーク１０６を介して、認証サーバ５０４を他のコンピュータ（例えば、クライアントコンピュータ１０２、ウェブサーバ１０４、トークンサーバ５０２、及び／又はＤＮＳサーバ１１４）に接続するために使用される通信モジュール１０１４、
・入力装置１００７を介してユーザからコマンドを受信し、ディスプレイ装置１００６においてユーザインタフェースオブジェクトを生成する、任意選択的なユーザインタフェースモジュール１０１６、及び
・通信及び／又はトークンを認証する認証モジュール１０１８。
【００９８】
幾つかの実施形態では、認証モジュール１０１８は、通信に含まれる情報に基づいて、情報を信頼すべきか否かを確認するように構成される。幾つかの実施形態では、認証モジュール１０１８は、通信を認証する要求を受信し、要求はトークンを含む。幾つかの実施形態では、認証モジュール１０１８は、トークンが真正であるか否か（例えば、１つ又は複数の通信を認証するために、トークンが前に発行されたか否か）を判断し、トークンが真正であるか否かを示すリターンメッセージを要求側装置に送信する。認証サーバ５０４によって提供し得る機能のうちのいくつかは、図５を参照してより詳細に上述している。
【００９９】
幾つかの実施態様では、上で識別されたプログラム又はモジュールは、図１〜図６を参照して上述したものを含め、上述した機能又は方法を実行する命令セットに対応する。命令セットは、１つ又は複数のプロセッサ（例えば、ＣＰＵ１００２）によって実行することができる。上で識別されたモジュール又はプログラム（すなわち、命令セット）は、別個のソフトウェアプログラム、プロシージャ、又はモジュールとして実施される必要はなく、したがって、様々な実施態様において、これらのプログラム又はモジュールの様々なサブセットを組み合わせるか、又は他の様式で再構成し得る。幾つかの実施態様では、メモリ１０１０は、上で識別されたモジュール及びデータ構造のサブセットを記憶する。さらに、メモリ１０１０は、上述されていない追加のモジュール及びデータ構造を記憶し得る。
【０１００】
図８〜図１０はクライアントコンピュータ及びサーバコンピュータを示すが、これらの図は、本明細書に記載される実施態様の構造的概略としてよりも、これらのコンピュータに存在し得る様々な特徴の機能的説明として意図される。実際に、当業者によって認識されるように、別個に示されるアイテムを結合することができ、幾つかのアイテムを分離することができる。例えば、図８〜図１０で別個に示される幾つかのアイテムは、単一のモジュール又はデータ構造で実施することもできる。
【０１０１】
複数の事例を、本明細書において単一の事例として記載される構成要素、動作、又は構造体に提供し得る。最後に、様々な構成要素、動作、及びデータ記憶装置間の境界はいくらか任意的なものであり、特定の動作は、特定の例示的な構成の状況において示される。機能の他の割り振りも考えられ、実施態様の範囲内に含まれ得る。一般に、構成例において別個の構成要素として提示される構造体及び機能は、結合された構造体又は構成要素として実施することもできる。同様に、単一の構成要素として提示される構造体及び機能は、別個の構成要素として実施することもできる。これら及び他の変形、変更、追加、及び改善は、記載される実施態様の範囲内にある。
【０１０２】
上記説明は、説明を目的として、特定の実施形態を参照して説明された。しかし、上記の例示的な考察は、網羅的である、すなわち、開示される概念を、開示される厳密な形態に限定する意図はない。上記教示に鑑みて、多くの変更及び変形が可能である。実施形態は、開示される概念の原理及び実際の適用を最良に説明し、それにより、当業者が、意図される特定の用途に合うように様々な変更を行って様々な実施形態で最良に利用できるようにするために、選ばれ説明された。
【０１０３】
さらに、上記説明では、提示される概念の完全な理解を提供するために、多くの特定の詳細な記載されている。しかし、これらの特定の詳細なしでもこれらの概念を実施し得ることが当業者には理解されるだろう。他の例では、当業者に周知の方法、手順、構成要素、及びネットワークについては、本明細書に手時される概念の側面を曖昧にしないように、詳述していない。
【０１０４】
「第１」、「第２」等の用語を、様々な要素を説明するために本明細書において使用し得るが、これらの要素をこれらの用語によって限定すべきではないことも理解されるだろう。これらの用語は、ある要素を別の要素から区別するためだけに使用される。例えば、「第１のサーバ」の全ての発生が一貫して名称変更され、「第２のサーバ」の全ての発生が一貫して名称変更される限り、説明の意味を変更せずに、第１のサーバを第２のサーバと呼ぶこともでき、同様に、第２のサーバを第１のサーバと呼ぶこともできる。
【０１０５】
さらに、本明細書において使用される用語は、特定の実施形態を説明することのみを目的とし、特許請求の範囲を限定する意図はない。実施態様の説明及び添付の特許請求の範囲で使用される場合、単数形「a」、「an」、及び「the」は、文脈により明確に別段のことが示される場合を除き、複数形も同様に包含することが意図される。本明細書において使用される「及び／又は」という用語が、関連付けられ、列挙された項目のうちの１つ又は複数の可能なありとあらゆる組み合わせを指し、包含することも理解されるだろう。「備える」及び／又は「備えている」という用語が、本明細書において使用される場合、述べられた特徴、整数、ステップ、動作、要素、及び／又は構成要素の存在を指定するが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、構成要素、及び／又はそのグループの存在又は追加を除外しないことが更に理解されるだろう。
【０１０６】
最後に、本明細書において使用される場合、「場合」という用語は、文脈に応じて、述べられる前提条件が真である「とき」、述べられる前提条件が真である「と」、述べられる前提条件が真である「との判断に応答して」、述べられる前提条件が真である「との判断に従い」、又は述べられる前提条件が真である「ことの検出に応答して」を意味するものとして解釈し得る。同様に、「（述べられる前提条件が真であると）判断される場合」、「（述べられる前提条件が真である）場合」、又は「（述べられる前提条件が真である）とき」は、文脈に応じて、述べられる前提条件が真である「と判断されると」、述べられる前提条件が真である「との判断に応答して」、述べられる前提条件が真である「との判断に従い」、述べられる前提条件が真である「ことが検出されると」、又は述べられる前提条件が真である「ことの検出に応答して」を意味するものとして解釈し得る。
【図１】
0006367883.tif 000002
【図２】
0006367883.tif 000003
【図３】
0006367883.tif 000004
【図４】
0006367883.tif 000005
【図５】
0006367883.tif 000006
【図６Ａ】
0006367883.tif 000007
【図６Ｂ】
0006367883.tif 000008
【図７】
0006367883.tif 000009
【図８】
0006367883.tif 000010
【図９】
0006367883.tif 000011
【図１０】
0006367883.tif 000012