(57)【特許請求の範囲】
【請求項１】
少なくともひとつのクライアントデバイスとウェブアプリケーションのサーバ側プロセスを実行する少なくともひとつのサーバデバイスとを備えるシステムであって、
前記少なくともひとつのクライアントデバイスが少なくともひとつのハードウエアプロセッサを有する第１処理システムを含み、前記第１処理システムが前記ウェブアプリケーションの第１クライアント側部分を提供する第１クライアントアプリケーションと前記ウェブアプリケーションの第２クライアント側部分を提供する第２クライアントアプリケーションとを実行するよう構成され、前記第１クライアントアプリケーションがブラウザであり、前記第２クライアントアプリケーションがネイティブアプリケーションであり、
前記少なくともひとつのサーバが少なくともひとつのハードウエアプロセッサを有する第２処理システムを含み、前記第２処理システムが前記ウェブアプリケーションの前記サーバ側部分を実行するよう構成され、
前記第２処理システムは、
前記第１クライアントアプリケーションから受けた第１アクセス要求に応じて、前記第１クライアントアプリケーションに、前記ウェブアプリケーションの前記サーバ側部分によって提供されるアプリケーションデータにアクセスする前にサインオンプロセスを実行させることと、
行われる前記サインオンプロセスに関連して、第１セッションを生成することであって、後に前記第１クライアントアプリケーションに前記第１セッションを用いて前記アプリケーションデータへのアクセスが提供される、生成することと、
前記第２クライアントアプリケーションから第２要求が受け付けられた場合、前記第２要求に含まれる少なくともひとつの識別子と前記第２要求に関連付けられたブラウザタイプとを用いて、前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能か否かを判定することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能であると判定された場合、前記第２クライアントアプリケーションに、前記第１セッションを用いた前記アプリケーションデータへのアクセスを提供することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能でないと判定された場合、前記第２クライアントアプリケーションに、前記アプリケーションデータにアクセスする前にサインオンプロセスを実行させ、前記第２クライアントアプリケーションが前記サインオンプロセスを実行した後に、前記第２クライアントアプリケーションによって行われた前記サインオンプロセスに関連して生成された第２セッションを用いて前記第２クライアントアプリケーションに前記アプリケーションデータへのアクセスを提供することと、
他のクライアントデバイスで実行される、前記第１クライアントアプリケーションまたは前記第２クライアントアプリケーションのいずれかのインスタンスによるサインオンに関連して、第３セッションを生成することであって、前記他のデバイスで実行される該インスタンスに前記第３セッションを用いた前記アプリケーションデータへのアクセスを後に提供する、生成することと、
前記第３セッションを生成することに応じて、前記第１セッションを不活性化し、前記少なくともひとつのクライアントデバイスで実行される前記第１クライアントアプリケーションおよび前記第２クライアントアプリケーションによる前記アプリケーションデータへのアクセスを防ぐことと、を含む動作を行うよう構成されるシステム。
【請求項２】
前記判定することは、前記少なくともひとつのサーバデバイスのメモリに、前記識別子に対応する値が、複数のセッションレコードのうちの少なくともひとつに関連付けて保持されているか否かを判定することを含む請求項１に記載のシステム。
【請求項３】
前記判定することは、
前記ウェブアプリケーションに関連付けられた、対応する以前に格納された資格を特定することをさらに含み、
前記判定することはさらに前記特定された資格に基づく請求項２に記載のシステム。
【請求項４】
前記第１処理システムはさらに、
前記第２クライアントアプリケーションが、前記ウェブアプリケーションの前記サーバ側部分と通信するために、前記第２クライアントアプリケーションによって用いられるひとつ以上の候補ブラウザコントロールを決定することと、
前記第２クライアントアプリケーションが前記サーバデバイスに、前記第２要求の第１インスタンスを送信することであって、前記第１インスタンスが前記ひとつ以上の候補ブラウザコントロールのうちの選択された第１候補ブラウザコントロールに対応する、送信することと、
前記第２要求の送信された前記第１インスタンスに対して受信された応答に基づいて、前記第２クライアントアプリケーションが、前記アプリケーションデータにアクセスするのか、または、前記第２要求の第２インスタンスを送信するのか、を判定することであって、前記第２インスタンスが前記ひとつ以上の候補ブラウザコントロールのうちの別のひとつに対応する、判定することと、を行うよう構成される請求項１に記載のシステム。
【請求項５】
（ａ）前記第１クライアントアプリケーションのブラウザタイプが前記ひとつ以上の候補ブラウザコントロールのうちの選択された前記第１候補ブラウザコントロールのブラウザタイプと同じである場合、前記受信された応答は前記第１セッションの存在を示し、（ｂ）前記第１クライアントアプリケーションの前記ブラウザタイプが前記ひとつ以上の候補ブラウザコントロールのうちの選択された前記第１候補ブラウザコントロールの前記ブラウザタイプと異なる場合、前記受信された応答は前記第２クライアントアプリケーションが使用可能な既存のセッションの発見に失敗したことを表す請求項４に記載のシステム。
【請求項６】
前記第１処理システムはさらに、
前記受信された応答が前記第１セッションの前記存在を示し、かつ、前記ひとつ以上の候補ブラウザコントロールのうちの現在選択されている候補ブラウザコントロールのブラウザタイプが所定のブラウザタイプとは異なる場合、前記応答に含まれる第１セッション識別子を取得することと、
前記所定のブラウザタイプのブラウザコントロールをインスタンス化することと、
前記所定のブラウザタイプの前記インスタンス化されたブラウザコントロールと前記第１セッション識別子とを用いて前記アプリケーションデータにアクセスすることと、を行うよう構成される請求項５に記載のシステム。
【請求項７】
前記第１処理システムはさらに、
前記第２要求のひとつ以上のインスタンスを送信した後に、前記第２要求のインスタンスについて受信した応答に関連して、前記第２クライアントアプリケーションが前記サインオンを実行することを行うよう構成される請求項５に記載のシステム。
【請求項８】
前記第２処理システムはさらに、
前記第２要求のインスタンスを受信することに応じて、前記第１セッションが前記第２要求に現在関連付けられているブラウザタイプに対応するか否かを判定することと、
前記判定することが前記第１セッションが前記第２要求に現在関連付けられているブラウザタイプに対応すると判定する場合、前記第２クライアントアプリケーションに、前記第１セッションに関連付けられた第１セッション識別子を返すことと、
前記判定することが前記第１セッションが前記第２要求に現在関連付けられている前記ブラウザタイプに対応しないと判定する場合、前記第２クライアントアプリケーションに、前記第２クライアントアプリケーションが使用可能なセッションが見つからなかったことを示すものを返すことと、を行うよう構成される請求項１に記載のシステム。
【請求項９】
ウェブアプリケーションのサーバ側部分を実行するよう構成された少なくともひとつのハードウエアプロセッサを含むサーバデバイスであって、前記少なくともひとつのプロセッサは、
前記ウェブアプリケーションの第１クライアント側部分を有する第１クライアントアプリケーションであって第１クライアントデバイスによって実行される第１クライアントアプリケーションから受けた第１アクセス要求に応じて、前記第１クライアントアプリケーションに、前記ウェブアプリケーションの前記サーバ側部分によって提供されるアプリケーションデータにアクセスする前にサインオンプロセスを実行させることであって、前記第１クライアントアプリケーションがブラウザアプリケーションである、実行させることと、
行われる前記サインオンプロセスに関連して、第１セッションを生成することであって、後に前記第１クライアントアプリケーションに前記第１セッションを用いて前記アプリケーションデータへのアクセスが提供される、生成することと、
前記ウェブアプリケーションの第２クライアント側部分を有する第２クライアントアプリケーションであって第１クライアントデバイスによって実行される第２クライアントアプリケーションから第２要求が受け付けられた場合、前記第２要求に含まれる少なくともひとつの識別子と前記第２要求に関連付けられたブラウザタイプとを用いて、前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能か否かを判定することであって、前記第２クライアントアプリケーションがネイティブアプリケーションである、判定することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能であると判定された場合、前記第２クライアントアプリケーションに、前記第１セッションを用いた前記アプリケーションデータへのアクセスを提供することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能でないと判定された場合、前記第２クライアントアプリケーションに、前記アプリケーションデータにアクセスする前にサインオンプロセスを実行させ、前記第２クライアントアプリケーションが前記サインオンプロセスを実行した後に、前記第２クライアントアプリケーションによって行われた前記サインオンプロセスに関連して生成された第２セッションを用いて前記第２クライアントアプリケーションに前記アプリケーションデータへのアクセスを提供することと、
他のクライアントデバイスで実行される、前記第１クライアントアプリケーションまたは前記第２クライアントアプリケーションのいずれかのインスタンスによるサインオンに関連して、第３セッションを生成することであって、前記他のデバイスで実行される該インスタンスに前記第３セッションを用いた前記アプリケーションデータへのアクセスを後に提供する、生成することと、
前記第３セッションを生成することに応じて、前記第１セッションを不活性化し、前記第１クライアントデバイスで実行される前記第１クライアントアプリケーションおよび前記第２クライアントアプリケーションによる前記アプリケーションデータへのアクセスを防ぐことと、を含む動作を行うよう構成されるサーバデバイス。
【請求項１０】
前記少なくともひとつのプロセッサはさらに、
前記第２要求のインスタンスを受信することに応じて、前記第１セッションが前記第２要求に現在関連付けられているブラウザタイプに対応するか否かを判定することと、
前記判定することが前記第１セッションが前記第２要求に現在関連付けられているブラウザタイプに対応すると判定する場合、前記第２クライアントアプリケーションに、前記第１セッションに関連付けられた第１セッション識別子を返すことと、
前記判定することが前記第１セッションが前記第２要求に現在関連付けられている前記ブラウザタイプに対応しないと判定する場合、前記第２クライアントアプリケーションに、前記第２クライアントアプリケーションが使用可能なセッションが見つからなかったことを示すものを返すことと、を行うよう構成される請求項９に記載のサーバデバイス。
【請求項１１】
少なくともひとつのプロセッサを含むサーバデバイスによって行われる方法であって、  ウェブアプリケーションのサーバ側部分を実行することと、
前記ウェブアプリケーションの第１クライアント側部分を有する第１クライアントアプリケーションであって第１クライアントデバイスによって実行される第１クライアントアプリケーションから受けた第１アクセス要求に応じて、前記第１クライアントアプリケーションに、前記ウェブアプリケーションの前記サーバ側部分によって提供されるアプリケーションデータにアクセスする前にサインオンプロセスを実行させることであって、前記第１クライアントアプリケーションがブラウザアプリケーションである、実行させることと、
前記行われるサインオンプロセスに関連して、第１セッションを生成することであって、後に前記第１クライアントアプリケーションに前記第１セッションを用いて前記アプリケーションデータへのアクセスが提供される、生成することと、
前記ウェブアプリケーションの第２クライアント側部分を有する第２クライアントアプリケーションであって第１クライアントデバイスによって実行される第２クライアントアプリケーションから第２要求が受け付けられた場合、前記第２要求に含まれる少なくともひとつの識別子と前記第２要求に関連付けられたブラウザタイプとを用いて、前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能か否かを判定することであって、前記第２クライアントアプリケーションがネイティブアプリケーションである、判定することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能であると判定された場合、前記第２クライアントアプリケーションに、前記第１セッションを用いた前記アプリケーションデータへのアクセスを提供することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能でないと判定された場合、前記第２クライアントアプリケーションに、前記アプリケーションデータにアクセスする前にサインオンプロセスを実行させ、前記第２クライアントアプリケーションが前記サインオンプロセスを実行した後に、前記第２クライアントアプリケーションによって行われた前記サインオンプロセスに関連して生成された第２セッションを用いて前記第２クライアントアプリケーションに前記アプリケーションデータへのアクセスを提供することと、
他のクライアントデバイスで実行される、前記第１クライアントアプリケーションまたは前記第２クライアントアプリケーションのいずれかのインスタンスによるサインオンに関連して、第３セッションを生成することであって、前記他のデバイスで実行される該インスタンスに前記第３セッションを用いた前記アプリケーションデータへのアクセスを後に提供する、生成することと、
前記第３セッションを生成することに応じて、前記第１セッションを不活性化し、前記第１クライアントデバイスで実行される前記第１クライアントアプリケーションおよび前記第２クライアントアプリケーションによる前記アプリケーションデータへのアクセスを防ぐことと、を含む方法。
【請求項１２】
それに保持されるプログラムインストラクションを有する非一時的コンピュータ可読保持媒体であって、前記プログラムインストラクションはサーバデバイスのコンピュータによって実行された場合、前記サーバデバイスに、
ウェブアプリケーションのサーバ側部分を実行することと、
前記ウェブアプリケーションの第１クライアント側部分を有する第１クライアントアプリケーションであって第１クライアントデバイスによって実行される第１クライアントアプリケーションから受けた第１アクセス要求に応じて、前記第１クライアントアプリケーションに、前記ウェブアプリケーションの前記サーバ側部分によって提供されるアプリケーションデータにアクセスする前にサインオンプロセスを実行させることであって、前記第１クライアントアプリケーションがブラウザアプリケーションである、実行させることと、
行われる前記サインオンプロセスに関連して、第１セッションを生成することであって、後に前記第１クライアントアプリケーションに前記第１セッションを用いて前記アプリケーションデータへのアクセスが提供される、生成することと、
前記ウェブアプリケーションの第２クライアント側部分を有する第２クライアントアプリケーションであって第１クライアントデバイスによって実行される第２クライアントアプリケーションから第２要求が受け付けられた場合、前記第２要求に含まれる少なくともひとつの識別子と前記第２要求に関連付けられたブラウザタイプとを用いて、前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能か否かを判定することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能であると判定された場合、前記第２クライアントアプリケーションに、前記第１セッションを用いた前記アプリケーションデータへのアクセスを提供することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能でないと判定された場合、前記第２クライアントアプリケーションに、前記アプリケーションデータにアクセスする前にサインオンプロセスを実行させ、前記第２クライアントアプリケーションが前記サインオンプロセスを実行した後に、前記第２クライアントアプリケーションによって行われた前記サインオンプロセスに関連して生成された第２セッションを用いて前記第２クライアントアプリケーションに前記アプリケーションデータへのアクセスを提供することと、
他のクライアントデバイスで実行される、前記第１クライアントアプリケーションまたは前記第２クライアントアプリケーションのいずれかのインスタンスによるサインオンに関連して、第３セッションを生成することであって、前記他のデバイスで実行される該インスタンスに前記第３セッションを用いた前記アプリケーションデータへのアクセスを後に提供する、生成することと、
前記第３セッションを生成することに応じて、前記第１セッションを不活性化し、前記第１クライアントデバイスで実行される前記第１クライアントアプリケーションおよび前記第２クライアントアプリケーションによる前記アプリケーションデータへのアクセスを防ぐことと、を含む動作を行わせる非一時的コンピュータ可読保持媒体。
【請求項１３】
少なくともひとつのハードウエアプロセッサを含むクライアントデバイスであって、前記少なくともひとつのハードウエアプロセッサは、ウェブアプリケーションの第１クライアント側部分を提供するブラウザアプリケーションである第１クライアントアプリケーションと前記ウェブアプリケーションの第２クライアント側部分を提供するネイティブアプリケーションである第２クライアントアプリケーションとを実行するよう構成され、前記少なくともひとつのハードウエアプロセッサは、
前記ウェブアプリケーションのサーバ側部分へ第１要求を送信した前記第１クライアントアプリケーションが、前記ウェブアプリケーションの前記サーバ側部分へのサインオンを行い、行われた前記サインオンの後に、行われた前記サインオンに関連して生成された第１セッションを用いて前記ウェブアプリケーションの前記サーバ側部分からアプリケーションデータにアクセスすることと、
前記第２クライアントアプリケーションがサーバデバイスへ、前記ウェブアプリケーションの前記サーバ側部分と通信するために、前記第２クライアントアプリケーションによって用いられるひとつ以上の候補ブラウザコントロールのうちの選択されたひとつを含む第２要求を送信することと、
送信された前記第２要求に対して受信された応答に基づいて、前記第２クライアントアプリケーションが、前記ウェブアプリケーションの前記サーバ側部分のアプリケーションデータにアクセスするのか、または、前記第２要求の別のインスタンスを送信するのか、を判定することと、を含む動作を行うよう構成され、
前記ウェブアプリケーションの前記サーバ側部分は、
前記第２クライアントアプリケーションから前記第２要求が受け付けられた場合、前記第２要求に含まれる少なくともひとつの識別子と前記第２要求に関連付けられたブラウザタイプとを用いて、前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能か否かを判定することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能であると判定された場合、前記第２クライアントアプリケーションに、前記第１セッションを用いた前記アプリケーションデータへのアクセスを提供することと、
前記第２クライアントアプリケーションが前記アプリケーションデータにアクセスするのに前記第１セッションを使用可能でないと判定された場合、前記第２クライアントアプリケーションに、前記アプリケーションデータにアクセスする前にサインオンプロセスを実行させ、前記第２クライアントアプリケーションが前記サインオンプロセスを実行した後に、前記第２クライアントアプリケーションによって行われた前記サインオンプロセスに関連して生成された第２セッションを用いて前記第２クライアントアプリケーションに前記アプリケーションデータへのアクセスを提供することと、
他のクライアントデバイスで実行される、前記第１クライアントアプリケーションまたは前記第２クライアントアプリケーションのいずれかのインスタンスによるサインオンに関連して、第３セッションを生成することであって、前記他のクライアントデバイスで実行される該インスタンスに前記第３セッションを用いた前記アプリケーションデータへのアクセスを後に提供する、生成することと、
前記第３セッションを生成することに応じて、前記第１セッションを不活性化し、前記クライアントデバイスで実行される前記第１クライアントアプリケーションおよび前記第２クライアントアプリケーションによる前記アプリケーションデータへのアクセスを防ぐことと、を行うよう構成されるクライアントデバイス。
【請求項１４】
（ａ）前記第１クライアントアプリケーションのブラウザタイプが前記ひとつ以上の候補ブラウザコントロールのうちの選択された前記候補ブラウザコントロールのブラウザタイプと同じである場合、前記受信された応答は前記第１セッションの存在を示し、（ｂ）前記第１クライアントアプリケーションの前記ブラウザタイプが前記ひとつ以上の候補ブラウザコントロールのうちの選択された前記候補ブラウザコントロールの前記ブラウザタイプと異なる場合、前記受信された応答は前記第２クライアントアプリケーションが使用可能な既存のセッションの発見に失敗したことを表す請求項１３に記載のクライアントデバイス。
【請求項１５】
前記少なくともひとつのハードウエアプロセッサはさらに
前記受信された応答が前記第１セッションの前記存在を示し、かつ、前記ひとつ以上の候補ブラウザコントロールのうちの選択された前記候補ブラウザコントロールのブラウザタイプが所定のブラウザタイプとは異なる場合、前記応答に含まれる第１セッション識別子を取得することと、
前記所定のブラウザタイプのブラウザコントロールをインスタンス化することと、
前記所定のブラウザタイプの前記インスタンス化されたブラウザコントロールと前記第１セッション識別子とを用いて前記アプリケーションデータにアクセスすることと、を行うよう構成される請求項１４に記載のクライアントデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願へのクロスリファレンス
本願は、２０１５年１１月６日に出願された米国特許仮出願第62/252,295号の優先権の利益を享受する。その出願の開示全体は、参照により本明細書に組み入れられる。
【背景技術】
【０００２】
ウェブアプリケーションの展開は、多数のユーザが、ひとつ以上のウェブアプリケーションおよび／またはウェブアプリケーションによって制御されるリソースにアクセスすることを可能とする。例えば、大企業はその企業ネットワークや他のインターネットアクセス可能コンピュータの中にあるひとつ以上のサーバに企業ソフトウエアアプリケーション（「ウェブアプリケーション」）を展開し、全ての従業員および／またはクライアントがウェブを介してそのアプリケーションにアクセスすることを可能にしてもよい。そのようなアプリケーションのウェブアクセス性は、いつでも、また、クライアントデバイスがネットワーク接続を有する場所ならどこからでも、そのアプリケーションにアクセスすることができる能力を従業員および／またはクライアントに提供する。
【０００３】
また、ウェブアプリケーションは、異なるタイプの情報処理デバイスを用いてアクセス可能である。同じユーザが異なる情報処理デバイスを用いてウェブアプリケーションにアクセスする場合がある。例えば、ユーザは彼のスマートフォンを用いてウェブアプリケーションへのアクセスを試みる一方、同時に、デスクトップコンピュータを介してそのウェブアプリケーションにアクセスするかもしれない。ウェブアプリケーションは同じユーザによって二つの異なるブラウザ（例えば、グーグル社のクロームや、マイクロソフト社のインターネットエクスプローラ）を用いてアクセスされる場合がある。
【０００４】
したがって、ウェブアプリケーションの展開は、アクセス性および可用性に関する数多くの利点を提供する。同じユーザが複数のデバイスやブラウザおよび／または他のクライアントアプリケーションを用いて同時にウェブアプリケーションにアクセスすることができる能力は、ユーザとウェブアプリケーションとの相互作用の性質、例えば効率および利便性、を改善することができる。
【０００５】
しかしながら、ソフトウエア技術およびネットワーク技術の発展により提供されるウェブアプリケーションの利便性の増大は、それが適切に制御されない場合、アクセス権限の誤用を生じさせうる。例えば、プロバイダがユーザごとにライセンス料やアクセス料を課金するウェブアプリケーションの場合、あるユーザは、そのウェブアプリケーションにアクセスするのに他のユーザの権限を用いることで、料金全体を支払うことを避けようとし、したがって潜在的にプロバイダからある程度の収入を奪うことが考えられる。アクセス権限のそのような誤用は、また、料金を支払っているユーザが利用可能なシステム容量に悪影響を与える可能性があり、および／または、ユーザが体験するシステム性能に悪影響を与える可能性がある。
【０００６】
したがって、増大する商用的価値を有するより多くの企業ソフトウエアアプリケーションがウェブアプリケーションとして展開されている状況において、そのようなアプリケーションのアクセス性を改善し、アプリケーションプロバイダのリソースの保護を改善するための技術が必要とされている。
著作権表示
【０００７】
本特許書類の開示の一部は著作権保護の対象となるものを含む。著作権者は、任意の者による本特許書類または本特許開示の特許商標庁にて現れる態様での複製について反対することはないが、そうでない場合は何であれ全ての著作権を留保する。
【発明の概要】
【０００８】
開示される技術は、ウェブアプリケーションおよびそのようなアプリケーションによって制御されるリソースへのアクセスを制御することに関する。開示される技術はシングルサインオン能力を提供する。そこでは、クライアントアプリケーションからウェブアプリケーションに既にサインオンしているユーザは、後に彼／彼女が同じまたは別のクライアントアプリケーションからウェブアプリケーションにアクセスする必要がある場合に、再度のサインオンを要求されないであろう。シングルサインオン能力は、ユーザがサインオンプロセスを行わなければならない回数を低減することにより、ウェブアプリケーションに関連付けられたユーザ体験を改善することができる。開示される技術は、サーバに複数ログイン防止能力を提供する。複数ログイン防止を用いることで、潜在的に疑わしいサインオンシナリオを検出し、疑わしいサインオンが検出された場合にはひとつ以上のアクティブなセッションを無効化することができる。
【０００９】
本概要は、発明の詳細な説明で以下にさらに説明される単純化された概念の選択を紹介するために提供される。本概要は、クレームに係る主題の主要な特徴または不可欠な特徴を識別することと、或いは、クレームに係る主題の範囲を限定するために用いられることとのいずれをも意図するものではなく、むしろ本概要は本書面で説明される主題の概観を提供することを意図するものである。したがって、上述した特徴は例示にすぎず、本明細書で説明される主題の他の特徴、態様、および利点は、後述する詳細な説明、図面、および請求項から明らかになるであろうということは理解されたい。
【図面の簡単な説明】
【００１０】
【図１】ある例示的な実施の形態に係る、ひとつ以上のクライアントデバイスと、ウェブアプリケーションを実行するひとつ以上のサーバデバイスと、を有する計算環境を示す。
【００１１】
【図２】ある例示的な実施の形態に係る、図１のひとつ以上のサーバによって維持されてもよいデータテーブルのうちのいくつかを示す。
【００１２】
【図３】ある例示的な実施の形態に係る、シングルサインオン動作が行われる場合の、クライアントデバイスとサーバデバイスとの間のやりとりを示すフロー図を示す。
【００１３】
【図４】ある例示的な実施の形態に係る、複数ログイン防止動作が行われる場合の、クライアントデバイスとサーバデバイスとの間のやりとりを示すフロー図を示す。
【００１４】
【図５Ａ】図５（図５Ａおよび図５Ｂ）は、ある例示的な実施の形態に係る、ユーザがサインインする場合の、クライアントデバイスとサーバデバイスとの間のやりとりを示すフロー図を示す。
【図５Ｂ】図５（図５Ａおよび図５Ｂ）は、ある例示的な実施の形態に係る、ユーザがサインインする場合の、クライアントデバイスとサーバデバイスとの間のやりとりを示すフロー図を示す。
【００１５】
【図６】ある例示的な実施の形態に係る、シングルサインオン動作の後に複数ログイン防止が続く場合の、クライアントデバイスとサーバデバイスとの間のやりとりを示すフロー図を示す。
【００１６】
【図７】ある例示的な実施の形態に係る、ネイティブアプリケーションが起動時にウェブアプリケーションにサインオンするために用いるプロセスを示す。
【００１７】
【図８】ある例示的な実施の形態に係る、クライアントのデータ要求についてのやりとりのフローチャートを示す。
【００１８】
【図９】ある例示的な実施の形態に係る、クライアントデバイス上のネイティブアプリケーションの上に重ね合わされて提示されているサインオンウインドウを示す。
【００１９】
【図１０】ある例示的な実施の形態に係る、クライアントデバイスおよび／またはサーバを実装可能な計算環境を模式的に示す。
【発明を実施するための形態】
【００２０】
本明細書で説明される技術はとりわけひとつ以上のウェブアプリケーションへのユーザアクセスを制御することに関する。ある例示的な実施の形態はシングルサインオン（ＳＳＯ）能力を提供し、ＳＳＯ能力は、ログインプロセスを一度実行すれば、同じアプリケーションや関連アプリケーションの他の側面への後のアクセスをより少ない認証で、またはさらにサインオンアクションを行う必要なしに、行うことができるという利便性をユーザに提供する。ある例示的な実施の形態は複数ログイン防止（ＭＬＰ）能力を含んでもよく、ＭＬＰ能力は、ウェブアプリケーションにより生成される収入の流れを保護することの助けとなり、また、ウェブアプリケーションを実行するサーバの処理容量を保護することの助けとなりうる。ＭＬＰ能力を用いることで、例えば、同時に複数のエンドポイントからあるウェブアプリケーションにアクセスするために同じ識別子／資格証明（例えば、ユーザＩＤや特定ユーザの資格証明）が用いられたときを検出し、ウェブアプリケーションへのアクセス能力の誤用を低減するためにひとつ以上のセッションをキャンセルするよう動作することができる。ある実施の形態により提供されるＳＳＯ能力および／またはＭＬＰ能力は、任意のタイプのウェブアプリケーションにおいて効率やアクセススピードやユーザ利便性を向上させるが、多数のアプリケーションに頻繁にかつ利便性高くアクセスすることができる能力をユーザに提供するシングルページアプリケーション（ＳＰＡ）フレームワークを伴うウェブアプリケーションにおいてさらに有益でありうる。
【００２１】
図１は、ある実施の形態に係る、ひとつ以上のサーバ１０２（本明細書では「サーバインフラストラクチャ」とも称される）とひとつ以上のクライアント１０４とを含む非限定的計算環境１００を示す。ひとつ以上のサーバ１０２はクライアント１０４およびひとつ以上の外部サーバと通信し、その結果、クライアント１０４のユーザはひとつ以上のサーバ１０２上で実行されるウェブアプリケーション１１２にアクセスすることができる。また、サーバ１０２はドキュメント管理システム１０８と通信してもよい。サーバ１０２、クライアント１０４、外部サーバ１０６、およびドキュメント管理システム１０８間の通信はインターネットや他の任意の通信ネットワークを介するものであってもよい。
【００２２】
サーバ１０２は、ネットワークを介して互いに通信可能に接続されるひとつ以上の物理的なサーバコンピュータに実装されてもよい。ひとつ以上の物理的なサーバコンピュータは地理的に同じ場所にあってもよいし、分散していてもよい。サーバ１０２は、データベース管理システム１１０と、ひとつ以上のサーバ側ウェブアプリケーション１１２（例えば、１１２ａおよび１１２ｂ）と、コアサービスアプリケーション１１４と、を含んでもよい。
【００２３】
ウェブサーバ、アプリケーションサーバおよびデータベースからなる三層モデルにしたがって各ウェブアプリケーション１１２を設計し、動作させてもよい。従来のシステムと同様に、各ウェブアプリケーション１１２のウェブサーバは、ＨＴＴＰを介して、およびＪＳＯＮ、ＨＴＭＬ、ＸＭＬ、ＪａｖａＳｃｒｉｐｔ、Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ（ＣＳＳ）などの他のプロトコルを介して、外部エンティティと通信する能力を含む。各ウェブアプリケーション１１２のアプリケーションサーバはアプリケーションの処理ロジックを提供し、各ウェブアプリケーション１１２のデータベースはデータ格納およびデータ読み出しを提供する。
【００２４】
ウェブアプリケーション１１２は、ユーザ認証を管理するためにコアサービスアプリケーション１１４とやりとりし、クライアント１０４から入力を受信しかつクライアント１０４に送信するためにクライアント１０４（例えば１０４ａおよび１０４ｂ）とやりとりし、クライアント１０４上で実行されている要求元のクライアントアプリケーションに提供されるべき情報を取得するためにデータベース管理システム１１０および／または外部サーバ１０６とやりとりしてもよい。ある実施の形態では、要求元のクライアントに提供される情報のいくらかまたは全ては、ウェブアプリケーションそのものおよび／または同じひとつ以上のサーバ１０２がローカルで実行している他のウェブアプリケーションによって生成されてもよい。
【００２５】
コアサービスアプリケーション１１４は上述の三層モデルにしたがい設計され動作してもよく、また、ウェブアプリケーション１１２によって共通に用いられるひとつ以上のサービスを提供してもよい。コアサービスアプリケーション１１４によって提供されてもよい例示的なサービスは、ユーザの認証、セッションの管理等を含む。
【００２６】
ある実施の形態では、コアサービスアプリケーション１１４はまた、外部サーバ１０６に対してセッション管理を提供することができる。例えば、二つ以上のウェブアプリケーション１１２が特定の外部サーバ１０６からデータを取得するユースケースでは、コアサービスアプリケーション１１４は、サーバ１０２と外部サーバ１０６との間のセッションを、クライアント１０４とサーバ１０２との間の対応する他のセッションにしたがって管理する能力を提供してもよい。各外部サーバはサーバ１０２で維持されているセッションテーブルの一部のコピー１１９を保持してもよい。
【００２７】
ウェブアプリケーション１１２は、クライアント１０４から要求を受信し、データベース１１０および／または外部サーバ１０６からの情報の処理を行いおよび／または該情報を取得し、該処理および／または取得されたデータからの結果でクライアント１０４に応答するよう動作する。ウェブアプリケーション１１２はユーザおよびユーザセッションを管理するためにコアサービス１１４を用いてもよい。
【００２８】
ウェブアプリケーションは、ひとつ以上のクライアント側コンポーネントと、ひとつ以上のサーバ側コンポーネントと、を備えてもよい。ウェブアプリケーションのクライアント側コンポーネントは、ユーザインタフェースデバイス上での情報の提供（例えば、表示）を行うことによるユーザインタフェースの取り扱いと、ユーザ入力の受け付けと、等を提供するよう動作してもよい。サーバ側コンポーネントは、認証、サービス測定、受け付けたユーザ入力にしたがいユーザに提供されるべき情報の生成または取得、を提供してもよい。
【００２９】
実施の形態はウェブアプリケーションの特定のタイプに限定されない。実施の形態で使用可能なウェブアプリケーションは、シングルページアプリケーション（ＳＰＡ）モデルまたは任意の非ＳＰＡモデルもしくはそれらの組み合わせにしたがい設計されたものを含んでもよい。
【００３０】
ＳＰＡは、単一のウェブページ内で動作するウェブアプリケーションである。ＳＰＡでは、単一のウェブページのコンテンツはウェブサーバによってウェブブラウザに送信され、そのページはロード／描画され、これは従来のウェブアプリケーションについて上述した通りである。その後、ユーザがアプリケーション内の異なるコンテンツを見ることを希望する場合、ユーザはハイパーリンクをクリックするかページに入力する。しかしながら、非ＳＰＡウェブアプリケーションでそうであるように異なるページに導く代わりに、同じページがロードされ続け、そのコンテンツが動的に更新される。この動的更新は異なる複数の方法で達成可能である。それは、例えば、ウェブブラウザが新たなコンテンツのバックグラウンドＨＴＴＰフェッチを行うことや、（ＪａｖａＳｃｒｉｐｔコードを介して）ページのドキュメントオブジェクトモデル（ＤＯＭ）を更新することや、および／または他の技術を含んでもよい。
【００３１】
Angular JS（登録商標）はＳＰＡを生成するために使用されるウェブアプリケーションフレームワークである。ウェブブラウザにおいて、Angular JS JavaScriptライブラリがロードされ、Angular JS JavaScriptおよび他のAngularJSコーディングコンストラクトと共に埋め込まれたＨＴＭＬテンプレートを解釈する。その結果、得られるページはテンプレートで規定される通りに動作する。また、ＳＰＡアプリケーションのために他のフレームワーク（例えば、Backbone.js、Ember.js、およびReact）を用いてもよい。
【００３２】
ある非ＳＰＡウェブアプリケーションモデルでは、ウェブアプリケーションは異なる複数のウェブページを含む。アプリケーション内の特定のウェブページを描画するために、以下のやりとりの集合が行われる。クライアントデバイスのウェブブラウザが（ハイパーテキストトランスファプロトコル（ＨＴＴＰ）メッセージを用いて）ウェブサーバに特定のウェブページを要求し、それに応答して、ウェブサーバが（ＨＴＴＰを用いて）ページのコードをウェブブラウザに返信し、そのコードが例えばＨＴＭＬ、ＪａｖａＳｃｒｉｐｔ（登録商標）、およびカスケーディングスタイルシート（ＣＳＳ）コードを含み、ウェブブラウザが次いでコードをロードしてページを描画し、それによりユーザがページを見て相互作用できるようにする。ユーザが後にアプリケーション内の異なるコンテンツを見ることを希望する場合、ユーザはアプリケーション内の異なるページを指定するハイパーリンクをクリックするかそれを指定する入力をページに対して行い、次いで、その異なるページに対して上述の要求／応答／ロード／描画手順が行われる。
【００３３】
データベース管理システム１１０（本明細書において単にデータベースと称される場合がある）は市販のＤＢＭＳや他のデータ記録管理システムであってもよい。単一のＤＢＭＳとして示されているが、ＤＭＢＳ１１０はひとつ以上の別個のデータベースを含んでもよい。実施の形態はデータベース管理システムのタイプに限定されない。
【００３４】
クライアント１０４ａおよび１０４ｂは同じまたは異なるクライアントアプリケーションを実行するよう構成されてもよい。図１に示される例示的な実施の形態では、第１クライアント１０４ａはウェブブラウザＡ１１６とウェブブラウザＢ１１７とを含む。クライアント１０４ａはまた、ネイティブアプリケーションであるクライアント側アプリケーション１２０ａをそれに保持する形で有してもよい。ブラウザＡ１１６を用いてウェブアプリケーション１１２にアクセスする場合、ウェブアプリケーション１１２のクライアント側コード１１８はブラウザＡ１１６内で実行される。同じ例示的な実施の形態では、第２クライアント１０４ｂは、ネイティブアプリケーションであってもよいアプリケーション１２０ｂを実行するよう構成される。クライアント１０４ｂはネイティブアプリケーション１２０ｂに加えてブラウザ（例えば、ブラウザＡやブラウザＣなどとして示される）を有してもよい。クライアント側コード１１８およびアプリケーション１２０は、サーバ１０２上の対応するウェブアプリケーションのためのクライアント側処理を実行してもよい。
【００３５】
図１に示されるように、クライアントアプリケーション（例えば、１１６／１１８や１２０ａ／１２０ｂ）がウェブアプリケーション１１２と通信するとき、ウェブアプリケーション１１２はクライアントが要求した任意の情報をひとつ以上の外部サーバ１０６から取得し、クライアントアプリケーションに提供してもよい。ある実施の形態では、要求元のクライアント１０４に提供される情報のいくらかまたは全てはサーバ１０２によってローカルで生成されてもよい。
【００３６】
クライアント１０４は、パーソナルコンピュータ、モバイルコンピュータ、タブレット、スマートフォン、および他の電子デバイスを含んでもよい。ある例示的な実施の形態では、少なくともディスプレイとユーザ入力のための入力デバイスとサーバデバイスとの通信のための通信インタフェースとを含む任意の電子計算デバイスはクライアントデバイスとして動作しうる。
【００３７】
外部サーバ１０６（例えば、１０６ａ、１０６ｂ、１０６ｃ）は、ひとつ以上のサーバ１０２を制御するエンティティとは異なるエンティティ（例えば、管理エンティティ）によって制御されるひとつ以上のサーバを含んでもよい。例えば、外部サーバ１０６のうちのひとつ以上は、サービスプロバイダまたはベンダによって管理されてもよい。サービスプロバイダまたはベンダは、所定の（例えば、企業とベンダとによって以前に合意された）サービス明細の下、クライアントデバイス１０４のユーザに種々のアプリケーションデータへのアクセスおよび／または解析を提供する。サービス明細は、外部サーバへのアクセスのユーザ数、情報のタイプおよび量、利用期間、利用頻度等のうちのひとつ以上い基づくものであってもよい。
【００３８】
図１に示されるソフトウエアモジュールがハードウエアコンポーネント（例えば、プロセッサやメモリ）によって保持され実行されることは理解されるべきであり、さらに、ソフトウエアモジュールが任意の動作を行うと本明細書で説明するときはいつでも、それは説明を簡単にするためにのみなされるものであって、実際は、その動作はソフトウエアモジュールを構成するインストラクションおよびデータにしたがい下層のハードウエアが行うものであることは理解されるべきである。本明細書で説明されるフィーチャを実装するために用いられてもよい例示的なハードウエアコンポーネントに関するさらなる詳細は、本明細書の他の場所と共に、図１０を参照して後に提供される。
【００３９】
例示的な実装では、計算環境１００はナスダックコーポレイションなどの企業に関連付けられてもよい。例示的なウェブアプリケーション１１２はリアルタイムマーケット解析アプリケーションとクライアントアカウント状態アプリケーションとを含んでもよい。ウェブアプリケーション１１２のユーザは、金融アナリストや企業の他の従業員を含んでもよい。コアサービスアプリケーション１１４は、管理（例えば、ユーザアカウント生成、資格管理等）、認証（例えば、ユーザが所定のサービスにアクセスするためのセッションの生成／管理等）、ユーザ承認（例えば、ユーザが所定のサービスやフィーチャにアクセスする権限があるかのチェック等）、などの共通サービスを提供してもよい。サーバ１０２は、ウェブアプリケーション１１２、コアサービスアプリケーション１１４および関連ソフトウエアを実行するために企業が用いるひとつ以上のサーバおよび関連インフラストラクチャを表してもよい。ドキュメント管理システム１０８は、企業のユーザにサービスを届けるためにウェブアプリケーションおよび／またはコアサービスアプリケーションと通信する顧客関係管理アプリケーションを含んでもよい。
【００４０】
この例示的な実装では、外部サーバ１０６はそれぞれ、対応するアプリケーションデータベンダによって運用されてもよい。各ベンダは、ある種のサービス明細（例えば、データタイプや利用量やユーザ数などに基づく合意された価格）の下、ナスダックコーポレイションなどのエンティティにリアルタイム金融マーケット関連情報などのアプリケーションデータを提供してもよい。
【００４１】
アナリストがクライアント１０４ａを用いてサーバ１０２上のリアルタイムマーケット解析アプリケーションにアクセスすると、ＳＰＡがクライアントデバイスに表示され、ベンダ（例えば、外部サーバ１０６を運用するもの）および／または企業の内部アナリスト等からの種々のリアルタイムまたは付加価値付き情報が、表示されているＳＰＡのひとつ以上の部分に表示されうる。
【００４２】
外部サーバ１０６（例えば、ベンダ）は、要求された情報を提供しそのサービスにアクセスしているユーザを特定することができるが、例えば企業とベンダとの間で合意されたサービス明細で規定される利用条件にユーザが従うことを確証するために、企業（「ベンダオブレコード」として）に依存してもよい。例えば、特定のベンダとの合意に基づいて、コアサービスアプリケーションを用いることで、その特定のベンダにアクセスし／その特定のベンダからデータを取得するための資格（アクセス可能なデータのタイプ／量の指定やもしあれば他の制限）をユーザおよび／またはウェブアプリケーションに割り当てることができる。コアサービス１１４はベンダのデータに対する正当な資格を有する対応するユーザについて、そのベンダとのセッションを確立してもよい。コアサービス１１４は、各ベンダにおいて、セッションテーブル（例えば、１１６）をもたらすか維持してもよい。例えばサーバ１０２上のウェブアプリケーションのうちのひとつを通じて、クライアントデバイス１１４のユーザがベンダにデータを要求する場合、ある実施の形態では、ベンダはそのセッションテーブルのコピーをチェックし、要求元のユーザの資格が正当であるかの検証をコアサービス１１４に要求し、資格が正当であれば要求されたデータを提供するようにしてもよい。
【００４３】
図２は、ある例示的な実施の形態に係る、コアサービスアプリケーション１１４によって維持されてもよくおよび／またはコアサービスアプリケーション１１４がアクセス可能なデータテーブル２００の例示的な集合を示す。「テーブル」と称されてはいるが、図２に関連して議論されるデータは、コアサービスアプリケーション１１４および／またはデータを利用するよう構成される他のアプリケーションがアクセス可能な任意の形態やデータ構造で保持されてもよい。
【００４４】
ユーザ認証情報２０２はユーザ認証情報のテーブルを含んでもよい。このテーブルは、例えばウェブアプリケーションのうちのひとつ以上へのサインオン中にユーザを認証するためにコアサービス１１４によってアクセスされる。ユーザ認証情報２０２において、各ユーザについて、ユーザＩＤ、パスワード、ユーザ特定クッキー、およびユーザに関連付けられた資格などのうちのいずれかなどの特定情報が維持されてもよい。
【００４５】
ユーザセッション情報２０４は、クライアントデバイス１０４のユーザなどのユーザがサーバ１０２上のウェブアプリケーションと現在アクティブなセッションにより通信するときのその現在アクティブなセッションの記録を含む。ユーザセッション情報２０４は、各行がアクティブなセッションを表すテーブルの形態であってもよい。ある実施の形態では、非アクティブセッション（例えば、最近不活性化された／キャンセルされたセッション）もまたテーブルにあってもよい。ユーザセッション情報テーブル２０４は、各セッションについて、ユーザＩＤ、セッションを利用するウェブアプリケーション、クライアント、認証セッション識別子および／またはひとつ以上のクッキーなどのフィールド／列を含んでもよい。テーブルはまた、セッションの開始時刻および終了時刻と現在の状態とを含んでもよい。状態は、例えば、セッションが断絶されたかまたは現在アクティブであるか、および断絶されているのであれば断絶の理由（例えば、ＭＬＰによる断絶）、を示してもよい。
【００４６】
外部サーバセッション情報２０６は、対応する外部サーバ１０６に関するユーザセッションを保持する。ある実施の形態では、外部サーバセッション情報２０６は、外部サーバ１０６ごとのデータ構造で維持されてもよい。ある実施の形態では、各テーブル２０６を対応する外部サーバ１０６に提供することができる。この場合、要求が与えられたときに、外部サーバが、要求に関連付けられた許可および／または資格をローカルでチェックすることができる。ある実施の形態では、サーバデバイス１０２と外部サーバ１０６との間のセッションはユーザセッション情報２０４に基づくものであってもよく、別個のテーブルは不要でありうる。
【００４７】
資格情報２０８はウェブアプリケーションへのアクセスに関連付けられた資格に関する情報を含む。上述の通り、資格は、ユーザまたはユーザのグループに対して、ひとつ以上の外部サーバ（または他のリソース）へのアクセスの範囲を指定する。例えば、資格情報２０８は、各ユーザまたはユーザの各グループがアクセスを有する外部サーバ（ベンダ）およびデータのタイプを指定してもよい。資格はまた、同じユーザによる、複数のクライアントアプリケーションによる同時アクセス（例えば、ブラウザおよびネイティブアプリケーションを介した同時アクセス）が特定のウェブアプリケーションについて許されているかを指定してもよい。
【００４８】
図３は、ある例示的な実施の形態に係る、クライアント１０４ａのユーザについてのシングルサインオンプロセス３００で生じうる、クライアント１０４ａとサーバ１０２との間のやりとりを示すフローチャートである。
【００４９】
プロセス３００は、ユーザがクライアント１０４ａを用いてブラウザを、サーバ１０２で実行されているウェブアプリケーションへと至らせたときに始まってもよい。例えば、ユーザはウェブブラウザに、ウェブアプリケーションにアクセスするための所定のＵＲＬ（uniform resource locator）を入力してもよい。あるいはまた、ブラウザは、ユーザがウェブページに表示されるリンクを「クリック」したときにウェブアプリケーションへと導かれてもよい。ウェブアプリケーションへの最初の到着のときに出会うウェブアプリケーションのウェブページは「ランディングページ」と称される。
【００５０】
ウェブブラウザ（例えば、インターネットエクスプローラブラウザ３１２）を用いてウェブアプリケーションのランディングページに辿り着いた後、動作３０２において、ユーザはウェブアプリケーション（例えば、３２４）にサインオンされる（「ログイン」とも称される）。サインオンプロセスは図５との関連で後に詳述される。ユーザのサインオンプロセスが成功すると、セッションが生成され、クッキーが生成される。セッションの生成は、例えばユーザセッション情報２０４などのセッションテーブルへのエントリの追加を含む。クッキーは生成されたセッションについて一意であってもよく、従来技術を用いて生成された文字列であってもよい。クッキーはサーバ１０２によってクライアント１０４ａに返され、将来の使用のためにクライアント１０４ａに保存される。ウェブアプリケーション３２４に対するクライアント１０４ａを用いたユーザによる以後の要求（例えば、ＨＴＴＰ要求）はクッキーを含み、サーバ１０２は受信したクッキーを用いて関連要求の追跡を行ってもよい。この時点で、ユーザはウェブアプリケーションに適切にサインオンし、ブラウザコンテンツにおいて動作しているウェブアプリケーションのクライアント側部分はウェブアプリケーションのサーバ側部分とメッセージおよび／またはデータを交換することができる。
【００５１】
図３において、動作３０２は、ブラウザＡ３１２のフローレーンおよびウェブアプリケーション３２４のフローレーンおよびコアサービス３２６のフローレーンを実線の円でマークし、ブラウザＢ３１４のフローレーンおよびアプリケーション３１６のフローレーンが対応する破線の円を有するように、示されている。動作３０２などの動作におけるフローレーン内の実線の円は、そのフローレーンに対応するシステムコンポーネントがこの動作に能動的に参加している（例えば、他のシステムコンポーネントとメッセージを交換する）ことを示す。さらに、動作はそれが生じる時間的な順番にしたがいページの上から下へ並べられるのが一般的ではあるが、ある実施の形態では、動作のうちのひとつ以上は同時に生じてもよい。ある実施の形態は、図面に示されていない追加的なひとつ以上の動作を含んでもよく、および／または示されているひとつ以上の動作を含まなくてもよい。所定の動作においてシステムコンポーネントレベルのアクティビティを示すこの態様は、図３−６で用いられる。
【００５２】
動作３０４において、ネイティブアプリケーション３１６などの第２クライアントアプリケーション（例えば、３１６）がクライアント１０４ａで起動される。ネイティブアプリケーション３１６はサーバ１０２上のウェブアプリケーション３２４にアクセスするアプリケーションである。ある例示的な実施の形態によると、ネイティブアプリケーションは、動作中にサーバ１０２上のウェブアプリケーション３２４からデータを取得するおよび／または該ウェブアプリケーション３２４とデータを交換するスプレッドシートアプリケーション（例えば、マイクロソフト社のエクセル）である。
【００５３】
ネイティブアプリケーション３１６は、例えばウェブアプリケーション３２４に関連付けられたウェブサーバとＨＴＴＰメッセージを交換することにより、ＨＴＴＰなどを介してサーバ１０２と通信するために、ひとつ以上のブラウザコントローラのうちのいずれかを用いるよう構成されてもよい。ネイティブアプリケーションがひとつ以上のブラウザコントローラを利用可能であってもよい。ブラウザコントローラは、エクセルプログラムなどのアプリケーションが、ウェブを介した制御およびデータ交換のために用いられるＨＴＴＰ、ＪＳＯＮおよび／または他のプロトコルを利用する能力を提供する。例えば、ネイティブアプリケーションは、インターネットエクスプローラ、クローム、ファイヤフォックス、サファリなどのうちのひとつ以上用の、市販のまたは無料で利用可能なブラウザコントローラを組み入れてもよい。ネイティブアプリケーションはまた、ＳＳＯ機能に関連付けられた能力を提供するカスタマイズされたアドインコンポーネント（例えば、３１８）を含んでもよい。例えば、アドイン３１８は、ネイティブアプリケーション３１６内のエクセルスプレッドシートが、ひとつ以上のブラウザコントローラを用いてウェブアプリケーション３２４と相互作用することを可能とする。ある例示的な実施の形態では、カスタムアドイン３１８はマイクロソフトオートメーションやマイクロソフトＣＯＭを用いて生成される。
【００５４】
ネイティブアプリケーション３１６が起動された後、動作３０６において、ネイティブアプリケーションはクライアントにインストールされているブラウザ（例えば、３１２および３１４）のいずれかについて少なくともひとつの既存のセッションがあるか否かを特定する。インストール中および／またはアプリケーション起動中に、クライアントストレージのうち各特定のブラウザについて知られているディレクトリ構成の場所を探すことや所定の設定を探すことなどの技術によって、クライアント上で利用可能なブラウザを、ネイティブアプリケーションに知らせてもよい。代替的にまたは追加的に、ネイティブアプリケーションは、クライアントにインストールされるブラウザのそれぞれについてのブラウザコントロール（例えば、３２０および３２２）を特定し、自動的に組み入れてもよい。実施の形態によると、カスタムアドイン３１８はネイティブアプリケーションによる使用に利用可能なブラウザコントローラを繰り返す。例えば、利用可能なブラウザコントローラのそれぞれについて、設定可能な所定の順序で、またはネイティブアプリケーション３１６によってブラウザコントローラが発見された順序で、ネイティブアプリケーションはブラウザコントローラをインスタンス化し、サーバ１０２にＨＴＴＰ要求を送信する。要求は、ユーザ、クライアントデバイス、ウェブアプリケーション、および現在選択されているブラウザコントロールに対応するブラウザの全てまたは組み合わせを特定してもよい。セッションが既に存在するブラウザタイプが見つかるまで、または、既存のセッションを見出すことなく全てのブラウザタイプが探索されてしまうまで、このプロセスを繰り返す。セッションが既に存在するブラウザタイプを特定することに関するさらなる詳細は図７に関して後述される。
【００５５】
サーバ１０２がクライアント１０４ａから要求を受け付けると、それは受け付けられた要求と共に提供された情報に対応する（例えば、ＨＴＴＰ要求に含まれているクッキー、ユーザ、クライアント、ウェブアプリケーション、およびブラウザのうちのいずれかまたはそれらの組み合わせのうちのいずれかに対応する）アクティブなセッションが存在するか否かを判定する。対応するセッションを特定するためにセッションテーブルを検索することにより、この判定がなされてもよい。例示的な実施の形態では、セッションが確立されるときに生成されるクッキーは、クライアントによって、サーバへの以後のＨＴＴＰ要求のそれぞれにおいて送信され、サーバは受け付けたクッキーを用いることでセッションテーブル内の対応するセッションを一意に特定する。対応するセッションが現在アクティブであると判定された場合、対応するセッションに関連付けられたセッション情報および／またはクッキーがネイティブアプリケーションに返される。
【００５６】
サーバにおいて、受け付けられたＨＴＴＰ要求に対応するセッションが存在しないと判定された場合、サーバはネイティブアプリケーションに、その影響の通知を返す。ある例示的な実施の形態では、例えば、ＨＴＴＰリダイレクト（例えば、「３０２リダイレクト」）メッセージが返される。ネイティブアプリケーションは、前のＨＴＴＰ要求が既存の接続を特定するという結果を生じなかったとの通知を受けると、試行対象のブラウザのリスト内の次のブラウザに関する情報を含む新たなＨＴＴＰ要求を形成する。
【００５７】
ネイティブアプリケーションが利用可能なブラウザコントロールのいずれについても、それに対応する既存のセッションが見つからなかった場合、動作３０８において、サインオンの実行が成功し、新たなセッションおよび関連クッキーが生成される。サインオンは図５に関連して以下に詳述される。
【００５８】
続いて、動作３１０において、ネイティブアプリケーションは、動作３０６において特定された既存のセッションまたは新たに生成されたセッション（動作３０８において生成されたもの）のいずれかを用いて動作する。ネイティブアプリケーションの動作は、ネイティブアプリケーションについて必要なデータを求めるＨＴＴＰ要求を送信することおよびＨＴＴＰ／ＪＳＯＮフォーマットのそのようなデータを受信することを含んでもよい。しかしながら、ネイティブアプリケーションは、ウェブアプリケーションなどのサーバ側アプリケーションと通信するためにＨＴＴＰ／ＪＳＯＮを用いることに限定されない。サーバデバイスがウェブアプリケーションに対するデータ要求を受信すると、セッションの正当性がチェックされてもよい。
【００５９】
図４は、複数ログイン防止（ＭＬＰ）プロセス４００が行われるときに生じる、クライアントデバイス１０４ａ、クライアントデバイス１０４ｂおよびサーバデバイス１０２の間のやりとりを示す。例えば、ユーザがあるクライアントデバイス（例えばクライアントデバイス１０４ａ）から既にログインしてウェブアプリケーション（例えば３２４）にアクセスしている状況で、そのユーザが第２クライアントデバイス（例えばクライアントデバイス１０４ｂ）からサインインして同じウェブアプリケーションにアクセスする場合に、プロセス４００は始まってもよい。
【００６０】
動作４０２は、正当なクッキーを用いる確立されたセッションを介した、クライアントデバイス１０４ａのユーザとサーバデバイス１０２上のウェブアプリケーションとの間の通信を表す。示されるように、クライアントデバイス１０４ａ上のブラウザおよび／またはネイティブアプリケーションのうちのひとつは確立されたセッションを介した通信を行ってもよい。
【００６１】
動作４０２が続いている間のある時点で、動作４０４において、ユーザはクライアントデバイス１０４ｂでサインオンする。例えば、ユーザはクライアントデバイス１０４ｂのネイティブアプリケーションを介してログインしてもよい。
【００６２】
動作４０６において、クライアントデバイス１０４ｂのネイティブアプリケーションは、ＨＴＴＰ要求を送信し、ＪＳＯＮフォーマットのデータを受信することによって、サーバデバイス上のウェブアプリケーションと通信する。上述の通り、要求元のネイティブアプリケーションに要求されたデータを送信する前に、セッションの正当性に対するサーバ側チェックが行われる。プロバイダデータへのアクセスおよびそのアクセスに関連付けられた認証についてのさらなる説明は、図８に関連して後述される。
【００６３】
動作４０８はクライアントデバイス１０４ａとサーバデバイス１０２との間のセッションのキャンセルを表す。以前の既存のセッションのキャンセルは、新たなセッションが生成されるのとほぼ同時に行われてもよい。クライアントデバイス１０４ａのセッションがキャンセルされた後は、クライアントデバイス１０４ａからの、ウェブアプリケーションにデータを求める以降のＨＴＴＰ要求は失敗する。クライアントデバイス１０４ａのユーザインタフェースは、ウェブアプリケーションからのデータ取得に今後失敗することを示すよう、および／またはクライアントデバイス１０４ａのセッションが他のロケーションからのログインに起因してキャンセルされたことをユーザに通知するよう、更新されてもよい。
【００６４】
図５は、ある例示的な実施の形態に係る、サインオンプロセス５００を実行している間に生じる、クライアントデバイス５０４（例えば、クライアントデバイス１０４ａ、１０４ｂと同様のもの）とサーバデバイス１０２との間のやりとりを示す。
【００６５】
プロセス５００は、ユーザがブラウザをウェブアプリケーションのいわゆる「ランディングページ」に辿り着かせるときに始まってもよい。例えば、「IR Insights」という名前のウェブアプリケーションについて、ランディングページはユーザに知られている「irinsight.nasdaq.com」などのアドレスにあってもよい。ランディングページのＵＲＬを入力することによって、または他のウェブページから対応するリンクをクリックすることによって、ナビゲーションが行われてもよい。
【００６６】
動作５０２において、クライアントデバイス上のブラウザがランディングページに辿り着くと、ウェブアプリケーションは、対応する現在アクティブなセッションおよびクッキーが存在するか否かを判定する。アクティブなセッション（および／またはクッキー）が見つからなかった場合、ウェブアプリケーションは一時的なトークンを生成し、そのトークンをクライアントデバイスに送信する。ある実施の形態では、一時的なトークンは、ウェブアプリケーションのドメインクッキーと共にクライアントにプッシュされてもよい。
【００６７】
動作５０４において、ウェブアプリケーションはクライアントデバイスをログインアプリケーションへリダイレクトする。ある実施の形態によると、クライアントデバイス上のブラウザをログインアプリケーションへ導く３０２ＨＴＴＰリダイレクトメッセージをクライアントに送信することによって、リダイレクトが行われてもよい。リダイレクトメッセージと共にウェブアプリケーションの既知の識別子が渡されてもよい。この場合、ログインプロセスが完了した後、ログインアプリケーションは続いて、クライアントをウェブアプリケーションへと戻すようリダイレクトすることができる。ある実施の形態によると、ウェブアプリケーションに割り当てられたグローバル一意識別子（ＧＵＩＤ）を、リダイレクトメッセージと共に渡される識別子として用いてもよい。
【００６８】
動作５０６において、ブラウザはウェブアプリケーションからリダイレクトメッセージを受信しており、そのリダイレクトメッセージにおいて示されているアドレスにあるログインアプリケーションへと辿り着く。ログインアプリケーションにアクセスする際、ブラウザはＨＴＴＰ要求に対応するＧＵＩＤを含めることにより、ウェブアプリケーション（これはブラウザをリダイレクトしたものである）を特定してもよい。ログインアプリケーションはユーザにログイン資格証明を促す。実施の形態によると、ログイン資格証明はユーザ名およびパスワードを含む。
【００６９】
動作５０８において、クライアントはログイン資格証明を送信する。
【００７０】
動作５１０において、ログインアプリケーションはログイン資格証明を検証する。例えば、ユーザ名およびパスワードは保持されているログインおよび／または認証情報に対して検証される。ユーザのログインが承認された後、ひとつ以上の現存のセッションはキャンセルされてもよい。この場合、関連するサービス明細に違反しない。ある実施の形態によると、ユーザがウェブアプリケーションにアクセスするための既存のセッションがキャンセルされてもよい。例えば、新たなセッションが確立される際のセッションのキャンセルに関して、先入れ先出し（ＦＩＦＯ）ポリシーが実装されてもよい。したがって、例えば、サービス明細が、特定のウェブアプリケーションに同時にアクセスできるクライアントアプリケーションの数を１に制限している場合、新たなセッションが生成されると、以前に確立されたセッションはキャンセルされる。他の実施の形態では、ウェブアプリケーションにアクセスするためのユーザの既存のセッションは、それらが新たなサインオンに関連付けられた同じ「領域（realm）」にある場合、キャンセルされる。「領域（realm）」は、ＧＵＩＤおよび／またはＧＵＩＤ−クライアント組み合わせをグループ化するために用いられる概念である。例えば、ウェブアプリケーション３２４およびクライアントタイプ（例えば、デスクトップコンピュータ、スマートフォン）の特定の組み合わせを異なる領域に配置することによって、デスクトップコンピュータおよびスマートフォンの同じユーザによる同じウェブアプリケーション３２４への同時サインオンが許可されうる。
【００７１】
動作５１２において、ログインアプリケーションはウェブアプリケーションに一時的なトークンを提供する。これはＨＴＴＰ  ＰＯＳＴメッセージを用いて、キー／値ペアの形態で一時的なトークンを指定することで、行われてもよい。ある実施の形態では、一時的なトークンと共に偽造防止トークンを提供してもよい。
【００７２】
動作５１４において、ログインアプリケーションは、ＨＴＴＰリダイレクトメッセージおよび以前に受信したウェブアプリケーションの識別子（例えば、ＧＵＩＤ）を用いて、クライアントをウェブアプリケーションにリダイレクトする。ログインアプリケーションはまた、一時的なトークンを含むクッキーを生成してもよい。ある実施の形態では、クッキーはまた、偽造防止クッキーを含んでもよい。
【００７３】
動作５１６において、クライアントはログインアプリケーションによってリダイレクトされており、ウェブアプリケーションに辿り着いて、一時的なトークンを含むひとつ以上のクッキーをウェブアプリケーションに提示する。
【００７４】
動作５１８において、ウェブアプリケーションはトークンを検証する。
【００７５】
動作５２０において、ウェブアプリケーションは永続的なトークンの生成をログインアプリケーションに要求する。
【００７６】
動作５２２において、ログインアプリケーションは永続的なトークンを生成する。
【００７７】
動作５２４において、ログインアプリケーションはウェブアプリケーションに生成された永続的なトークンを返す。
【００７８】
動作５２６において、ウェブアプリケーションはクライアントに永続的なトークンを送信する。
【００７９】
動作５２８において、クライアントは将来の使用のために永続的なトークンを格納する。ある実施の形態では、永続的なトークンを、対応するセッションを特定するためのクッキーとして用いられる。
【００８０】
動作５３０は、クライアントによるＨＴＴＰ要求の後続プロセスと、ＨＴＴＰ／ＪＳＯＮまたは他のフォーマットのメッセージを用いたサーバデバイスによる要求されたデータの返信を表す。ウェブアプリケーションは、要求されたデータを返す前に、永続的なトークンの引き続く正当性をチェックしてもよい。ある実施の形態では、例えば、クライアントによる個々全てのデータ要求について、ウェブアプリケーションおよび／または対応する外部サーバはセッションの正当性をチェックする。
【００８１】
図６は、ある例示的な実施の形態に係る、ＳＳＯおよびＭＬＰを合成された一連のやりとりで示す、クライアント１０４ａ、クライアント１０４ｂおよびサーバインフラストラクチャ１０２間のやりとりを示す。
【００８２】
プロセス６００は、ユーザがページ、ブラウザをウェブアプリケーションのいわゆる「ランディングページ」に辿り着かせるときに始まってもよい。ランディングページのＵＲＬを入力することによって、または他のウェブページから対応するリンクをクリックすることによって、ナビゲーションが行われてもよい。
【００８３】
動作６０２において、クライアント１０４ａのユーザはブラウザ３１２を介してウェブアプリケーション３２４にサインインする。サインオンプロセスは、上述の図５Ａ−５Ｂにしたがい行われてもよい。図３の動作３０２に関連して説明した通り、ユーザがウェブアプリケーション３２４と相互作用するための新たなセッションが生成され、ひとつ以上の対応するクッキーが生成されてもよい。
【００８４】
動作６０４において、ユーザがクライアント１０４ｂから有するアクティブなセッションは不活性化されるか除去される。例えば、動作６０２における新たなセッションのセットアップの一部として、同じユーザが他のクライアントから有するセッションは不活性化される。不活性化は、ひとつ以上のセッションがアクティブでないことを示すようセッションテーブルにマークをつけること、または、セッションテーブルからそのようなセッションを取り除いてしまうことを含んでもよい。
【００８５】
動作６０２の時点でクライアント１０４ｂが継続中のアクティブなセッションを有していた場合、セッションテーブルにおけるそのセッションのエントリは除去されるか、または非アクティブとマークされてもよい。そのような除去または非アクティブとしてのマーキングの後、ウェブアプリケーション３２４に対するクライアント１０４ｂによる以降のデータ要求は成功しないであろう。これは、各データ要求に応じたサーバ側のセッション正当性チェックが、ウェブアプリケーションについてユーザおよびクライアント１０４ｂに関連付けられたアクティブなセッションを見つけられないことにより失敗するからである。これは、ＭＬＰの実装を示す。
【００８６】
動作６０６において、クライアント１０４ａ上のアプリケーション３１６が起動する。この動作に関連付けられた処理は、図３の動作３０４に関連して説明されたものと同様である。
【００８７】
動作６０８において、アプリケーションは既存のセッションを判定する。この動作に関連付けられた処理は、図３の動作３０６に関連して説明されたものと同様である。
【００８８】
図７は、ある実施の形態に係る、ユーザがアプリケーションを介してウェブアプリケーションにアクセスすることを可能とするための、クライアント上で実行されるアプリケーションによって行われるプロセス７００とひとつ以上のサーバ上で実行されるサーバプロセスとを示す。
【００８９】
アプリケーション７０４（例えば、ウェブアプリケーション３２４にアクセスするための上述のネイティブアプリケーション３１６）がクライアント（例えば、クライアント１０４ａ）上で起動したときにプロセス７００を開始してもよい。動作７１２において、起動時に、アプリケーション７０４のカスタムアドイン（例えば、アドイン３１８）は、使用可能なブラウザコントロールを決定する。ある実施の形態によると、ブラウザコントロールの所定の順序付けられたリストは使用可能なブラウザコントロールを表すものとして考慮されてもよい。他のある実施の形態では、クライアント上で利用可能なブラウザを自動的に発見してもよい。
【００９０】
動作７１４において、第１ブラウザコントロールが選択される。ある実施の形態では、例えば、順序付けられたリストにおいて最初に現れるブラウザコントロールが選択される。例示的な実施の形態では、アプリケーションがエクセルプログラムを含む場合、インターネットエクスプローラブラウザコントローラを第１選択として選択する。これは、例えば、インターネットエクスプローラブラウザコントローラとエクセルプログラムとの間に高レベルの互換性が存在することが期待されるからである。
【００９１】
動作７１６において、既存のセッションに対する要求がサーバに送信される。要求は、少なくとも、選択されたブラウザコントロールと、アクセス要求対象のウェブアプリケーションと、ユーザＩＤと、クライアント識別と、を示す。
【００９２】
要求は、所定の指定ウェブアドレスに送信されてもよい。例えば、アプリケーションに組み入れられたカスタムアドインにより行われる処理を支援するために、企業はサーバ上のアプリケーションを所定の指定ウェブアドレスに設定してもよい。
【００９３】
動作７１８において、指定ウェブアドレスにあるウェブサーバ７０６はクライアントにより送信された要求を受信する。ウェブサーバ７０６は（おそらくは、アプリケーションサーバ、データベースおよび／または他のプロセスと連携して）、クライアントから受信した要求に対応する既存のセッションに関する情報を要求している他のアプリケーションに、メッセージを、送信する。ウェブサーバ７０６および他のアプリケーションは、ある実施の形態では、コアサービス１１４内のアプリケーションであってもよい。
【００９４】
動作７２０において、他のアプリケーション７０８はサーバ１０２上で実行されているアカウント管理アプリケーションであってもよく、他のアプリケーション７０８は要求を受信する。アプリケーション７０８は、既存のセッションが維持されているセッションテーブルや他のデータ構造をチェックすることで、受信した要求で指定されるパラメータに対応する既存のセッションを求めてもよい。受信した要求で指定されるパラメータは、ブラウザ（または上述の選択されたブラウザコントロール）のタイプ、ユーザ、クライアントおよび要求されたウェブアプリケーションの識別を含んでもよい。
【００９５】
既存のセッションが見つかると、その既存のセッションに関連付けられたクッキーがアクセスされる。図２に関連して上述された通り、各既存のセッションは関連クッキーを有してもよい。
【００９６】
動作７２２において、セッションが見つからなかった場合、アプリケーション７０８は、セッション発見に失敗したことを示しつつアプリケーション７０６に応答する。
【００９７】
そうでなく、セッションが見つかった場合、動作７２２において、アプリケーション７０８は、既存のセッションについての情報および／またはアクセスされたクッキーのコピーを提供することによって、アプリケーション７０６に応答する。
【００９８】
動作７２４において、アプリケーション７０６はアプリケーション７０８から受信した応答に基づいて、アプリケーション７０４に応答を送信する。したがって、動作７２０において既存のセッションが見つかった場合、既存のセッションについての情報および／または既存のセッションに対応するクッキーのコピーはアプリケーション７０４への応答に含められる。動作７２０において既存のセッションが見つからなかった場合、応答は、アプリケーション７０８に、現在選択されているブラウザコントロールについて既存のセッションの発見に失敗した旨を知らせる。
【００９９】
動作７２６において、アプリケーション７０４は、アドイン支援アプリケーション７０６から受信した最新の応答に基づいて、既存のセッションが発見されたか否かを判定する。
【０１００】
既存のセッションが発見されなかった場合、アプリケーション７０４は、動作７１２で決定されたひとつ以上のブラウザコントロールからの次のブラウザコントロールの選択を試行する。次いで、既存のセッションについてまだテストされていない別のブラウザコントロールが存在する場合、動作７２８において、既存のセッションを決定すべき別のブラウザコントロールが選択され、処理は動作７１６に進む。動作７１６において、いまや、新たに選択されたブラウザコントロールを含む要求が生成されてもよく、処理は動作７１８に進んでもよい。
【０１０１】
動作７２６において、既存のセッションは発見されず、かつ、既存のセッションについてテストされるべきブラウザコントロールが残っていないと判定された場合、動作７３０において、アクセス対象のウェブアプリケーションについて、クライアントからのセッションは現在存在していないと判定され、アプリケーション７０４はサインオンを実行することができる。
【０１０２】
サインオンは、アプリケーション７０４がウェブアプリケーションの所定のアドレスにＨＴＴＰ要求を送信することを含んでもよい。図５はクライアント上で実行されているブラウザがサインオンしているときに生じる例示的なプロセスを示す。アプリケーションがサインインするとき、サーバインフラストラクチャおよびクライアント上のアプリケーションによって、同様のプロセス（すなわち、同様の動作のシーケンス）が行われてもよい。サインオンプロセス中、例えば、アプリケーション７０４がログインプロンプト（コアサービス５２６から送信されるように示されている）を受信するとき、ユーザがログイン資格証明を入力するためのログインウインドウが表示される。ある実施の形態によると、アプリケーションにおけるログインウインドウは図９に関連して後述される。クライアント上のブラウザに対するセッションが生成される前に初めてアプリケーションがサインインするとき、新たなセッションが生成されるであろう。アプリケーションはこの新たなセッションを用いてウェブアプリケーションとやりとりする。
【０１０３】
一方、既存のセッションが見つかった場合、動作７３２において、アドイン支援アプリケーション７０６からの応答で受信したクッキーを、アプリケーションがアクセス可能なストレージに格納する。ウェブアプリケーションに対する以降の要求はそのクッキーを含んでもよい。したがって、既存のセッションを用いて、かつ、ユーザがアプリケーションを通じて別個のサインオンを行うことを要求せずに、ウェブアプリケーションがアプリケーション７０４にサービスを提供することが可能となる。
【０１０４】
ある実施の形態では、アプリケーション７０４がウェブアプリケーションによって提供されるアプリケーションデータにアクセスすることを始める前に、アプリケーション７０４によってさらに多くの動作が行われてもよい。ある実施の形態では、動作７３２の後（例えば、既存のセッションが発見され、ウェブアプリケーションにアクセスするためのクッキーがアプリケーションによって受信された後）、アプリケーション７０４は、別のブラウザコントロールをインスタンス化し、発見された既存のセッション（例えば、以前に取得されたクッキーを用いて）および新たにインスタンス化されたブラウザコントロールを用いて、ウェブアプリケーションにアクセスすることに進む。この能力は、クッキーをブラウザに亘って（例えば、ブラウザ間）で共有することを可能とする。例えば、クロームブラウザのサーバからクッキーを取得している状況で、しかしながらアプリケーションが他のタイプのブラウザコントローラ（例えば、インターネットエクスプローラブラウザコントローラ）で利用可能な所定のフィーチャを要求する場合、アプリケーションは、新たにインスタンス化された他のタイプのブラウザコントローラに既に取得されているクッキーを用いてもよい。
【０１０５】
図８は、ある例示的な実施の形態に係る、クライアント８０４上のアプリケーションまたはクライアント側コードが外部サーバ８１０からのデータにアクセスするためのプロセス８００を示す。
【０１０６】
プロセス８００は、クライアント８０４上のアプリケーションまたはクライアント側コードがウェブアプリケーションにサインオンした後、クライアント上のアプリケーションまたはクライアント側コードによって外部サーバからのデータへのアクセスが要求されたときに始まってもよい。
【０１０７】
動作８１２において、クライアント８０４はサーバ１０２上のウェブアプリケーション８０６にデータ要求を送信する。要求は、セッションについて以前に取得されクライアントに保持されているクッキーを含んでもよい。要求は、要求されているデータを示す。
【０１０８】
動作８１４において、ウェブアプリケーション８０６はクライアント８０４からの要求を受信する。動作８１４における処理は、要求されているデータをどこから取得するかを決定することを含んでもよい。処理はまた、要求されているデータの少なくともいくらかをローカルで決定することを含んでもよい。
【０１０９】
動作８１６において、ウェブアプリケーションは、動作８１４において決定されたようにおよび／またはクライアント８０４からの要求で指定されるように、データ要求を外部サーバに送信する。
【０１１０】
動作８１８において、外部サーバ８１０は要求を受信する。ある実施の形態では、動作８１８における処理は正当なセッションについてローカルで維持されているテーブルをチェックすることを含んでもよい。チェックは、要求からのクッキーおよび／またはユーザ特定情報に基づくものであってもよい。ローカルで維持されているテーブルからのチェックが、ユーザがデータを受信することを承認することを示す場合、要求されているデータを提供するために処理は動作８２６に進んでもよい。
【０１１１】
他のある例示的な実施の形態では、ローカルで維持されているテーブルをチェックすることに加えてまたはその代わりに、動作８２０において、外部サーバはコアサービス８０８に、データ要求の確認を要求するための要求を送信する。
【０１１２】
動作８２２において、コアサービスアプリケーション８０８はセッションテーブルおよび／または他のデータ構造をチェックすることで、データ要求が承認されるか否かを判定する。
【０１１３】
動作８２４において、外部サーバに状態が報告される。
【０１１４】
動作８２６において、少なくともデータ要求が適切に承認されたかに基づいて、クライアントにデータを提供すると決定する。あるいはまた、要求が適切に承認されなかったと判定された場合、データを提供しないとの決定がなされる。
【０１１５】
動作８２８において、データがクライアントに提供されるべきか否かに基づいて、ウェブアプリケーション８０６に応答が送信される。応答は、要求されたデータを含むか、または失敗通知を含むか、のいずれかであってもよい。
【０１１６】
動作８３０において、ウェブアプリケーションは、クライアントの要求が成功したか失敗したかを判定する。
【０１１７】
動作８３２において、ウェブアプリケーションはクライアントに応答を送信する。
【０１１８】
図９は、アプリケーション１２０ａや１２０ｂなどのアプリケーション内からユーザに提供されるログインウインドウの例示的実装を示す。例えば、アプリケーション１２０ａが実行されている（ウインドウ９００で示されるように）間に、クライアント１０４ａのユーザが新たにサインインを行う必要があると判定された場合、ユーザのログイン資格証明を受け付けるためにログインウインドウ９０２が表示される。
【０１１９】
図１０は、システム１００のハードウエアアーキテクチャの非限定的例示的ブロック図を示す。図１０に示される例では、クライアントシステム１０１０はネットワーク１０４０を介してサーバシステム１０２０と通信する。ネットワーク１０４０はインターネットなどの相互に接続された計算デバイスのネットワークを含みうる。ネットワーク１０４０はローカルエリアネットワーク（ＬＡＮ）を含んでもよく、またはクライアントシステム１０１０とサーバシステム１０２０との間のピアツーピア接続を含んでもよい。
【０１２０】
例示的なクライアントシステム１０１０とサーバシステム１０２０とは、図１に示されるクライアント１０４とサーバ１０２とに対応しうる。すなわち、図１を参照して本明細書で説明され示された種々のソフトウエアコンポーネントおよび動作を実装するために、図１０で説明されるハードウエア要素を用いることができる。例えば、図１０のクライアントシステム１０１０は、少なくともひとつのプロセッサＣＰＵ１０３１と、少なくともひとつのメモリ１０３２と、少なくともひとつの入出力デバイスＩ／Ｏ１０３３と、ユーザインタフェースＵＩ１０３４を生成して表示するためのコンポーネントと、を含んでもよい。少なくともひとつのメモリ１０３２は、ランダムアクセスメモリ（ＲＡＭ）やスタティックＲＡＭやフラッシュメモリや磁気ディスクなどのコンピュータ可読保持媒体を含んでもよい。Ｉ／Ｏデバイス１０３３は、データを送受するトランシーバ（例えば、無線トランシーバ、有線トランシーバ）などの通信デバイスを全て包含し、それを含みうるものであってもよい。Ｉ／Ｏデバイス１０３３は、データを送受するために非一時的コンピュータ可読保持媒体をクライアントシステム１０１０に接続するためのインタフェースを含んでもよい。
【０１２１】
図１の例示的なウェブブラウザアプリケーション１１７、１１８およびアプリケーション１２０ａを実装するためにクライアントシステム１０１０の要素の組み合わせを用いることができることは、理解されるべきである。例えば、メモリ１０３２はアプリケーションに関連付けられたファイル（例えば、ＨＴＭＬ、ＸＭＬ、ＪａｖａＳｃｒｉｐｔファイル）をロードし、ＣＰＵ１０３１はアプリケーションに関連付けられたインストラクションを実行するために用いられてもよい。Ｉ／Ｏデバイス１０３３を用いることで、サーバシステム１０２０からＳＰＡを含む種々の要素をフェッチすることができる、および／またはユーザと相互作用することができる。
【０１２２】
サーバシステム１０２０は、図１に示されるサーバ１０２または図２の２００のソフトウエア要素を実装するために用いられる種々のハードウエアコンポーネントを備える。例えば、サーバシステム１０２０は、少なくともひとつのプロセッサＣＰＵ１０２１と、少なくともひとつのメモリ１０２２と、少なくともひとつの入出力デバイスＩ／Ｏ１０２３と、のハードウエアコンポーネントを含んでもよい。少なくともひとつのメモリ１０２２は、ランダムアクセスメモリ（ＲＡＭ）やスタティックＲＡＭやフラッシュメモリや磁気ディスクなどのコンピュータ可読保持媒体を含んでもよい。Ｉ／Ｏデバイス１０２３は、データを送受するトランシーバ（例えば、無線トランシーバ、有線トランシーバ）などの通信デバイスを全て包含し、それを含みうるものであってもよい。Ｉ／Ｏデバイス１０２３は、データを送受するために非一時的コンピュータ可読保持媒体をサーバシステム１０２０に接続するためのインタフェースを含んでもよい。ひとつの例示的な実施の形態では、クライアントシステムのＩ／Ｏデバイス１０３３は、サーバシステムのＩ／Ｏ１０２３とのネットワークを介した通信を行うことができる。
【０１２３】
クライアントシステム１０１０と同様に、サーバシステム１０２０はアプリケーションを実装および／または実行することができる。例えば、ウェブアプリケーション１１２およびコアサービス１１４に関連付けられたウェブサーバおよびアプリケーションサーバによって用いられるコンポーネントおよびファイルに加えて、データベース１１０に情報を格納するためにメモリ１０２２を用いることができる。ＣＰＵ１０２１は、クライアントシステム１０１０により要求されそれに送信される対応モジュールを生成するのに必要なソフトウエアを実行する際に用いられてもよい。例えば、ＣＰＵ１０２１は、アプリケーションサーバによって生成される必要なモジュールを生成するために用いられてもよい。同様に、Ｉ／Ｏデバイス１０２３は、クライアントシステム１０１０に異なるアプリケーション要素を送信するためにウェブサーバによって用いられてもよい。無論、これらの例は非限定的であり、システムはハードウエア要素を様々な態様で用いることを想定している。
【０１２４】
説明されたＳＳＯおよびＭＬＰに関して上で説明された技術は、とりわけ、ユーザが通信ネットワークを介してウェブアプリケーションとやりとりする際の効率を改善しつつ、ウェブアプリケーションのリソースの誤用を低減する能力を提供する。上で詳述された通り、ある実施の形態は、種々のネットワーク化リソースへのユーザアクセスを、そのようなリソースについての使用明細全体が守られるように、制御するために用いられうる。
【０１２５】
本明細書の例では、説明を目的とし、限定を目的とせず、記載の技術の理解を提供するために、特定のノード、機能エンティティ、技術、プロトコル、規格等の具体的な詳細が説明される。他の実施の形態を、以下の詳細説明から離れて実施できることは当業者には明らかであろう。他の例では、周知の方法、デバイス、技術等の詳細説明は、不必要な詳細説明で説明を曖昧にしないために省略されている。個々の機能ブロックが図に示される。これらのブロックの機能は、個別のハードウエア回路（例えば、図１０に示されるもの）を使用して、適切なプログラム化マイクロプロセッサあるいは汎用コンピュータと協働するソフトウエアプログラム（例えば、図１に示されるもの）およびデータを使用して、特定用途集積回路（ＡＳＩＣ）を使用して、および／または１つ以上のデジタル信号プロセッサ（ＤＳＰ）を使用して、実現可能であることを当業者は理解するであろう。ソフトウエアプログラムインストラクションおよびデータは、コンピュータ可読保持媒体に保持されてもよく、このインストラクションがコンピュータあるいは他の適切なプロセッサ制御によって実行されると、コンピュータあるいはプロセッサは機能を実行する。以下でデータベースはテーブルとして示されている場合があるが、他のフォーマット（リレーショナルデータベース、オブジェクトベースモデル、および／または分散データベースを含む）を、データを保持し操作するために使用することができる。
【０１２６】
処理ステップ、アルゴリズムあるいはその類が特定の順序で記載またはクレームされている場合があるが、このような処理は、異なる順序で動作するように構成設定することができる。換言すれば、明示されるかクレームされるいかなるシーケンスあるいはステップの順序も、そのステップがその順序で実行される必要性を示すものでは必ずしもない。本明細書で記載される処理のステップは、取り得る任意の順序で実行されうる。また、いくつかのステップは、非同時的に発生するように記載されているあるいは暗示されているが（例えば、あるステップは、他のステップの後に記載されているからである）、同時に実行されうる。さらに、図面における図示による処理の説明は、図示される処理が他の変形や変更について排他的であることを暗示しているのではなく、また、図示される処理あるいはその任意のステップが本技術に必要であることを暗示しているのではなく、また、図示される処理が好ましいことを暗示しているのでもない。
【０１２７】
様々な形式のコンピュータ可読媒体／伝送は、プロセッサにデータ（例えば、インストラクションのシーケンス）を運ぶ際に含まれうる。例えば、データは、（ｉ）メモリからプロセッサへ送信されてもよく、（ｉｉ）任意のタイプの送信媒体（例えば、有線、無線、光等）を介して運ばれてもよく、（ｉｉｉ）イーサネット（あるいはＩＥＥＥ８０２．３）、ＡＴＰ、ブルートゥース（登録商標）、ＴＣＰ／ＩＰ、ＴＤＭＡ、ＣＤＭＡ、３Ｇ等のような、多くのフォーマット、規格あるいはプロトコルに従ってフォーマットおよび／または送信されてもよく、および／または（ｉｖ）周知の様々な方法の任意のものでプライバシーを確保するためにあるいは流出を防止するために暗号化されてもよい。
【０１２８】
本書で、動作が実行され「てもよく」、「ることができ」、もしくは「うる」ことと、機能、エレメント、もしくは構成が所与のコンテキストに含まれ「てもよく」、「ることができ」、もしくは「うる」、または適用可能なことと、所与のアイテムが所与の特性を有し「てもよく」、「ることができ」、もしくは「うる」こととが説明されるときはいつでも、または「〜てもよい」、「〜できる」もしくは「〜しうる」という用語を含む任意の類似の語句が使用されるときはいつでも、所与の動作、特徴、エレメント、構成、特性、などが少なくとも１つの実施形態に示されているが、全ての実施形態に示される必要はないことが理解されたい。
【０１２９】
AngularJSとの関連で技術が説明されたが、これは説明を容易にするためになされたものであって、本明細書で説明された技術が他のＳＰＡ技術や他のウェブ技術やおよび／または他のソフトウエア技術のコンテキストにおいて適用可能であることは理解される。
【０１３０】
最も実際的で好適な実施の形態であると現時点で考えられているものとの関係で本技術が説明されたが、本技術は開示された実施の形態に限定されるものではなく、むしろ種々の変形例および等価な構成をカバーするよう意図されていることは理解されるべきである。
【図１】
0006533871.tif 000002
【図２】
0006533871.tif 000003
【図３】
0006533871.tif 000004
【図４】
0006533871.tif 000005
【図５Ａ】
0006533871.tif 000006
【図５Ｂ】
0006533871.tif 000007
【図６】
0006533871.tif 000008
【図７】
0006533871.tif 000009
【図８】
0006533871.tif 000010
【図９】
0006533871.tif 000011
【図１０】
0006533871.tif 000012