(58)【調査した分野】(Int.Cl.,DB名)
前記コンピュータに、さらに、モバイルデバイスに関連する前記ウェブブラウザに前記セッションを作成させる、請求項1または請求項2に記載のコンピュータプログラム。
前記コンピュータに、さらに、前記終了したセッションを取得するための前記要求を送信することに応答して前記ユーザ認証情報が送信されることを防止させ、前記ユーザ認証情報は、ユーザのユーザ名およびパスワードのうちの少なくとも一方を含む、請求項1から請求項4のいずれか1項に記載のコンピュータプログラム。
前記コンピュータに、さらに、前記セッションをアライブに保つための要求を前記ウェブドメインへ送信させ、前記要求は非セッション変更要求である、請求項1から請求項5のいずれか1項に記載のコンピュータプログラム。
前記終了したセッションを取得することに関するセッション情報を受信させることは、前記コンピュータに、さらに、前記ウェブドメインに関連する前記ウェブページに対して以前のセッションが存在するかどうかを判断させることを含む、請求項1から請求項6のいずれか1項に記載のコンピュータプログラム。
前記コンピュータに、さらに、第1デバイスにおける前記セッションを終了させ、第2デバイスにおいて前記終了したセッションを取得させ、前記第1デバイスおよび前記第2デバイスは一のユーザに関連する、請求項1から請求項5のいずれか1項に記載のコンピュータプログラム。
前記終了したセッションを取得するための前記要求を送信することに応答して前記ユーザ認証情報が送信されることを防止する段階をさらに有し、前記ユーザ認証情報は、ユーザのユーザ名およびパスワードのうちの少なくとも一方を含む、請求項9から請求項12のいずれか1項に記載の方法。
前記セッションをアライブに保つための要求を前記ウェブドメインに送信する段階、または、前記セッション情報を直接に変更する段階をさらに有し、前記要求は非セッション変更要求である、請求項9から請求項13のいずれか1項に記載の方法。
第1デバイスにおける前記セッションを終了する段階、および、第2デバイスにおいて前記終了したセッションを取得する段階をさらに有し、前記第1デバイスおよび前記第2デバイスは一のユーザに関連する、請求項9から請求項13のいずれか1項に記載の方法。
前記複数の命令は、実行された場合に、前記1または複数のプロセッサに、モバイルデバイスに関連する前記ウェブブラウザに前記セッションを作成させる複数の命令をさらに含む、請求項17または請求項18に記載のコンピュータシステム。
前記複数の命令は、実行された場合に、前記1または複数のプロセッサに、前記終了したセッションを取得するための前記要求を送信することに応答して前記ユーザ認証情報が送信されることを防止させる複数の命令をさらに含み、前記ユーザ認証情報は、ユーザのユーザ名およびパスワードのうちの少なくとも一方を含む、請求項17から請求項20のいずれか1項に記載のコンピュータシステム。
前記複数の命令は、実行された場合に、前記1または複数のプロセッサに、前記セッションをアライブに保つための要求を前記ウェブドメインへ送信させる複数の命令をさらに含み、前記要求は非セッション変更要求である、請求項17から請求項21のいずれか1項に記載のコンピュータシステム。
【発明を実施するための形態】
【0027】
以下の説明において、説明を目的として、本発明の完全な理解を提供すべく多数の具体的な詳細が説明される。しかしながら、これらの具体的な詳細が無くとも本発明が実施され得ることは、当業者には明らかだろう。その他複数の場合においては、本発明を不明瞭にすることを回避すべく、構造および複数のデバイスがブロック図の形で示されている。下付き文字または添え字の無い数字に対する参照は、参照されたその数字に対応する下付き文字および添え字の全ての場合を参照するものと理解される。さらに、本開示において使用される言語は、主として読みやすさおよび教示的な目的で選択されており、本発明の主題を記述または制限すべく選択されたものではあり得ず、そのような本発明の主題を判断するためには、複数の請求項を用いることが必要である。本明細書における"一実施形態"または"ある実施形態"という参照は、複数の実施形態と関連して説明される特定の機能、構造、または特性が、本発明の少なくとも1つの実施形態に含まれることを意味し、"一実施形態"または"ある実施形態"に対する複数の参照は、必ずしも全てが同じ実施形態を参照するものとは理解されるべきでない。
【0028】
少なくとも1つの実施形態において、本発明は、ユーザのログイン認証情報にアクセスすること無く、あるデバイスにおける複数のユーザセッションを、意識されること無く管理、一時中断、回復、共有、限定、および移行するための複数の方法およびプロセスを提供することができる。ユーザが、複数のセッションを共有し、複数の承認されたユーザに対して読み出し専用のアクセスを提供してよい。その他複数の実施形態が、アクティブなセッションの存続期間を伸ばすことを含むことができる。
【0029】
本明細書にて使用されるように、"コンピュータシステム"という用語は、コンピュータシステムにおいて、またはコンピュータシステムによって実行されるように説明される機能を実行するための、単一のコンピュータまたは一緒に動作する複数のコンピュータを指すことができる。
【0030】
本明細書にて使用されるように、"プログラマブルデバイス"という用語は、プログラマブルデバイスにおいて、またはプログラマブルデバイスによって実行されるように説明される機能を実行するための、単一のプログラマブルデバイスまたは一緒に動作する複数のプログラマブルデバイスを指すことができる。同様に、"機械可読媒体"とは、機械可読媒体に格納されるように説明される題材を格納し得る、単一の物理的な媒体または一緒になった複数の媒体を指すことができる。
【0031】
本明細書にて使用されるように、"セッション"という用語は、ユーザのブラウザと、リモートサーバにおいて動作している特定のウェブサービスとの間で共有され得るデータを指すことができ、いくつかの実施形態においては、どの要求にてもパススルーされる。複数のセッションは、当業者によって容易に理解されるであろういくつもの構成の中でも、そのブラウザにおけるクッキーまたは利用可能な任意の他のローカルストレージとして格納されてよい。
【0032】
本明細書にて使用されるように、"認証情報"という用語は、ウェブ上の特定のサービスでの認証に使用される、あるユーザに対して固有であり得るデータを指すことができる。これらは、限定されるものではないが、ユーザ名およびパスワードを含むことができる。
【0033】
本明細書にて使用されるように、"セッションマネージャ"という用語は、ユーザがセッションデータをセッションサーバと同期させること、および、複数のセッションを中断および回復させるべくユーザのブラウザと通信することを可能にし得る、ユーザのデバイスにおいて動作しているサービスを指すことができる。
【0034】
本明細書にて使用されるように、"仮想プライベートネットワーク"(VPN)という用語は、インターネットのようなパブリックネットワークにわたってプライベートネットワークを拡張することを指すことができる。これは、当業者によって容易に理解されるであろういくつものプライベートネットワーク機能の中でも、プライベートネットワークの機能性、セキュリティ、および管理方針からの恩恵を受けながら、あたかもプライベートネットワークに直接に接続されているかのように、複数の共有ネットワークまたはパブリックネットワークにわたって、コンピュータがデータを送信および受信することを可能にできる。VPNは、当業者によって容易に理解されるであろういくつもの構成の中でも、例えば、複数の専用接続、複数の仮想的なトンネリングプロトコル、またはトラフィック暗号化の使用によって、仮想的なポイントツーポイント接続を確立することによって形成され得る。
【0035】
本明細書にて使用されるように、"VPNクライアント"という用語は、ユーザがVPNにアクセスすることを許可し得る、ユーザのデバイスにおいて動作しているサービスを指すことができる。
【0036】
本明細書にて使用されるように、"マスターパスワード(MP)"という用語は、例えば、セッションマネージャ、VPNクライアント、およびVPNによる認証に使用され得る、ユーザにより供給されたパスワードを指すことができる。これは、ユーザ名および派生メカニズムと組み合わされて、認証情報を生じさせる。
【0037】
本明細書にて使用されるように、"承認トークン"という用語は、ユーザの真正性を有効にするため、およびユーザのデータを復号化するために使用され得る、マスターパスワードの派生バージョンを指すことができる。承認トークンは、ユーザのデバイスからセッションサーバへと送信されることができ、その特定のユーザについて、セッションサーバに格納された真正性トークンのバージョンと比較されることができる。
【0038】
本明細書にて使用されるように、"暗号鍵"という用語は、1つが秘密(またはプライベート)であることができ、1つが公開されたものであることのできる、2つの別個な鍵(公開/秘密鍵のペア)を必要とし得る暗号化アルゴリズムを指すことができる。この鍵のペアの2つの部分は、異なるものではあるが、数学的にはリンクされている。
【0039】
本明細書にて使用されるように、"公開鍵"という用語は、平文を暗号化すべく、またはデジタル署名を検証すべく使用され得る鍵を指すことができる。
【0040】
本明細書にて使用されるように、"秘密鍵"という用語は、暗号化テキストを復号化すべく、またはデジタル署名を作成すべく使用され得る鍵を指すことができる。
【0041】
本明細書にて使用されるように、"セッションサーバ"という用語は、複数のデバイスおよび複数のユーザにわたってセッションデータを同期させるための集中ストレージを指すことができる。少なくとも1つの実施形態において、これは、複数のユーザの暗号化されたセッションデータへのアクセスを提供することができる。
【0042】
本明細書にて使用されるように、"セッションサーバアプリケーションプログラミングインタフェース(API)"という用語は、セッションマネージャおよびVPNクライアントが複数のユーザを認証し、暗号化されたセッションデータをリモートに同期させるためのプログラマチックインタフェースを指すことができる。これはまた、セッションマネージャおよびVPNクライアントが、セッションデータを共有するための複数のユーザの公開鍵を取得する方法を提供する。
【0043】
本明細書にて使用されるように、"メンバファイル"という用語は、特定のユーザに関連すると共に、セッションサーバに格納され得るデータを指すことができる。これは、(限定されるものではないが)ユーザ名、認証トークン、暗号化された秘密鍵および公開鍵を含むことができる。
【0044】
本明細書にて使用されるように、"認証情報"という用語は、少なくとも1つの実施形態において、セッションマネージャ、VPNクライアント、およびVPNによりユーザを認証するために使用される、ユーザ名とマスターパスワードの派生バージョンとの組み合わせを指すことができる。
【0045】
本明細書にて使用されるように、"セッションデータ"という用語は、複数のユーザの複数のセッションに関するデータの集合を指すことができる。ユーザのデバイスに位置される、およびVPNに位置される場合、これらは、暗号化されていない平文形式であり得る。セッションサーバに同期される場合、これらは、暗号化されたフォーマットであり得る。
【0046】
本明細書にて使用されるように、"暗号化されたユーザデータ"という用語は、承認トークンによって暗号化され得る、ユーザのセッションデータを指すことができる。
【0047】
本明細書にて使用されるように、"暗号化された秘密鍵"という用語は、ユーザによって共有される複数のセッションを復号化すべく使用され得る、このユーザの暗号化された秘密鍵を指すことができる。これは、暗号化された状態でセッションサーバに格納されることができ、承認トークンを使用して、ユーザのデバイスにおいて復号化され得る。
【0048】
本明細書にて使用されるように、"クッキー"という用語は、ユーザがウェブサイトを閲覧している間に、このウェブサイトから送信され、このユーザのウェブブラウザに格納され得る、小さなデータ片を指すことができる。クッキーはまた、ハイパーテキスト転送プロトコル(HTTP)クッキー、ウェブクッキー、またはブラウザクッキーとしても知られている。いくつかの実施形態においては、ユーザがこのウェブサイトを読み込んだ場合に、このブラウザがサーバへとクッキーを返信して、このユーザの以前のアクティビティをこのウェブサイトに通知する。
【0049】
本明細書にて使用されるように、"ブラウザストレージ"という用語は、ウェブブラウザにデータを格納するために使用される複数のウェブアプリケーションソフトウェア方法およびプロトコルである、ウェブストレージおよび/またはDOM(ドキュメントオブジェクトモデル)ストレージを指すことができる。ウェブストレージは、クッキーと同様に、永続的なデータストレージをサポートするものの、大幅に強化された容量を有し、HTTP要求ヘッダに情報が格納されない。ローカルストレージおよびセッションストレージという、2つの主なウェブストレージタイプが存在し、それぞれ、永続的なクッキーおよびセッションクッキーと同様に振る舞う。
【0050】
本明細書にて使用されるように、"セッション共有"という用語は、1つまたは複数のセッションを、受信するユーザの公開鍵によってそれらを暗号化することにより、複数のユーザが他の複数のユーザと共有できると考えられていることを指し得る。複数の共有セッションが、セッションサーバを通じて同期され得る。
【0051】
本明細書にて使用されるように、"共有制限"という用語は、第1ユーザが第2ユーザと共有するセッションに対して、複数のユーザが複数の制限を適用してよいと考えられていることを指し得る。これらの制限は、セッションごとに適用されることができ、共有セッションの状態を受信者が変更する能力を制限することができる。
【0052】
本明細書にて使用されるように、"共有セッションデータ"という用語は、別のユーザから受信され得るセッションデータを指すことができる。これは、2つの状態、ロックされたまたはアンロックされた状態であることができる(以下を参照のこと)。
【0053】
本明細書にて使用されるように、"ロックされた共有セッションデータ"という用語は、少なくとも1つの実施形態において、受信者によって見られない、または変更され得ない共有セッションデータを指すことができる。少なくとも1つの実施形態において、受信者は、このデータを使用すべく、VPNを使用することができる。
【0054】
本明細書にて使用されるように、"アンロックされた共有セッションデータ"という用語は、少なくとも1つの実施形態において、動機付けられた受信者によって見られる、または変更され得る共有セッションデータを指すことができる。少なくとも1つの実施形態において、受信者は、このデータを使用すべく、セッションマネージャまたはVPNのいずれかを使用してよい。
【0055】
本明細書にて使用されるように、"入力フィルタ"という用語は、複数の共有セッションにおける複数の特定のタイプのHTTP要求を制限すべく、入ってくる要求に対してVPNによって適用され得る複数のフィルタを指すことができる。例えば、共有セッションは、このセッションから受信者がログアウトすることを許可しないように制限されてよい。この場合、ログアウトするためのPOSTがフィルタリングされ、許可され得ない。
【0056】
本明細書にて使用されるように、"出力フィルタ"という用語は、特定のハイパーテキストマークアップ言語("HTML")コンテンツがユーザに対して表示されることを制限すべく、複数の共有セッションにおける複数のHTTP応答に対して、VPNおよびセッションマネージャによって適用され得る複数のフィルタを指すことができる。例えば、出力フィルタが、返されるHTMLコンテンツから"ログアウト"ボタンを取り除くこと、または、共有セッションの受信者がセッション状態を変更することを許可するであろうリンクを隠すことができるだろう。
【0057】
本明細書にて使用されるように、"制限無く"という用語は、あるセッションが制限無く共有されており、複数の入ってくる要求および複数の出て行く応答に対して入力フィルタまたは出力フィルタが適用されない場合を指すことができる。
【0058】
本明細書にて使用されるように、"セキュアソケットレイヤ(SSL)"という用語は、SSLハンドシェイクと呼ばれる複数のメッセージの交換から始まることのできるセキュアソケットレイヤ("SSL")セッションを指すことができる。このハンドシェイクは、サーバが、複数の公開鍵技術を使用してクライアントに対してサーバ自身を認証することを許可し、その後、続くセッションの間、迅速な暗号化、復号化、および不正な改ざんの検出用に使用される対称鍵の作成において、クライアントとサーバが連携することを許可する。任意に、このハンドシェイクはまた、クライアントが、サーバに対してクライアント自身を認証することを許可する。
【0059】
本明細書にて使用されるように、"ドキュメントオブジェクトモデル(DOM)"という用語は、HTML、拡張可能ハイパーテキストマークアップ言語("XHTML")、および拡張可能マークアップ言語("XML")ドキュメントにおける複数のオブジェクトを表すため、およびこれらと相互作用するための、クロスプラットフォームおよび言語に依存しない規定を指すことができる。DOMツリーにおける複数のオブジェクトは、複数のオブジェクトに対する複数の方法を使用することによって、対処および操作されてよい。
【0060】
本明細書にて説明される全ての暗号化および復号化は、当業者によって容易に理解されるように、任意の既知の手段によって実現され得る。
【0061】
ユーザ認証情報にアクセスすること無く、あるデバイスにおける複数のユーザセッションを、意識されること無く管理、一時中断、回復、共有、限定、および移行することを可能にする技術である。ユーザは、即座に、自身のオンラインアカウントのそれぞれまたは全てに自動的にログインおよびログアウトし得る。また、そのようにすることにおいて、ユーザは、複数のクライアントデバイスにわたって、並びに認証および承認された他の複数のユーザと、複数のパスワードを共有することなく複数のセッションを共有し得る。共有は、開始ユーザが、共有セッションの権限を制限できるように、並びに、複数の共有セッションのそれぞれに対するアクセスを取り除くことができるように、セキュアな態様で行われ得る。複数の技術的な効果として、ユーザの認証情報にアクセスすること無く、あるウェブサイトへのユーザのログインをセーブする、回復する、または拡張された期間にわたってキープアライブにし得るシステムを含む。
【0062】
ここで
図1を参照すると、本発明の一実施形態がプロセス100に図示されている。ここでは、例えば、
図11のモバイルデバイス1114のようなユーザデバイスにアプリケーションが格納されてよく、ユーザが登録されてよい。一実施形態に従うと、102においてユーザは、スタンドアロンのアプリケーションとして、または、(当業者によって容易に考慮されるであろういくつもの構成の中でも)少なくとも1つの他のサードパーティアプリケーションとバンドルされた状態で、ユーザクライアントデバイス1114(
図11)にセッションマネージャをインストールしてよい。代替的に、複数の他の実施形態においてユーザは、仮想プライベートネットワーク("VPN")クライアント(またはセッションマネージャVPNクライアント)をクライアントデバイス1114(
図11)にインストールしてよい。
【0063】
その後104において、クライアントデバイス1114(
図11)のユーザが、当業者によって容易に理解されるであろういくつものログイン情報の中でも、例えば、ユーザ名およびマスターパスワード("MP")を与えるように促されてよい。
【0064】
その後106において、ユーザから受信されたこのログイン情報に基づいて、承認トークンが生成されてよい。
【0065】
一実施形態においては、108において、公開および秘密暗号鍵が生成されてよい。
【0066】
110において、生成されたこの秘密鍵が暗号化され得る。
【0067】
112において、クライアントデバイス1114(
図11)のユーザは、例えば、ネットワーク1102(
図11)のようなネットワークを介し、セッションサーバのアプリケーションプログラミングインタフェース(API)を通じて承認トークンおよび公開鍵をリモートセッションサーバ(例えば、サーバ1104(
図11))へ送信することにより、このセッションサーバに登録されてよい。セッションサーバがログイン情報を受信すると、ユーザは登録されることができる。
【0068】
一実施形態においては、114において、セッションサーバが、例えばスクリプトのような、パスワードベースの鍵派生関数を使用して承認トークンをアルゴリズムで保護してよい。さらに、一実施形態においてセッションサーバは、クライアントデバイス1114(
図11)から受信された、保護されていない承認トークンのあらゆるコピーを削除してよい。
【0069】
116において、当業者によって容易に理解されるであろういくつものユーザ情報の中で、限定されるものではないが、ユーザ名、アルゴリズムで保護された承認トークン、公開鍵、および暗号化された秘密鍵のようなユーザ情報から成るメンバファイルが生成されてよい。
【0070】
その後118において、このメンバファイルは、当業者によって容易に理解されるであろういくつもの類似した位置の中でもセッションサーバに、セキュアな、またはセキュアでない方式で格納され得る。120において、クライアントデバイス1114(
図11)に関連するこのユーザは、メンバファイルの作成に応答して、ここで登録されてよい。
図11のデバイス1114を参照して
図1が説明されているものの、デバイス1106、1110、または1112(
図11に示されている)を含めて、プロセス100での使用に向けて、その他複数のデバイスもまた考えられる。
【0071】
ここで
図2Aを参照すると、VPN無しでユーザの認証が行われる、本発明の一実施形態が図示されている。204においてユーザは、クライアントデバイス1114(
図11)にインストールされたセッションマネージャ202を介して、当業者によって容易に理解されるであろういくつものタイプの認証情報の中でも、限定されるものではないが、ユーザ名およびマスターパスワード(MP)のようなユーザの認証情報を提出してよい。206において、この入力された認証情報が、当業者には容易に明らかであろう任意のその他の適切な情報と共に、承認トークンを生成するために使用され得る。208において、セッションサーバ210でセッションを認証するために、承認トークンが使用されてよい。一実施形態において、ユーザ名が、承認トークンと共に、セッションサーバAPIを通じて、セッションサーバ210においてユーザを認証するために使用されてよい。
【0072】
212においてセッションサーバ210は、比較のために、セッションマネージャ202から承認トークンを受信する。214においてセッションサーバ210は、セッションマネージャ202から受信した承認トークンが、(
図1のステップ118で説明された)メンバファイルに格納されている、アルゴリズムで保護された承認トークンと一致するかどうかを判断する。受信した承認トークンが、セッションサーバ210中のアルゴリズムで保護された承認トークンと一致する場合(すなわち、ステップ214="Y")、220において、このユーザは認証され、以下に説明されるように、暗号化された秘密鍵が復号化に向けて受信されてよい。代替的に、受信した承認トークンが、メンバファイルに格納されている、アルゴリズムで保護された承認トークンと一致しない場合(すなわち、ステップ214="N")、218において、セッションマネージャ202またはクライアントデバイス1114(
図11)における他のユーザインタフェースを介して、ユーザが承認されないこと、および/または、認証情報が誤っていることを示すメッセージが、このユーザに返され得る。同様の態様で、認証セッションにおいて受信される任意の情報が、この認証判断ステップのために、メンバファイルに格納された情報と比較され得る。
【0073】
ユーザが認証された場合、220において、限定されるものではないが、公開鍵のようなユーザ情報および暗号化された秘密鍵が、対応するメンバファイルから取得されてよい。クライアントデバイス1114(
図11)における暗号化された秘密鍵およびクライアントデバイス1114(
図11)における暗号化された秘密鍵が復号化されてよい。
【0074】
222において、セッションデータがセッションサーバ210から取得されてよい。一例において、ユーザ名と関連するセッションマネージャ202が、セッションサーバAPIを通じてセッションサーバ210に要求することにより、セッションサーバ210からのセッションデータが要求されてよい。この要求に応答してセッションサーバ210は、以下に示される
図5に関して後で説明されるように、例えば、暗号化されたユーザデータ、および暗号化され、アンロックされた任意の共有セッションを返すことができる。
【0075】
226において、暗号化されたユーザデータが受信され、承認トークンにより復号化されてよい。同様の態様で、228において、暗号化された共有セッションは、ユーザの秘密鍵によって復号化され得る。230において、ユーザ自身のセッションデータ、およびユーザと共有されたセッションデータが、セッションマネージャ202による使用に対して利用可能であってよい。
【0076】
ここで
図2Bを参照すると、VPNを通じて認証が行われる、本発明の一実施形態が図示されている。236においてユーザは、VPNクライアント232を通じて、当業者によって容易に理解されるであろういくつものタイプの認証情報の中でも、限定されるものではないが、ユーザ名およびマスターパスワード(MP)のような認証情報を提出してよい。238において、この入力された認証情報は、限定されるものではないが、当業者には容易に明らかであろう個人情報のような、任意のその他の適切な情報と共に、承認トークンを生成するために使用され得る。240において、セッションサーバ210でセッションを認証するために、生成された承認トークンが使用されてよい。ある実施形態において、ユーザ名および承認トークンが、セッションサーバAPIを通じて、セッションサーバ210においてユーザを認証するために使用されてよい。
【0077】
246において、この承認トークンがセッションサーバ210に受信され、格納されてよい。ある実施形態において、248においてセッションサーバ210は、受信した承認トークンが、(
図1のステップ118で示され、説明された)メンバファイルに格納されている、アルゴリズムで保護された承認トークンと一致するかどうかを判断してよい。トークンが一致する場合(すなわち、ステップ248="Y")、252において、クライアントデバイスにおける秘密鍵が、セッションサーバ210より取得された情報から復号化されてよい。複数の実施形態において、限定されるものではないが、公開鍵、およびセッションサーバ210からの暗号化された秘密鍵のような情報が、対応するメンバファイルからセキュアに取得され得る。また、取得されたこの暗号化された秘密鍵は、承認トークンにより復号化されてよい。
【0078】
しかし、受信した承認トークンが、メンバファイルに格納されている、アルゴリズムで保護された承認トークンと一致しない場合(すなわち、ステップ248="N")、250において、ユーザ認証情報が誤っているのでユーザは承認されないことを示すメッセージが、このユーザに返されてよい。ある実施形態において、認証セッションにおいて受信される任意の情報が、この認証判断ステップ248にて、メンバファイルに格納された情報と比較され得る。
【0079】
次に、254において、以下の
図5においてさらに詳細に説明されるように、アンロックされた共有セッションと、ロックされた共有セッションとの両者が、VPNクライアント232を介してセッションサーバ210から取得されてよい。ある実施形態においては、セッションサーバAPIを通じて共有セッションデータ要求をセッションサーバ210へ提出すると取得が行われる。要求されたデータが取得され、VPNクライアント232へ送信され得る。このデータは、非限定的ないくつかの例においては、暗号化され、ロックされた共有セッションデータ、および、暗号化され、アンロックされた共有セッションデータを含んでよい。258において、この暗号化された共有セッションデータは、復号化された秘密鍵によって復号化されてよい。これにより、復号化され、ロックされたセッションデータ、および復号化され、アンロックされたセッションデータを生じさせる。復号化され、ロックされたセッションデータは、
図5においてさらに詳細に説明されるように、セッションマネージャ202(
図2A)の公開鍵によってさらに暗号化されてよいことが理解されるべきである。
【0080】
260においてVPNクライアント232認証がVPN234により行われてよい。これは、当業者によって容易に理解されるであろういくつもの承認データの中でも、限定されるものではないが、承認トークンに関する情報、ユーザ名、および復号化され、アンロックされたセッションデータのような承認情報を、VPN APIへと送信することを含んでよい。264において、承認トークンを使用してユーザデータが復号化されてよい。さらに、266において、この復号化され、ロックされた共有セッションデータは、セッションマネージャ公開鍵を使用して復号化されてよい。268において、セッションデータが、VPN234によって使用すべくここで利用可能となってよい。ここでVPN234は、複数の要求を受け入れる準備ができている。
【0081】
ここで
図3Aを参照すると、VPN無しにセッションのログアウトが実行されてよい、本発明のある実施形態が図示されている。ユーザがVPNを使用していない場合、セッションマネージャ202がログアウトを開始してよい304。ある実施形態においてセッションマネージャ202は、セッションデータ306がユーザのブラウザ302から読み出されることを要求してよく、この取得されたセッションデータは、暗号化されたセッションデータ310を形成すべく暗号化され得る。ある実施形態において、このセッションデータ306は、暗号化されたユーザデータ310(または暗号化されたセッションデータ310)を作成すべく、承認トークンによって暗号化されてよい。一実施形態において、この暗号化されたユーザデータ310は、ストレージ用にセッションサーバ210へと通信されてよい。ストレージは、当業者によって容易に理解されるであろう任意の適切なデータストレージ構成で構成されてよく、容易に理解されるであろういくつもの構成の中でも、リモートストレージ、ローカルストレージ、セキュアストレージ、セキュアでないストレージ、および揮発性ストレージを含む。
【0082】
次に、一実施形態においては、ブラウザ302のセッションデータがクリア314されてよい。これは、ブラウザ302のストレージから複数のクッキーを削除することを含んでよい。その後、セッションサーバ210へログアウトコマンドを送信することによって、セッションサーバからのログアウト316が始まってよい。ここでユーザは、ブロック318において、ブラウザ302におけるセッションから上手くログアウトされてよい。
【0083】
ここで
図3Bを参照すると、VPNによってセッションのログアウトが実行されてよい、本発明の一実施形態が図示されている。VPNクライアント232のユーザがVPN234を使用している場合、ユーザは、VPN234からのログアウトを開始340してよい。VPNクライアント232からVPN API344に対してログアウト要求343を開始することにより、VPNからログアウト342されてよい。ここからは、全てのセッションデータがメモリからクリア346されてよい。複数の実施形態においてメモリは、容易に認識されるであろういくつもの構成の中でも、揮発性メモリまたは永続メモリ、セキュアなまたはセキュアでないメモリのいずれかであってよい。ユーザのステータスは、ログアウトされたものとして設定されてよい。ひとたびユーザのステータスが変更され、セッションデータがクリアされると、ユーザログアウト348は成功である。
【0084】
ここで
図4Aを参照すると、アクティブなVPN234を通じてログイン/ログアウトセッションが実行される、本発明の一実施形態が図示されている。ユーザのブラウザ302を通じたセッションの前に、ユーザはログアウト410され、
図2Bに関して上記にて説明されたように、VPNを通じて認証402してよい。ユーザは、VPNクライアント232を使用して、ログオン412する。ブラウザ302にはセッションが存在しなくてよい404。また、以前のセッションが、VPN234のメモリに存在してよい414。(ユーザが、ブラウザ302を使用してウェブページ406を訪れた場合)このセッションが開始されてよい。要求407が、VPNへのプロキシ408としてVPN234へと送信されてよい。VPNクライアント232は、(
図6でさらに詳細に説明されるように)以前のセッションが存在するかどうかを判断すべく、ウェブページサーバ417における、同じドメイン名に関連する複数のセッションをチェック416してよい。適切なセッションが存在する場合、VPNへのプロキシ408の応答として、応答415が、プロキシ応答418として、VPN234を通じてブラウザ302へ返信されてよい。
【0085】
一実施形態においては、ブロック408におけるVPNへのプロキシによって、VPN234を通じて要求407が送信されてよい。VPN234は、同じウェブページに関連する複数の以前のセッションが存在414するかどうかを確かめるべくチェックしてよい。適切なセッションが存在する場合、このセッションが、要求407でセッションを効果的に可能にさせる要求407に追加されてよい。ある実施形態において、その後要求407は、VPNクライアント232によって、通常、ウェブページサーバ417にプロキシされてよい。以下の
図6にさらに説明されるように、VPNプロキシ応答418を通じて応答415が受信され、ユーザへと直接に返信される。
【0086】
ここで、特定のウェブページに関連するセッションがアクティブであり420、このウェブページが適切なセッションを通じてレンダリングされてよい422。(
図3Aに示されるように)ユーザがVPN234からログアウトする場合424、セッションデータがメモリからクリアされてよい428。そして、いくつかの実施形態においては、ユーザがその後このウェブページ406を訪れた場合、VPNプロキシ要求431が送信されてよい。要求431は、VPNクライアント232を介し、VPNへのプロキシ432として、ウェブページサーバ417へと通常プロキシされてよい。応答435が、ウェブページサーバ417から取得され、ブロック434において、VPNプロキシ応答418を通じて、VPNクライアント232によってブラウザ302へと直接返信されてよい。この特定のウェブページは、アクティブな関連するウェブページセッション無しで、ブラウザ302にレンダリング440され得る。
【0087】
ここで
図4Bを参照すると、アクティブなVPN無しでログイン/ログアウトセッションが実行されてよい、本発明の一実施形態が図示されている。ある実施形態においてこのプロセスは、ブラウザ302にセッションが存在していない状態450で始まる。
図2Aにおいて既に詳述されたように、ユーザは、セッションマネージャ202にログインし、全ての以前のセッションを取得し452、それらをユーザのブラウザ302に挿入453できる。このセッションは、その後、ブラウザ302においてアクティブ化454され得る。
【0088】
次に、一実施形態においてユーザは、
図3Aに示され、説明されたように、ブロック456においてセッションマネージャ202からログアウトし、進行中の全てのセッションを中断してよい。これらのセッションは、その後、応答457を通じて、ブラウザ302において中断458され得る。
【0089】
ここで
図5を参照すると、例えば、セッション作成者(例えば、ユーザA)および受信者ユーザ(例えば、ユーザB)のような複数のユーザの間でセッションを共有するための、本発明の一実施形態が図示されている。ここで共有セッションが開始されてよい。一実施形態において、ユーザAは、直接にセッションマネージャ202を通じて、または、VPNクライアント232を通じてのいずれかで認証502してよい(
図2Aまたは2Bに示されるように)。ユーザAは、その後、現在のセッションをユーザBと共有することを開始504してよい。ある実施形態において、ユーザAはまた、進行中であり得るこの共有セッションに対して適用されるべき複数の制限またはアクセスを選択506してよい。1つの非限定的な例として、当業者によって容易に考慮されるであろういくつもの構成の中でも、ユーザAは、特定のセッションに挿入されたあらゆるクッキーにユーザBがアクセスすることを制限してよい。または代替的に、ユーザAは、この共有セッションに関連するコードをユーザBが変更することを制限してよい。
【0090】
本発明の一実施形態においてユーザAは、これらの共有セッションの読み出し、またはそれらのセッションもしくは共有制限に対する修正をユーザBができないようにするかどうか508を規定してよい。ユーザAが共有セッションを制限し、セッションの修正を防止することを決定した場合(すなわち、ステップ508="Y")、この共有セッションは"ロックされた"ものとして説明される。複数の実施形態において、セッションマネージャ202またはユーザAのVPNクライアント232は、セッションサーバ210におけるセッションサーバAPIから、セッションマネージャの公開鍵510を要求してよい。複数の実施形態において、セッションマネージャ202またはVPNクライアント232は、応答513としてセッションマネージャ202の公開鍵510を取得してよく、これを使用して共有セッションを暗号化514してよい。共有セッションを暗号化することにより、ロックされたセッションを作成515する。しかしながら、ユーザAが共有セッションを制限しないと決定した場合(すなわち、ステップ508="N")、これは"アンロックされた"ものとして説明され516、可能な受信者が、このセッションおよび/または関連する複数の制限を見ること/変更することができるものと仮定される。
【0091】
次に、セッションマネージャ202またはVPNクライアント232は、ユーザBの公開鍵518を要求してよい。ある実施形態において、ユーザBの公開鍵518は、限定されるものではないが、セッションサーバ210のような、相互にアクセス可能な位置に格納されてよい。ユーザBの公開鍵は、その後、セッションサーバ210から取得519されてよい。ユーザBの公開鍵は、ユーザAとユーザBとの間で、共有セッションを暗号化520すべく使用されてよい。一実施形態において、ユーザBの公開鍵は、後で使用するために、当業者によって容易に考慮されるであろうその他のあらゆる構成の中でも、限定されるものではないが、リモートに、ローカルに、セキュアに、またはセキュアではないようにを含め、任意の適切な位置に格納されてよい。
【0092】
ユーザAおよびBの間で暗号化されたセッションは、セッションサーバ210へ送信524され、セッションサーバ210に格納されてよい。暗号化されたセッションは、この共有セッションに関与するユーザAおよびBのいずれか、または両者に関連するものであってよい。
【0093】
図6は、一実施形態に従った、VPN機能性についての技術を示すプロセス600を示す。ある実施形態においては、あるVPN、例えばVPN234が、602において、セッションに対する要求を第2ユーザ(すなわち、セッション受信者)から受信してよい。604において、セッションマネージャ、例えばセッションマネージャ202に第2ユーザがログインされているかどうか判断してよい。第2ユーザがセッションマネージャにログインされていた場合(ステップ604="Y")、606において、その接続がセキュアプロトコルを通じて形成されているかどうか判断してよい。その接続がセキュアプロトコルを通じて形成されている場合(ステップ606="Y")、608において、SSLハンドシェイクが第2ユーザとネゴシエートされてよい。610において、ステップ602からのユーザセッション要求に対する以前のセッションが存在するかどうか判断してよい。
【0094】
しかしながら、その接続がセキュアプロトコルを通じたものでない場合(すなわち、ステップ606="N")、プロセス600はステップ610に進み、そこで、この要求に対する以前のセッションが存在するかどうか判断してよい。この特定のセッション要求に対する以前のセッションが存在しない場合(すなわち、ステップ610="N")、612において、プロキシ要求が生成されてよい。同様に、ステップ604において、第2ユーザがセッションマネージャにログインされていない場合、612においてプロキシ要求が生成されてよい。
【0095】
特定の要求に対応する以前のセッションが存在する場合(すなわち、ステップ610="Y")、616において、この以前のセッションが共有されていたかどうかが判断される。このセッションが共有されていなかった場合(すなわち、ステップ616="N")、618において、以前に存在していたであろう複数のセッションクッキーが、生成されたプロキシ要求に挿入されてよい。しかしながら、この以前のセッションが共有されていた場合(すなわち、ステップ616="Y")、620において、共有セッションの複数のパラメータによってHTTPまたはHTTPS要求が承認されるかどうかが判断される。HTTPまたはHTTPS要求が承認される場合(すなわち、ステップ620="Y")、618において、このプロキシ要求に複数のセッションクッキーが挿入されてよい。しかしながら、HTTPまたはHTTPS要求が、共有セッション許可によって承認されない場合(すなわち、ステップ620="N")、622において、"要求が承認されない"というメッセージが第2ユーザに返されてよい。このメッセージは、第2ユーザが、第1ユーザ(すなわち、セッション作成者)との共有セッションに参加することが承認されないことを示す。複数の実施形態において、複数の入力フィルタが、特定の共有セッションと関連するものであってよく、一実施形態においては、このセッションをアクティブに共有している第1ユーザによって設定されてよい。
【0096】
ステップ612から続いて、ひとたびプロキシ要求が生成されると、614において、このプロキシ要求がウェブサーバ(例えば、HTTPまたはHTTPSサーバ)へ送信されてよく、624において、そのHTTPまたはHTTPSサーバからセッションマネージャに対して応答が取得されてよい。626において、第2ユーザがこのセッションマネージャにログインされているかどうかを判断してよい。第2ユーザがこのセッションマネージャにログインされている場合(すなわち、ステップ626="Y")、630において、このセッションが第2ユーザと共有されているかどうかが判断されてよい。このセッションが第2ユーザと共有されていない場合(すなわち、ステップ630="N")、ステップ628において、このセッションは第2ユーザと共有されないことを第2ユーザに指示する応答が、第2ユーザに対して返されてよい。同様に、第2ユーザがこのセッションマネージャにログインされていない場合(すなわち、ステップ626="N")、628において、この応答が第2ユーザに対して送信されてよい。
【0097】
一方、このセッションが第2ユーザと共有されている場合(すなわち、ステップ630="Y")、632において、この特定の共有セッションに関連する複数のパラメータおよび複数の出力フィルタが、この応答に対して適用されてよい。628において、この応答がサーバから取得されてよく、変更された、またはフィルタリングされた応答が第2ユーザに送信されてよい。一実施形態においては、限定されるものではないが、ログアウトすることのような、このページにおけるいくつかのアクションを第2ユーザが実行することを禁止してよいこと、もしくは、共有第2ユーザにとって利用可能とならないように、この応答から複数のセッションクッキーが取り除かれてよいことのような、複数の直接的な修正が、この応答に関連するHTMLに対して成され得ることが考えられよう。一実施形態において、これらの出力フィルタは、このセッションを共有する第1ユーザによって設定されることが考えられよう。
図6は第2ユーザに関して説明されているものの、任意の数の追加の共有ユーザもまた、
図6の説明において考えられることが理解されるべきである。
【0098】
ここで
図7Aを参照すると、共有セッションがアクティブなVPN234を通じて受信されてよい、本発明の一実施形態が図示されている。ある実施形態において、第1ユーザAが、特定のウェブページまたはドメイン名に関するセッションを共有第2ユーザBと共有710してよい(既に
図5に示されたように)。また、既にユーザBは登録708しており、共有のための公開鍵および秘密鍵を作成していてよい(
図1において既に示されたように)。共有セッションを受信すべく、ユーザBは、ブロック712においてVPNクライアント704を使用してVPN234にログインし、特定のウェブサイトに関連する共有セッションを取得および復号化してよい(
図2Bにおいて既に示されたように)。
【0099】
共有セッションがブラウザ706に以前に存在していなかった場合(すなわち、セッションが存在しない714)、ユーザBは、ユーザBのブラウザ706を通じて、共有セッションに関連するウェブページまたはドメイン名へと要求716を送信してよい。この要求は、VPN234を通じたプロキシにより送信されてよく、任意の必要な入力フィルタが要求716に対してVPN234によって適用されてよい(
図6において既に説明されたように)。このプロキシ要求は、ウェブページまたはドメイン名サーバ720へ送信されてよく、この要求に基づいて応答が取得722され、ブロック724において、VPN234を通じたプロキシによりブラウザ706へと送信される。ある実施形態においてVPN234は、ブラウザ706に送信された要求に対して、適宜、任意の出力フィルタを適用してよい(
図6において既に説明されたように)。VPN234は、適切な複数の出力フィルタに基づいて応答をレンダリング726してよい。共有セッションは、適用されたこれらの適切な制限およびフィルタにより、ブラウザ706においてアクティブ化されてよい。このセッションはその後、ブラウザ706においてアクティブ化728されてよい。
【0100】
ここで
図7Bを参照すると、アクティブなVPN無しに共有セッションが受信されてよい、本発明の一実施形態が図示されている。ある実施形態において、第1ユーザAが、特定のウェブページまたはドメイン名に関するセッションを、共有ユーザまたは第2ユーザBと共有711してよい(既に
図5に示されたように)。また、既に、ユーザBは登録709しており、共有のための公開鍵および秘密鍵を作成していてよい(
図1において既に示されたように)。共有セッションを受信すべく、ユーザBは、セッションマネージャにログイン730してよく、特定のウェブサイトに関連する共有セッションを取得および復号化732してよい(
図2Aにおいて既に示されたように)。ある実施形態においては、共有セッションがブラウザ706に以前に存在していなかった場合(セッションが存在しない732)、ユーザBは、復号化された共有セッション732をブラウザ706に挿入733してよく、これは、ブラウザ706において何の制限も無くアクティブ化734されてよい。
【0101】
ある実施形態においては、ブラウザ706を使用して、ユーザBが、HTTPサーバ720に関連するウェブページに対する要求を送信736してよい。関連する応答がサーバから取得され、ブラウザ706により受信738されてよい。応答が受信738された場合、セッションマネージャ702は、通知739を介してブラウザ706により通知されてよい。セッションマネージャ702は、同時に、ブラウザ706からの応答をリッスン740してよい。ブラウザ706は、ウェブサーバ720からの応答をレンダリング742してよい。セッションマネージャ702は、任意の必要な制限を応答742に対して適用744してよい。ある実施形態においてセッションマネージャ702は、レンダリングされたウェブページにおいて複数のドキュメントオブジェクトモデル("DOM")エレメント745を変更することによって、複数の制限を適用してよい。しかしながら、当業者には容易に明らかであろう、その他複数の構成もまた考えられる。このウェブページは、ブロック746において、レンダリングされたウェブページに適用される共有セッションにより、ブラウザ706においてレンダリングされてよい。
【0102】
図8は、一実施形態に従ったアクティブなセッション管理を示す。ある実施形態において、第1ユーザ、例えばユーザAは、セッションマネージャ202により認証802してよい(
図2Aにおいて既に示されたように)。ユーザはその後、続いて、ブラウザ302における特定のドメイン名に関連するウェブページに、新たなセッションを作成804してよい。ブラウザ302におけるこのセッションの期限が満了する場合、セッションマネージャ202は、この期限の満了を検出808し、このセッションの存続期間を増大させることができる。ある実施形態において、当業者によって容易に考慮されるであろういくつもの構成の中でも、例えば、ブラウザ302において特定のドメイン名に関連するその後の全てのセッションが拡張された存続期間を有し得るように、または代替的に、あるセッションの存続期間が個々の場合に応じて増大され得るように、存続期間を増大させることが変更されてよい。
【0103】
ユーザがセッションマネージャ202からログアウトする場合、全てのアクティブなセッションが、セッションマネージャ202によって中断810され得る(
図3Aに示され、説明されたように)。
【0104】
その後、幾分かの時間が経ってから、ユーザは、ブラウザ302における同じ特定のドメイン名に関連するウェブページにおいて、以前にログインしたことが無くても、またはセッションマネージャ202による認証が無くても、新たなセッションを作成812してよい。セッションマネージャ202にログインするその後の試みが成された場合(
図2Aに示され、説明されたように)、セッションマネージャ202は、そのドメイン名に関連する新たなセッションと以前に中断されたセッションとの間のコンフリクトを検出814してよい。ある実施形態において、ユーザはその後、新たに作成されたセッションを中断されたセッションによってオーバーライドするか、または代替的に、新たに作成されたセッションを維持するかどうかを判断816してよい。代替的に、
図2A−2Bに示されたように、ユーザが、以前に作成されたセッションを取得してよい。
【0105】
一例において、オンライン銀行アプリケーションに対し、ユーザが、ブラウザ302を介して銀行のウェブサイトにおいて新たなセッションを作成818してよい。そしてセッションマネージャ202は、銀行のウェブサイトにおいてこのセッションをアライブに保つべく、非セッション変更要求を送信820することによって、定期的に銀行サーバを"くすぐる(tickle)"ことをしてよい。従って、アクティブでない短い期間があった後に通常であればこのセッションがタイムアウトするような状況においても、アクティブなセッションが維持されてよい。
【0106】
一実施形態において、ユーザは、容易に明らかであろういくつもの構成の中でも、限定されるものではないが、Google(登録商標)のような、マルチアカウントウェブサイトにおいて第1セッションAを作成822してよい(GOOGLEは、Google社の登録商標である)。その後、続いてユーザは、同じこのマルチアカウントウェブサイトに第2セッションBを作成824してよい。複数の実施形態において、セッションマネージャ202は、ユーザが複数の異なるセッションにログインまたはログアウトする必要無く、共有セッションにアクセスすることにより、ユーザが、別個な複数のマルチアカウントセッションの間をシームレスな態様で切り換えることを可能とするユーザインタフェースを提供826してよい。
【0107】
ここで
図9を参照すると、一実施形態に従った、
図1−8で説明された複数のプロセスに使用され得るプログラマブルデバイス900をブロック図で示す。
図9に示されたプログラマブルデバイス900は、マルチプロセッサプログラマブルデバイスであり、第1処理エレメント970および第2処理エレメント980を含む。2つの処理エレメント970および980が示されているものの、プログラマブルデバイス900のある実施形態はまた、そのような処理エレメントを1つだけ含んでもよい。
【0108】
プログラマブルデバイス900は、第1処理エレメント970および第2処理エレメント980が、ポイントツーポイント相互接続950を介して結合された、ポイントツーポイント相互接続システムとして図示されている。
図9に示された複数の相互接続の任意のもの、または全てが、複数のポイントツーポイント相互接続ではなく、むしろマルチドロップバスとして実装されてもよい。
【0109】
図9に示されるように、処理エレメント970および980のそれぞれは、第1および第2プロセッサコア(すなわち、プロセッサコア974aおよび974b、並びにプロセッサコア984aおよび984b)を含むマルチコアプロセッサであってよい。そのようなコア974a、974b、984a、984bは、
図1−8と関連して上記にて説明されたものと同様な態様で、命令コードを実行するように構成されてよい。しかしながら、その他複数の実施形態において、所望されるのであれば、複数のシングルコアプロセッサである複数の処理エレメントを使用してもよい。複数の処理エレメント970、980を有する複数の実施形態において、それぞれの処理エレメントは、所望されるのであれば、異なる数のコアにより実装されてよい。
【0110】
各処理エレメント970、980は、少なくとも1つの共有キャッシュ946を含んでよい。共有キャッシュ946a、946bは、それぞれコア974a、974bおよび984a、984bのような、処理エレメントの1または複数のコンポーネントによって利用されるデータ(例えば、複数の命令)を格納してよい。例えば、共有キャッシュは、処理エレメント970、980の複数のコンポーネントによるより速いアクセスのために、メモリ932、934に格納されるデータをローカルにキャッシュしてよい。1または複数の実施形態において、共有キャッシュ946a、946bは、レベル2(L2)、レベル3(L3)、レベル4(L4)のような1または複数の中間レベルキャッシュ、またはその他複数のレベルのキャッシュ、ラストレベルキャッシュ(LLC)、またはそれらの組み合わせを含んでよい。
【0111】
図9は、図面を明確にするために2つの処理エレメント970、980を有するプログラマブルデバイスを示すものの、本発明の範囲はそのように限定されるものではなく、任意の数の処理エレメントが存在してよい。代替的に1または複数の処理エレメント970、980は、グラフィックス処理ユニット(GPU)、デジタル信号処理(DSP)ユニット、フィールドプログラマブルゲートアレイ、または、任意の他のプログラマブル処理エレメントのような、プロセッサ以外のエレメントであってよい。処理エレメント980は、処理エレメント970に対して異種または非対称であってよい。処理エレメント970、980の間には、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性等を含む様々な価値基準の観点において、様々な差異があってよい。これらの差異は、実際的には、処理エレメント970、980の中で、非対称性および異種性として現れてよい。いくつかの実施形態において、様々な処理エレメント970、980は、同じダイパッケージに存在してよい。
【0112】
第1処理エレメント970は、メモリコントローラロジック(MC)972並びにポイントツーポイント(P−P)相互接続976および978をさらに含んでよい。同様に、第2処理エレメント980もMC982並びにP−P相互接続986および988を含んでよい。
図9に示されるように、MC972および982は、処理エレメント970、980を対応するメモリ、すなわちメモリ932およびメモリ934に結合する。これらのメモリは、対応するプロセッサにローカルに取り付けられたメインメモリの一部分であってよい。MCロジック972および982は処理エレメント970、980に統合されるものとして図示されているものの、いくつかの実施形態において、メモリコントローラロジックは、そこに統合されるよりもむしろ、処理エレメント970、980の外部のディスクリートなロジックであってよい。
【0113】
処理エレメント970および処理エレメント980は、リンク952および954を通じ、対応するP−P相互接続976および986を介して、I/Oサブシステム990に結合されてよい。
図9に示されるように、I/Oサブシステム990はP−P相互接続994および998を含む。さらに、I/Oサブシステム990は、I/Oサブシステム990を高性能グラフィックスエンジン938と結合するためのインタフェース992を含む。一実施形態において、グラフィックスエンジン938をI/Oサブシステム990に結合すべく、バス(図示せず)が使用されてよい。代替的に、ポイントツーポイント相互接続939がこれらのコンポーネントを結合してよい。
【0114】
次に、I/Oサブシステム990は、インタフェース996を介して第1リンク916に結合されてよい。本発明の範囲がそのように限定されるものではないが、一実施形態において第1リンク916は、ペリフェラルコンポーネントインターコネクト(PCI)バス、または、PCIエクスプレスバスもしくは別のI/O相互接続バスのようなバスであってよい。
【0115】
図9に示されるように、様々なI/Oデバイス914、924が、第1リンク916を第2リンク920へ結合し得るブリッジ918と共に、第1リンク916に結合されてよい。一実施形態において第2リンク920は、ローピンカウント(LPC)バスであってよい。例えば、一実施形態においては、キーボード/マウス912、通信デバイス926(これは次にコンピュータネットワーク903と通信し得る)、およびコード930を含み得るディスクドライブまたはその他の大容量ストレージデバイスのようなデータストレージユニット928を含む、様々なデバイスが第2リンク920に結合されてよい。コード930は、上記にて説明された複数の技術のうちの1または複数の実施形態を実行するための複数の命令を含んでよい。さらに、オーディオI/O924が第2バス920に結合されてよい。
【0116】
その他複数の実施形態も考えられることに留意されたい。例えば、
図9のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは別のそのような通信トポロジを実装してよい。リンク916および920はバスとして
図9に示されているものの、任意の所望されるタイプのリンクが使用されてよい。また、
図9の複数のエレメントが、代替的に、
図9に示されるものよりも多い、または少ない数の統合チップを使用して分割されてよい。
【0117】
ここで
図10を参照すると、別の実施形態に従ったプログラマブルデバイス1000をブロック図で示す。
図9のいくつかの態様が、
図10のその他複数の態様を不明瞭にすることを回避すべく、
図10からは省略されている。
【0118】
図10は、処理エレメント1070、1080が、統合されたメモリ並びにI/O制御ロジック("CL")1072および1082をそれぞれ含んでよいことを示す。いくつかの実施形態において、1072、1082は、
図9と関連して上記にて説明されたもののようなメモリ制御ロジック(MC)を含んでよい。さらに、CL1072、1082はまた、I/O制御ロジックも含んでよい。
図10は、メモリ1032、1034が1072、1082に結合されてよいことのみでなく、複数のI/Oデバイス1044もまた、この制御ロジック1072、1082に結合されてよいことも示す。複数のレガシーI/Oデバイス1015が、インタフェース1096によってI/Oサブシステム1090に結合されてよい。各処理エレメント1070、1080は、プロセッサコア1074A、1074B、1084A、および1084Bとして
図10に示される、複数のプロセッサコアを含んでよい。
図10に示されるように、I/Oサブシステム1090は、リンク1052および1054によって処理エレメント1070および1080のP−P相互接続1076および1086へ接続するP−P相互接続1094および1098を含む。処理エレメント1070および1080はまた、リンク1050並びにそれぞれ相互接続1078および1088によって相互接続されてよい。
【0119】
図9および10に示されるプログラマブルデバイスは、本明細書にて説明された様々な実施形態を実装すべく利用されてよい、プログラマブルデバイスの複数の実施形態の概略図である。
図9および10に示されるプログラマブルデバイスの様々なコンポーネントが、システムオンチップ(SoC)アーキテクチャにおいて組み合わされてよい。
【0120】
ここで
図11を参照すると、上記にて説明された複数の技術が実装されてよい、例示的なインフラストラクチャ1100が概略的に図示されている。インフラストラクチャ1100は複数のコンピュータネットワーク1102を含む。複数のコンピュータネットワーク1102は、インターネット、企業ネットワーク、またはローカルエリアネットワーク(LAN)のような、現在利用可能な多くの異なるタイプのコンピュータネットワークを含んでよい。これらのネットワークのそれぞれは、複数の有線または無線プログラマブルデバイスを含むこと、および、任意の数のネットワークプロトコル(例えば、TCP/IP)を使用して動作することができる。複数のネットワーク1102は、複数のゲートウェイおよび複数のルータ(1108で表されている)、複数のエンドユーザコンピュータ1106、および複数のコンピュータサーバ1104に接続されてよい。インフラストラクチャ1100はまた、複数のモバイル通信デバイスと共に使用するためのセルラーネットワーク1103を含む。複数のモバイルセルラーネットワークは、複数の携帯電話およびその他多くのタイプのモバイルデバイスをサポートする。インフラストラクチャ1100における複数のモバイルデバイスは、携帯電話1110、ラップトップ1112、およびタブレット1114として図示されている。携帯電話1110のようなモバイルデバイスは、セルラーネットワーク1103に接続するために、通常、複数のモバイルネットワークタワー1120、1130および1140と相互作用しながら、このモバイルデバイスが移動するに連れて、1または複数のモバイルプロバイダネットワークと相互作用してよい。
図11においてはセルラーネットワークとして参照されているものの、モバイルデバイスは、1つよりも多くのプロバイダネットワークのタワー、並びに、複数の無線アクセスポイントおよびルータ1108のような、複数のセルラーではないデバイスと相互作用してよい。さらに、モバイルデバイス1110、1112、および1114は、所望されるサービスのためのコンピュータ1104および1106のような、複数の非モバイルデバイスと相互作用してよく、これは、上記にて説明されたユーザ認証情報を提供すること無く、複数のクライアントデバイスにわたって、および、その他複数の承認されたユーザとセッションを共有することを含み得る。複数のクライアントデバイスの機能性が、
図11に示される任意のデバイスまたは複数のデバイスの組み合わせによって実装されてよい。しかしながら、最も一般的には、ゲートウェイまたはルータにおけるファイアウォールまたは侵入防護システムに実装される。
【0121】
以下の複数の例は、さらなる複数の実施形態に関する。
【0122】
例1は、複数の命令が格納された機械可読媒体であり、実行された場合に、機械に、ウェブドメインに関連するウェブページのためのウェブブラウザにセッションを作成することに関するユーザ情報であって、ユーザ認証情報を含むユーザ情報を送信させ、このセッションを終了することに関するログアウト情報を送信させることにより、終了したセッションを作成させ、この終了したセッションを取得するための要求を送信させ、終了したセッションをこのウェブブラウザに挿入することに関するセッション情報を受信させることにより、アクティブなセッションを作成させる複数の命令を有する。
【0123】
例2において、例1の主題は、任意で以下を含むことができる。ログアウト情報を送信させる複数の命令は、実行された場合に、機械に、ログアウト情報を送信することに応答して、このセッションに関するセッションデータを格納させ、このセッションに関する複数のセッションクッキーをウェブブラウザから削除させる複数の命令をさらに含む。
【0124】
例3において、例1または2の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、機械に、モバイルデバイスに関連するウェブブラウザにセッションを作成させる複数の命令をさらに含む。
【0125】
例4において、例1から3の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、機械に、このセッションを第2ユーザと共有することに関する情報を送信させることにより、共有セッションを作成させる複数の命令をさらに含む。
【0126】
例5において、例4の主題は、任意で以下を含むことができる。セッションを共有させる複数の命令は、実行された場合に、機械に、第2ユーザに関する、共有セッションに対する複数の制限を送信させる複数の命令をさらに含む。
【0127】
例6において、例1から5の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、機械に、終了したセッションを取得するための要求を送信することに応答して、ユーザ名およびパスワードのうちの1または複数が送信されることを防止させる複数の命令をさらに含む。
【0128】
例7において、例1から6の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、機械に、このセッションをアライブに保つために、要求をウェブドメインへ送信させるまたはこのセッション情報を変更する複数の命令をさらに含む。この要求は非セッション変更要求である。
【0129】
例8において、例1から7の主題は、任意で以下を含むことができる。終了したセッションを取得することに関するセッション情報を受信させる複数の命令は、実行された場合に、機械に、ウェブドメインに関連するウェブページに対して以前のセッションが存在するかどうかを判断させる複数の命令をさらに含む。
【0130】
例9において、例1から6の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、機械に、第1デバイスにおけるセッションを終了させ、第2デバイスにおいてこの終了したセッションを取得させる複数の命令をさらに含み、第1デバイスおよび第2デバイスは、あるユーザに関連する。
【0131】
例10は、セッションを回復および共有するための方法であって、ウェブドメインに関連するウェブページのためのウェブブラウザにセッションを作成することに関するユーザ情報であって、ユーザ認証情報を含むユーザ情報を送信する段階と、このセッションを終了することに関するログアウト情報をセッションマネージャから送信する段階であって、これにより、終了したセッションを作成する、送信する段階と、この終了したセッションを取得するための要求をセッションマネージャで送信する段階と、終了したセッションをこのウェブブラウザに挿入することに関するセッション情報をセッションマネージャで受信する段階であって、これにより、アクティブなセッションを作成する、受信する段階と、を有する。
【0132】
例11において、例10の主題は、ログアウト情報を送信することに応答して、このセッションに関するウェブブラウザデータを格納する段階と、このセッションに関する複数のセッションクッキーをウェブブラウザから削除する段階とを任意で含むことができる。
【0133】
例12において、例10から11の主題は、モバイルデバイスに関連するウェブブラウザにセッションを作成する段階を任意で含むことができる。
【0134】
例13において、例10から12の主題は、このセッションを第2ユーザと共有することに関する情報を送信する段階であって、これにより、共有セッションを作成する、送信する段階を任意で含むことができる。
【0135】
例14において、例10から13の主題は、終了したセッションを取得するための要求を送信することに応答してユーザ認証情報が送信されることを防止する段階を任意で含むことができ、このユーザ認証情報は、ユーザのユーザ名およびパスワードのうちの少なくとも一方を含む。
【0136】
例15において、例10から14の主題は、セッションをアライブに保つための要求をウェブドメインに送信する段階を任意で含むことができる。
【0137】
例16は、セッションを回復および共有するための方法であって、ウェブドメインに関連するウェブページのためのウェブブラウザにセッションを作成することに関するユーザ情報であってユーザ認証情報を含むユーザ情報を送信する段階と、このセッションを終了することに関するログアウト情報をセッションマネージャから送信する段階であって、これにより、終了したセッションを作成する、送信する段階と、この終了したセッションを取得するための要求をセッションマネージャで送信する段階と、終了したセッションをこのウェブブラウザに挿入することに関するセッション情報をセッションマネージャで受信する段階であって、これにより、アクティブなセッションを作成する、受信する段階と、を有する。
【0138】
例17において、例16の主題は、ログアウト情報を送信することに応答して、このセッションに関するウェブブラウザデータを格納する段階と、このセッションに関する複数のセッションクッキーをウェブブラウザから削除する段階とを任意で含むことができる。
【0139】
例18において、例16から17の主題は、モバイルデバイスに関連するウェブブラウザにセッションを作成する段階を任意で含むことができる。
【0140】
例19において、例16から17の主題は、このセッションを第2ユーザと共有することに関する情報を送信する段階であって、これにより、共有セッションを作成する、送信する段階を任意で含むことができる。
【0141】
例20において、例19の主題は、第2ユーザに関する、共有セッションに対する複数の制限を送信する段階を任意で含むことができる。
【0142】
例21において、例16から17の主題は、終了したセッションを取得するための要求を送信することに応答してユーザ認証情報が送信されることを防止する段階を任意で含むことができ、このユーザ認証情報は、ユーザのユーザ名およびパスワードのうちの少なくとも一方を含む。
【0143】
例22において、例16から17の主題は、セッションをアライブに保つための要求をウェブドメインに送信する段階を任意で含むことができ、この要求は非セッション変更要求である。
【0144】
例23において、例16から17の主題は、このウェブドメインに関連するウェブページに対して以前のセッションが存在するかどうかを判断する段階を任意で含むことができる。
【0145】
例24において、例16から17の主題は、第1デバイスにおけるセッションを終了する段階、および、第2デバイスにおいてこの終了したセッションを取得する段階を任意で含むことができ、これらの第1デバイスおよび第2デバイスは、このユーザに関連する。
【0146】
例25は、セッションを回復および共有するためのコンピュータシステムであって、1または複数のプロセッサと、1または複数のプロセッサに結合され、複数の命令が格納されたメモリとを備える。このメモリは、実行された場合に、1または複数のプロセッサに、ウェブドメインに関連するウェブページのためのウェブブラウザにセッションを作成することに関するユーザ情報であって、ユーザ認証情報を含むユーザ情報を送信させ、このセッションを終了することに関するログアウト情報をセッションマネージャから送信させることにより、終了したセッションを作成させ、この終了したセッションを取得するための要求をセッションマネージャで送信させ、終了したセッションをこのウェブブラウザに挿入することに関するセッション情報をセッションマネージャで受信させることにより、アクティブなセッションを作成させる、複数の命令を含む。
【0147】
例26において、例25の主題は、任意で以下を含むことができる。ログアウト情報を送信させる複数の命令は、実行された場合に、1または複数のプロセッサに、ログアウト情報を送信することに応答して、このセッションに関するセッションデータを格納させ、このセッションに関する複数のセッションクッキーをウェブブラウザから削除させる複数の命令をさらに含む。
【0148】
例27において、例25から26の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、モバイルデバイスに関連するウェブブラウザにセッションを作成させる複数の命令をさらに含む。
【0149】
例28において、例25から26の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、このセッションを第2ユーザと共有することに関する情報を送信させることにより、共有セッションを作成させる複数の命令をさらに含む。
【0150】
例29において、例28の主題は、任意で以下を含むことができる。セッションを共有させる複数の命令は、実行された場合に、1または複数のプロセッサに、第2ユーザに関する、共有セッションに対する複数の制限を送信させる複数の命令をさらに含む。
【0151】
例30において、例25から26の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、終了したセッションを取得するための要求を送信することに応答してユーザ認証情報が送信されることを防止させる複数の命令をさらに含む。
【0152】
例31において、例25から26の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、このセッションをアライブに保つための要求をウェブドメインへ送信させる複数の命令をさらに含み、この要求は非セッション変更要求である。
【0153】
例32は、セッションを共有するための方法であって、サーバにおいてユーザを認証することに関する認証情報を送信する段階と、第2ユーザとの共有セッションを作成するための要求を送信する段階と、この共有セッションを暗号化するための暗号鍵であって、第2ユーザと関連する暗号鍵を受信する段階と、暗号鍵を受信する段階に応答して暗号化されたセッションを作成すべく、この共有セッションを暗号化する段階と、暗号化されたセッションを作成する段階に応答して、この暗号化されたセッションをサーバへ送信する段階を含む。
【0154】
例33において、例32の主題は、第2ユーザに関する、共有セッションに対する複数の制限を送信する段階を任意で含むことができる。
【0155】
例34において、例33の主題は、共有セッションに対する複数の制限を送信する段階に応答して、サーバ公開鍵を受信する段階を任意で含むことができる。
【0156】
例35において、例32から33の主題は、共有セッションに対する複数の制限を送信する段階に応答して、第2ユーザが、共有セッションにおける複数のクッキーにアクセスすることまたはコードを変更することを制限する段階をさらに含むことを、任意で含むことができる。
【0157】
例36は、セッションを回復および共有するためのコンピュータシステムであって、1または複数のプロセッサと、1または複数のプロセッサに結合され、複数の命令が格納されたメモリとを備える。このメモリは、実行された場合に、1または複数のプロセッサに、サーバにおいてユーザを認証することに関する認証情報を送信させ、第2ユーザとの共有セッションを作成するための要求を送信させ、この共有セッションを暗号化するための暗号鍵であって、第2ユーザと関連する暗号鍵を受信させ、暗号鍵を受信することに応答して暗号化されたセッションを作成すべく、この共有セッションを暗号化させ、暗号化されたセッションを作成することに応答して、この暗号化されたセッションをサーバへ送信させる、複数の命令を含む。
【0158】
例37において、例36の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、第2ユーザに関する、共有セッションに対する複数の制限を送信させる複数の命令をさらに含む。
【0159】
例38において、例37の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、共有セッションに対する複数の制限を送信することに応答して、サーバ公開鍵を受信させる複数の命令をさらに含む。
【0160】
例39において、例36から37の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、共有セッションに対する複数の制限を送信することに応答して、第2ユーザが、共有セッションにおける複数のクッキーにアクセスすることまたはコードを変更することを制限させる複数の命令をさらに含む。
【0161】
例40において、例36から37の主題は、任意で以下を含むことができる。複数の命令は、実行された場合に、1または複数のプロセッサに、ユーザに関連するモバイルデバイスからこの要求を送信させる複数の命令をさらに含む。
【0162】
上記の説明は例示であり、限定的ではないことが意図されていることが理解されるべきである。例えば、上記にて説明された複数の実施形態は、互いに組み合わせて使用されてよい。上記の説明を検討すれば、その他多くの実施形態が当業者には明らかとなるであろう。従って、本発明の範囲は、添付の複数の請求項を参照し、そのような請求項が権利を与えられる均等物の全範囲と共に判断されるべきである。