(57)【要約】      （修正有）【課題】Ｗｅｂアプリケーションへのなりすましログインを防ぐＷｅｂサーバ、ログイン判定方法及びプログラムを提供する。【解決手段】Ｗｅｂサーバは、第１の発行部１２、第１の受信部１３、第２の発行部１４、第２の受信部１５及び判定部１６を備える。第１の発行部は、Ｗｅｂアプリの利用を要求するＷｅｂブラウザへ第１のセッションＩＤを発行する。第１の受信部は、Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を第１のセッションＩＤと共に受信する。第２の発行部は、第１のセッションＩＤに関連付く第２のセッションＩＤをＷｅｂブラウザへ発行する。第２の受信部は、ユーザについての第２の認証サーバによる第２の認証結果を第２のセッションＩＤと共に受信する。判定部は、受信した第１の認証結果と第２の認証結果とに基づいて、ＷｅｂブラウザによるＷｅｂアプリの利用の可否を判定する。【選択図】図１１
2020113006.tif 000002
【特許請求の範囲】
【請求項１】
Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行する第１の発行部と、
前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信する第１の受信部と、
前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行する第２の発行部と、
前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信する第２の受信部と、
前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する判定部と、
を有することを特徴とするＷｅｂサーバ。
【請求項２】
前記判定部は、前記Ｗｅｂアプリケーションのユーザごとに記憶部に記憶されている、認証サーバごとのユーザＩＤの組み合わせと、前記第１の認証結果及び前記第２の認証結果に含まれるユーザＩＤとを比較して、前記Ｗｅｂアプリケーションの利用の可否を判定する、
ことを特徴とする請求項１記載のＷｅｂサーバ。
【請求項３】
Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行し、
前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信し、
前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行し、
前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信し、
前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する、
処理をコンピュータが実行することを特徴とするログイン判定方法。
【請求項４】
Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行し、
前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信し、
前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行し、
前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信し、
前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する、
処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂサーバ、ログイン判定方法及びプログラムに関する。
【背景技術】
【０００２】
Ｗｅｂアプリケーション（以下、「Ｗｅｂアプリ」という。）に対するログインにおいて、ＯｐｅｎＩＤ  ＣｏｎｎｅｃｔやＳＡＭＬ（Security  Assertion  Markup  Language）を使用したシングルサインオンが利用されている。
【０００３】
図１は、Ｗｅｂアプリに対するシングルサインオンの概要を説明するための図である。図１では、Ｗｅｂアプリへのシングルサインオンに対する認証を、認証サーバＺが実行する例が示されている。
【０００４】
この場合、ユーザＵが利用する端末のＷｅｂブラウザは、認証サーバＺに対してログイン要求（ユーザＩＤ及びパスワード等）を送信する（Ｓ１００１）。なお、認証サーバＺへのログイン要求の送信は、例えば、ＷｅｂブラウザによるＷｅｂアプリへのアクセス要求に対してＷｅｂアプリから返信される、認証サーバＺへのリダイレクト命令を示す応答に応じて行われる。認証サーバＺは、ログイン要求に含まれているユーザＩＤ及びパスワード等に基づいてユーザＵを認証し（Ｓ１００２）、認証サーバＺによるユーザＵの認証結果を含み、Ｗｅｂアプリへのリダイレクト命令を示す応答をＷｅｂブラウザに返信する（Ｓ１００３）。Ｗｅｂブラウザが当該リダイレクト命令に従って当該認証結果をＷｅｂアプリに送信すると（Ｓ１００４）、Ｗｅｂアプリは、当該認証結果に基づいて、ユーザＵのログインを許可する（Ｓ１００５）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１６−５１１８４９号公報
【特許文献２】特開２０１５−２０３９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、認証サーバＺは、ユーザＵの認証結果を生成できるため、認証サーバＺがユーザＵになりすましてＷｅｂアプリにログインする脅威が存在する。
【０００７】
図２は、認証サーバＺがユーザＵになりすましてＷｅｂアプリにログインする脅威を説明するための図である。
【０００８】
認証サーバＺは、ユーザＵからのログイン要求とは無関係に、不正にユーザＵの認証結果を生成し（Ｓ１１０１）、当該認証結果をＷｅｂアプリに送信する（Ｓ１１０２）。Ｗｅｂアプリは、当該認証結果に基づいて、ユーザＵのログインを許可してしまう（Ｓ１１０３）。
【０００９】
そこで、一側面では、本発明は、Ｗｅｂアプリケーションへのなりすましログインを防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
一つの態様では、Ｗｅｂサーバは、Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行する第１の発行部と、前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信する第１の受信部と、前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行する第２の発行部と、前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信する第２の受信部と、前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する判定部とを有する。
【発明の効果】
【００１１】
一側面として、Ｗｅｂアプリケーションへのなりすましログインを防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】Ｗｅｂアプリに対するシングルサインオンの概要を説明するための図である。
【図２】認証サーバＺがユーザＵになりすましてＷｅｂアプリにログインする脅威を説明するための図である。
【図３】本発明の実施の形態におけるＷｅｂシステムの構成例を示す図である。
【図４】本発明の実施の形態の基本的なアイデアを説明するための図である。
【図５】技術的課題１を説明するための図である。
【図６】技術的課題２の第１の解決案を説明するための図である。
【図７】第１の解決案の問題点を説明するための図である。
【図８】技術的課題２の第２の解決案を説明するための図である。
【図９】技術的課題２の第２の解決案の問題点を説明するための図である。
【図１０】本発明の実施の形態におけるＷｅｂサーバ１０のハードウェア構成例を示す図である。
【図１１】本発明の実施の形態におけるＷｅｂサーバ１０の機能構成例を示す図である。
【図１２】登録情報の登録処理の処理手順の一例を説明するための図である。
【図１３】登録情報記憶部１１１の構成例を示す図である。
【図１４】ＷｅｂアプリＡへのログイン処理の処理手順の一例を説明するための図である。
【図１５】ログインの可否の判定処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図３は、本発明の実施の形態におけるＷｅｂシステムの構成例を示す図である。図３において、Ｗｅｂシステム１は、１以上のユーザ端末３０、認証サーバ２０Ｘ及び認証サーバ２０Ｙ（以下、それぞれを区別しない場合、単に「認証サーバ２０」という。）、並びにＷｅｂサーバ１０等を含む。Ｗｅｂシステム１において、ユーザ端末３０は、インターネット等のネットワークを介して各認証サーバ２０及びＷｅｂサーバ１０と通信可能である。
【００１４】
Ｗｅｂサーバ１０は、ＷｅｂアプリＡが実装された１以上のコンピュータである。ＷｅｂアプリＡは、所定のサービスをネットワークを介して提供するＷｅｂアプリケーション（Ｗｅｂアプリ）の一例である。
【００１５】
ユーザ端末３０は、ＷｅｂアプリＡのユーザインタフェースとしてユーザＵが利用する端末である。具体的には、ユーザ端末３０は、ＷｅｂアプリＡからダウンロードされるＷｅｂページを表示するＷｅｂブラウザ（後述の「Ｗｅｂブラウザ３１」）を有する。Ｗｅｂページは、例えば、ＨＴＭＬ（HyperText  Markup  Language）、ＣＳＳ（Cascading  Style  Sheets）、及びＪａｖａＳｃｒｉｐｔ（登録商標）等が構成するファイル群である。なお、スマートフォン、タブレット端末、携帯電話、又はＰＣ（Personal  Computer）等がユーザ端末３０として利用されてもよい。
【００１６】
認証サーバ２０は、ＷｅｂアプリＡへのシングルサインオンを実現するために、ユーザＵの認証をＷｅｂサーバ１０に代わって実行する１以上のコンピュータである。本実施の形態では、１つのＷｅｂアプリＡへのログインに対して２つの認証サーバ２０が利用される。
【００１７】
図４は、本発明の実施の形態の基本的なアイデアを説明するための図である。
【００１８】
ユーザＵが利用するユーザ端末３０のＷｅｂブラウザ３１は、認証サーバ２０Ｘに対してログイン要求（ユーザＩＤ及びパスワード等）を送信する（Ｓ１１０）。なお、認証サーバ２０Ｘへのログイン要求の送信は、例えば、Ｗｅｂブラウザ３１によるＷｅｂアプリＡへのアクセス要求に対してＷｅｂアプリＡから返信される、認証サーバ２０Ｘへのリダイレクト命令を示す応答に応じて行われる。認証サーバ２０Ｘは、ログイン要求に含まれているユーザＩＤ及びパスワード等に基づいてユーザＵを認証し（Ｓ１２０）、認証サーバ２０Ｘによる認証結果（例えば、チケット又はトークン）をＷｅｂブラウザ３１に返信する（Ｓ１３０）。
【００１９】
Ｗｅｂブラウザ３１は、また、認証サーバ２０Ｙに対してログイン要求（ユーザＩＤ及びパスワード等）を送信する（Ｓ１４０）。認証サーバ２０Ｙは、ログイン要求に含まれているユーザＩＤ及びパスワード等に基づいてユーザＵを認証し（Ｓ１５０）、認証サーバ２０Ｙによる認証結果をＷｅｂブラウザ３１に返信する（Ｓ１６０）。
【００２０】
Ｗｅｂブラウザ３１が、認証サーバ２０Ｘ及び認証サーバ２０Ｙのそれぞれからの認証結果をＷｅｂアプリＡに送信すると（Ｓ２１０）、ＷｅｂアプリＡは、これら２つの認証結果に基づいて、ユーザＵのログインの可否（Ｗｅｂブラウザ３１によるＷｅｂアプリＡの実行の可否）を判定する（Ｓ２２０）。すなわち、双方の認証結果が認証の成功を示すものであれば、ユーザＵのログイン（Ｗｅｂブラウザ３１によるＷｅｂアプリＡの実行）は許可される。
【００２１】
このような構成によれば、各認証サーバ２０は、他の認証サーバ２０におけるユーザＵのユーザＩＤ及びパスワードを知らないため、例えば、認証サーバ２０ＸはユーザＵとして認証サーバ２０Ｙログインできず、認証サーバ２０ＹはユーザＵとして認証サーバ２０Ｘにログインできない。したがって、ＷｅｂアプリＡにユーザＵとしてログインできるのは、認証サーバ２０Ｘ及び認証サーバ２０Ｙの双方にログインできる（それぞれにおけるユーザＵのユーザＩＤ／パスワードを知っている）ユーザＵに限定することができる。
【００２２】
但し、図４のアイデアに関しては、技術的課題１及び技術的課題２の２つの技術的課題が有る。
【００２３】
技術的課題１は、ユーザＵが「認証サーバ２０Ｘに登録している名前（ユーザＩＤ）」と「認証サーバ２０Ｙに登録している名前（ユーザＩＤ）」と、ＷｅｂアプリＡにおけるユーザＵのアカウント（ユーザＩＤ）が同じであることは保証されないため、「認証サーバ２０Ｘによる認証結果」と「認証サーバ２０Ｙによる認証結果」の組み合わせが、ユーザＵの認証結果の組み合わせとして正しいか否かの判定がＷｅｂアプリＡにとって困難であるということである。
【００２４】
図５は、技術的課題１を説明するための図である。図５中、図４と同一部分及び同一ステップには同一ステップ番号を付し、その説明は省略する。
【００２５】
図５では、認証サーバ２０ＸにおけるユーザＵのユーザＩＤが「ＡＡＡ」であり、認証サーバ２０ＹにおけるユーザＵのユーザＩＤが「ａａａ」である例が示されている。この場合、「ＡＡＡ」に関する認証結果と、「ａａａ」に関する認証結果とを受け取ったＷｅｂアプリＡは、ステップＳ２２０において、これらの認証結果がユーザＵの認証結果であるか否かを判定するのが困難である。すなわち、ＷｅｂアプリＡは、認証サーバ２０ＸにおけるユーザＵのユーザＩＤと認証サーバ２０ＹにおけるユーザＵのユーザＩＤがいずれであるのかを知らない。したがって、仮に、たまたま認証サーバ２０Ｘ及び認証サーバ２０ＹにおけるユーザＵのユーザＩＤが「ＡＡＡ」で共通であったとしても、ＷｅｂアプリＡにとっては、「ＡＡＡ」に関する認証結果がユーザＵに対する認証結果であるのか否かが分からない。
【００２６】
技術的課題２は、ステップＳ２１０において、Ｗｅｂブラウザ３１が、「認証サーバ２０Ｘによる認証結果」及び「認証サーバ２０Ｙによる認証結果」を一緒に安全に送信することが困難であるということである。具体的には、ステップＳ２１０で「認証サーバ２０Ｙによる認証結果」及び「認証サーバ２０Ｘによる認証結果」を同時に送信することは、Ｗｅｂブラウザ３１の特性上、困難であることが技術的課題２である。何故なら、Ｗｅｂブラウザ３１を経由させて他のオリジンにデータを送信するには、リダイレクト（ＨＴＴＰ  Ｒｅｄｉｒｅｃｔ）等の利用が必要であるため、複数のオリジンのデータ（認証サーバ２０Ｙによる認証結果と認証サーバ２０Ｘによる認証結果）をまとめて、異なるオリジン（ＷｅｂアプリＡ）に送信することはできないからである。そのため、Ｗｅｂブラウザ３１は、ステップＳ１３０において取得した認証結果を保存して、ステップＳ１４０のリクエストを送信することはできない。
【００２７】
そこで、図４の処理手順において、図６に示されるように認証結果を流通させることが考えられる。図６は、技術的課題２の第１の解決案を説明するための図である。図６中、図４と同一ステップには同一ステップ番号を付している。
【００２８】
図６において、Ｗｅｂブラウザ３１は、ステップＳ１４０のリクエストに「認証サーバ２０Ｘによる認証結果」を含める。また、ステップＳ１６０において、認証サーバ２０Ｙは、「認証サーバ２０Ｙによる認証結果」に加え、Ｗｅｂブラウザ３１から受信した「認証サーバ２０Ｘによる認証結果」を含む応答を返信する。その結果、ステップＳ２１０において、Ｗｅｂブラウザ３１は、「認証サーバ２０Ｙによる認証結果」及び「認証サーバ２０Ｘによる認証結果」をＷｅｂアプリＡに同時に送信することができる。
【００２９】
しかしながら、第１の解決案は、図７に示されるような問題点を含む。図７は、第１の解決案の問題点を説明するための図である。図７中、図６と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
【００３０】
図７に示されるように、第１の解決案では、ステップＳ１４０において「認証サーバ２０Ｘによる認証結果」を取得した認証サーバ２０Ｙは、「認証サーバ２０Ｙによる認証結果」を生成し、これら２つの認証結果をＷｅｂアプリＡに送信することで（Ｓ２５０）、ユーザＵになりすまして、ＷｅｂアプリＡにログインできてしまう。
【００３１】
そこで、技術的課題２について、図８に示されるような第２の解決案が考えられる。図８は、技術的課題２の第２の解決案を説明するための図である。図８中、図４と同一部分及び同一ステップには同一符号を付し、その説明は省略する。
【００３２】
Ｗｅｂブラウザ３１は、まず、ＷｅｂアプリＡとの間でセッション（以下、「セッション（１）」という。）を開設し、当該セッション（１）のセッションＩＤ（以下、「セッションＩＤ（１）」という。）の発行をＷｅｂアプリＡから受ける（Ｓ１０５）。例えば、ＷｅｂアプリＡは、Ｗｅｂブラウザ３１からのアクセス要求に対して、セッションＩＤ（１）を含み、認証サーバ２０Ｘへのリダイレクト命令を示す応答を、ステップＳ１０５においてＷｅｂブラウザ３１に返信する。その結果、Ｗｅｂブラウザ３１に対し、ＷｅｂアプリＡへのリクエストの送信時に含める情報としてセッションＩＤ（１）が設定又は付与される。なお、セッションＩＤとしては、例えば、Ｃｏｏｋｉｅ（クッキー）が用いられてもよい。ステップＳ１０５に応じて、ステップＳ１１０〜Ｓ１３０が実行される。ステップＳ１３０におけるリダイレクト命令に従い、Ｗｅｂブラウザ３１は、「認証サーバ２０Ｘによる認証結果」をセッションＩＤ（１）と共にＷｅｂアプリＡへ送信する（Ｓ１３１）。
【００３３】
ＷｅｂアプリＡは、「認証サーバ２０Ｘによる認証結果」及び当該セッションＩＤ（１）を受信すると、認証サーバ２０Ｙへのリダイレクト命令を示す応答をＷｅｂブラウザ３１に返信する（Ｓ１３５）。当該応答に応じて、ステップＳ１４０〜Ｓ１６０が実行される。なお、ステップＳ１６０は、「認証サーバ２０Ｙによる認証結果」を含み、ＷｅｂアプリＡへのリダイレクト命令を示す認証サーバ２０Ｙからの応答である。
【００３４】
Ｗｅｂブラウザ３１は、当該応答が示すリダイレクト命令に従い、「認証サーバ２０Ｙによる認証結果」をセッションＩＤ（１）と共にＷｅｂアプリＡへ送信する（Ｓ１７０）。ＷｅｂアプリＡは、セッションＩＤ（１）に係るセッションにおいて受信された「認証サーバ２０Ｘによる認証結果」と「認証サーバ２０Ｙによる認証結果」とに基づいて、ユーザＵのログインの可否を判定する（Ｓ２２０）。すなわち、同一のセッションＩＤに関して受信された２つの認証結果に基づいてユーザＵのログインが許可される。なお、ここでは、技術的課題１は解決済みであることを前提とする。
【００３５】
しかしながら、図８の方法には、セッションフィクセーションの脅威が存在する。図９は、技術的課題２の第２の解決案の問題点を説明するための図である。図９において、認証サーバ２０Ｙは、例えば、悪意者（サイバー攻撃者）によって支配されている（乗っ取られている）罠サイトであるとする。
【００３６】
図９において、認証サーバ２０Ｙは、ＷｅｂアプリＡにアクセスすることで、ＷｅｂアプリＡからセッションＩＤ（以下、「セッションＩＤ（３）」という。）の発行を受けておく。
【００３７】
その後、ユーザＵにより所定の操作（例えば、罠サイトへ誘導するためのメールに含まれているリンクのクリック等）が行われると、Ｗｅｂブラウザ３１は、認証サーバ２０Ｙへアクセスする（Ｓ３０２）。認証サーバ２０Ｙは、当該アクセスに応じ、セッションＩＤ（３）を含み、ＷｅｂアプリＡへのリダイレクト命令を示す応答をＷｅｂブラウザ３１へ返信する（Ｓ３０３）。
【００３８】
Ｗｅｂブラウザ３１が、当該リダイレクト命令に従い、セッションＩＤ（３）を含むアクセス要求をＷｅｂアプリＡへ送信すると（Ｓ１０２）、ＷｅｂアプリＡは、セッションＩＤ（３）を含み、認証サーバ２０Ｘへのリダイレクト命令を示す応答をＷｅｂブラウザ３１へ返信する（Ｓ１０５ａ）。なお、Ｗｅｂブラウザ３１からのアクセス要求にセッションＩＤ（３）が含まれているため、ＷｅｂアプリＡは、図８のステップＳ１０５におけるセッションＩＤの発行は行わない。
【００３９】
続いて、ステップＳ１１０〜Ｓ１３１が実行され、ＷｅｂアプリＡは、「認証サーバ２０Ｘによる認証結果」をセッションＩＤ（３）と共に受信する。
【００４０】
その後、何らかのタイミング（例えば、図８のステップＳ１３５〜ステップＳ１７０が実行された際のステップＳ１７０のタイミング）で、認証サーバ２０ＹがセッションＩＤ（３）と共に「認証サーバ２０Ｙによる認証結果」をＷｅｂアプリＡに送信すると（Ｓ１７０ａ）、ＷｅｂアプリＡは、「認証サーバ２０Ｘによる認証結果」及び「認証サーバ２０Ｙによる認証結果」に基づき、認証サーバ２０Ｙに対してユーザＵとしてのログインを許可してしまう（Ｓ２２０ａ）。その結果、認証サーバ２０Ｙは、ユーザＵになりすまして、ＷｅｂアプリＡを利用できてしまう。
【００４１】
続いて、上記の技術的課題１及び技術的課題２を解決するＷｅｂサーバ１０について詳細に説明する。
【００４２】
図１０は、本発明の実施の形態におけるＷｅｂサーバ１０のハードウェア構成例を示す図である。図１０のＷｅｂサーバ１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００４３】
Ｗｅｂサーバ１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００４４】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってＷｅｂサーバ１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００４５】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard  Disk  Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００４６】
図１１は、本発明の実施の形態におけるＷｅｂサーバ１０の機能構成例を示す図である。図１１において、Ｗｅｂサーバ１０が有するＷｅｂアプリＡのプログラムは、登録部１１、第１セッションＩＤ発行部１２、第１認証結果受信部１３、第２セッションＩＤ発行部１４、第２認証結果受信部１５及びログイン判定部１６等としてＷｅｂサーバ１０のＣＰＵ１０４を機能させる。ＷｅｂアプリＡは、登録情報記憶部１１１及びセッション情報記憶部１１２等を利用する。これら各記憶部は、例えば、補助記憶装置１０２、又はＷｅｂサーバ１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００４７】
登録部１１は、ＷｅｂアプリＡに対するユーザアカウント（ユーザＵ）に対応する、各認証サーバ２０（認証サーバ２０Ｘ、認証サーバ２０Ｙ）におけるユーザＩＤの登録をユーザ端末３０（Ｗｅｂブラウザ３１）から受け付け、当該ユーザアカウントに関連付けて、各認証サーバ２０におけるユーザＩＤを登録情報記憶部１１１に記憶する。したがって、登録情報記憶部１１１には、ＷｅｂアプリＡに対する各ユーザアカウントについて、認証サーバ２０Ｘに登録されているユーザＩＤ、及び認証サーバ２０Ｙに登録されているユーザＩＤが対応付けられて記憶される。以下、対応付けられたＷｅｂアプリＡに対するユーザアカウント、各認証サーバ２０におけるユーザＩＤの組みを「登録情報」という。
【００４８】
第１セッションＩＤ発行部１２は、認証サーバ２０Ｘからの認証結果をＷｅｂサーバ１０から受信するためのセッション（図８における、セッション（１））のセッションＩＤ（１）を生成し、当該セッションＩＤ（１）をＷｅｂブラウザ３１に発行する。
【００４９】
第１認証結果受信部１３は、認証サーバ２０Ｘによる認証結果をセッションＩＤ（１）と共にＷｅｂブラウザ３１から受信し、セッションＩＤ（１）に関連付けて当該認証結果をセッション情報記憶部１１２に記憶する。
【００５０】
第２セッションＩＤ発行部１４は、認証サーバ２０Ｙからの認証結果をＷｅｂサーバ１０から受信するためのセッション（以下、「セッション（２）」という。）のセッションＩＤ（以下、「セッションＩＤ（２）」という。）を生成し、セッションＩＤ（２）をＷｅｂブラウザ３１に発行する。なお、第２セッションＩＤ発行部１４は、セッションＩＤ（２）を生成すると、セッションＩＤ（１）に関連付けられてセッション情報記憶部１１２に記憶されていたセッション情報を、セッションＩＤ（２）に関連付ける。そうすることで、セッションＩＤ（１）のセッション情報が、セッションＩＤ（２）に引き継がれ、実質的にセッションＩＤ（１）とセッションＩＤ（２）との対応付けが実現される。すなわち、セッションＩＤ（２）は、セッションＩＤ（１）とは異なるセッションＩＤであるが、セッションＩＤ（１）に対応付くセッションＩＤである。
【００５１】
第２認証結果受信部１５は、認証サーバ２０Ｙによる認証結果をセッションＩＤ（２）と共にＷｅｂブラウザ３１から受信し、当該認証結果をセッションＩＤ（２）に関連付けてセッション情報記憶部１１２に記憶する。
【００５２】
ログイン判定部１６は、第２認証結果受信部１５による認証結果の受信に応じ、当該認証結果と共に受信されたセッションＩＤ（２）に関連付けられてセッション情報記憶部１１２に記憶されている認証結果に基づいて、Ｗｅｂブラウザ３１によるＷｅｂアプリＡの利用（実行）の可否を判定する。
【００５３】
以下、Ｗｅｂシステム１において実行される処理手順について説明する。図１２は、登録情報の登録処理の処理手順の一例を説明するための図である。
【００５４】
ステップＳ１００において、Ｗｅｂブラウザ３１は、ＷｅｂアプリＡに対するユーザＵのアカウント（ユーザＵ）と、ユーザＵが利用する複数の認証サーバ２０のそれぞれにおけるユーザＩＤとを含む登録情報をＷｅｂアプリＡに送信する。なお、ステップＳ１００は、例えば、ユーザＵのアカウントをＷｅｂアプリＡに登録する際に実行されてもよい。具体的には、ＷｅｂアプリＡの利用を希望するユーザＵが、Ｗｅｂブラウザ３１を利用してＷｅｂアプリＡにアクセスした際にＷｅｂアプリＡから返信される、ユーザ登録用のＷｅｂページに対して、ステップＳ１００において送信される登録情報が入力されてもよい。
【００５５】
Ｗｅｂブラウザ３１は、当該登録情報を受信すると、当該登録情報を登録情報記憶部１１１に記憶する（Ｓ１０１）。
【００５６】
図１３は、登録情報記憶部１１１の構成例を示す図である。図１３に示されるように、登録情報記憶部１１１には、Ｗｅｂアプリのユーザアカウントに関連付けて、各認証サーバ２０におけるユーザＩＤが記憶される。図１３の最後のレコードは、ユーザＵについて、認証サーバ２０ＸにおけるユーザＩＤが「ＡＡＡ」であり、認証サーバ２０ＹにおけるユーザＩＤが「ａａａ」であることが示されている。すなわち、図１３における「認証サーバＸ」は、認証サーバ２０Ｘの識別情報であり、「認証サーバＹ」は、認証サーバ２０Ｙの識別情報である。なお、登録情報記憶部１１１は、技術的課題１を解決するための構成要素である。
【００５７】
図１４は、ＷｅｂアプリＡへのログイン処理の処理手順の一例を説明するための図である。図１４中、図８と同一ステップには同一ステップ番号を付し、その説明は省略する。なお、図１４では、図１３の処理手順が実行されていることが前提となる。
【００５８】
ステップＳ１０５〜Ｓ１３１までは、図８と同じである。なお、ステップＳ１０５は、第１セッションＩＤ発行部１２によって実行される。ステップＳ１３１における「認証サーバ２０Ｘによる認証結果」及びセッションＩＤ（１）の受信は、第１認証結果受信部１３によって実行される。この際、第１認証結果受信部１３は、「認証サーバ２０Ｘによる認証結果」をセッションＩＤ（１）に関するセッション情報の構成要素として、セッションＩＤ（１）に関連付けてセッション情報記憶部１１２に記憶する。なお、「認証サーバ２０Ｘによる認証結果」には、例えば、認証元である認証サーバ２０Ｘの識別情報、認証の成否を示す情報、及び認証されたユーザＩＤ（図１２の例では「ＡＡＡ」）等が含まれる。
【００５９】
続いて、第２セッションＩＤ発行部１４は、セッションＩＤ（１）とは異なるセッションＩＤ（２）を生成し、セッションＩＤ（１）に関連付けられてセッション情報記憶部１１２に記憶されているセッション情報を、セッションＩＤ（２）に関連付けてセッション情報記憶部１１２に記憶する（Ｓ１３２）。したがって、セッションＩＤ（１）に関連付けられていた「認証サーバ２０Ｘによる認証結果」も、セッションＩＤ（２）に関連付けられる。なお、この際、セッションＩＤ（１）とそのセッション情報は、セッション情報記憶部１１２から削除される。すなわち、セッションＩＤ（１）は無効化される。
【００６０】
続いて、ＷｅｂアプリＡは、「認証サーバ２０Ｘによる認証結果」及び当該セッションＩＤ（１）を受信すると、認証サーバ２０Ｙへのリダイレクト命令を示す応答をＷｅｂブラウザ３１に返信する（Ｓ１３５ａ）。当該応答には、新たなセッション（セッション（２））のセッションＩＤであるセッション（２）が含まれる。その結果、Ｗｅｂブラウザ３１に対し、ＷｅｂアプリＡへのリクエストの送信時に含める情報としてセッションＩＤ（２）が設定又は付与される。すなわち、ステップＳ１３５ａ以降におけるＷｅｂアプリＡとＷｅｂブラウザ３１とのセッションは、セッション（１）からセッション（２）に切り替えられる。
【００６１】
ステップＳ１３５ａに続いて、ステップＳ１４０〜Ｓ１６０が実行される。続いて、Ｗｅｂブラウザ３１は、ステップＳ１６０における応答が示すリダイレクト命令に従い、「認証サーバ２０Ｙによる認証結果」をセッションＩＤ（２）と共にＷｅｂアプリＡへ送信する（Ｓ１７０ａ）。すなわち、図８のステップＳ１７０と異なり、「認証サーバ２０Ｙによる認証結果」は、セッションＩＤ（２）と共にＷｅｂアプリＡに送信される。ステップＳ１３５ａにおいて、ＷｅｂアプリＡに対するセッションＩＤは、セッションＩＤ（１）からセッションＩＤ（２）に切り替えられているからである。
【００６２】
「認証サーバ２０Ｙによる認証結果」及びセッションＩＤ（２）は、第２認証結果受信部１５によって受信される。「認証サーバ２０Ｙによる認証結果」及びセッションＩＤ（２）の受信に応じ、第２認証結果受信部１５は、セッションＩＤ（２）に関連付けられてセッション情報記憶部１１２に記憶されているセッション情報に、「認証サーバ２０Ｙによる認証結果」を追加する。すなわち、「認証サーバ２０Ｙによる認証結果」がセッションＩＤ（２）に関連付けられてセッション情報記憶部１１２に記憶される。なお、「認証サーバ２０Ｘによる認証結果」には、例えば、認証元である認証サーバ２０Ｙの識別情報、認証の成否を示す情報、及び認証されたユーザＩＤ（図１２の例では「ａａａ」）等が含まれる。
【００６３】
続いて、ログイン判定部１６は、ユーザＵについてログインの可否の判定処理を実行する（Ｓ２２０ａ）。
【００６４】
続いて、ステップＳ２２０ａの詳細について説明する。図１５は、ログインの可否の判定処理の処理手順の一例を説明するためのフローチャートである。
【００６５】
ステップＳ４０１において、ログイン判定部１６は、セッションＩＤ（２）に関連付けられているセッション情報に含まれている全ての認証結果を取得する。続いて、ログイン判定部１６は、取得された全ての認証結果が認証の成功を示すか否かを判定する（Ｓ４０２）。
【００６６】
全ての認証結果が認証の成功を示す場合（Ｓ４０２でＹｅｓ）、ログイン判定部１６は、登録情報記憶部１１１（図１３）を参照して、全ての認証結果の組み合わせに対応するユーザアカウントを特定する（Ｓ４０３）。具体的には、ログイン判定部１６は、各認証結果から、認証サーバ２０の識別情報とユーザＩＤとを取得する。ログイン判定部１６は、取得された認証サーバ２０の識別情報及びユーザＩＤの組みの集合と登録情報記憶部１１１（図１３）に記憶されている認証サーバ２０の識別情報及びユーザＩＤの組みの集合とを比較して、取得された認証サーバ２０の識別情報及びユーザＩＤの集合に対応するユーザアカウントを特定する。図１４の例では、「認証サーバ２０Ｘによる認証結果」から取得されたユーザＩＤが「ＡＡＡ」であり、「認証サーバ２０Ｙによる認証結果」から取得されたユーザＩＤが「ａａａ」であれば、ユーザアカウントとして「ユーザＵ」が特定される。
【００６７】
ユーザアカウントの特定に成功した場合（Ｓ４０４でＹｅｓ）、ログイン判定部１６は、特定されたユーザアカウントでのログインを許可する（Ｓ４０５）。
【００６８】
一方、ステップＳ４０２においていずれかの認証結果が認証の失敗を示す場合、又はステップＳ４０４においてユーザアカウントの特定に失敗した場合（Ｓ４０４でＮｏ）、ログイン判定部１６は、ログインを拒否する（Ｓ４０６）。
【００６９】
上述したように、本実施の形態によれば、複数の認証サーバ２０を用いる際における技術的課題１及び技術的課題２の双方を解決することができる。すなわち、ＷｅｂアプリＡは、登録情報記憶部１１１に基づいて、各認証結果の組み合わせに対応するユーザ（ユーザアカウント）を特定することができる（技術的課題１を解決できる）。
【００７０】
また、ＷｅｂアプリＡは、各認証サーバ２０による認証結果を受信するためのセッションを認証サーバ２０ごとに切り替えることにより、セッションフィクセーションの脅威を回避しつつ、各認証サーバ２０による認証結果を受信することができる。具体的には、図１４において、セッションフィクセーションが行われ、セッションＩＤ（１）が攻撃者からＷｅｂブラウザ３１に通知されたセッションＩＤであったとする。この場合、ステップＳ１３２においてセッションＩＤ（１）に関連付けられていたセッション情報（「認証サーバ２０Ｘによる認証結果」）は、セッションＩＤ（２）に引き継がれる。したがって、攻撃者がセッションＩＤ（１）と共に「認証サーバ２０Ｙによる認証結果」をＷｅｂアプリＡに送信したとしても、「認証サーバ２０Ｙによる認証結果」は、セッションＩＤ（２）に関連付けられることはない。その結果、「認証サーバ２０Ｘによる認証結果」と「認証サーバ２０Ｙによる認証結果」との組に基づいて、ログインが許可されるのを回避することができる。
【００７１】
このように、本実施の形態によれば、Ｗｅｂアプリケーションへのなりすましログインを防ぐことができる。
【００７２】
なお、図１４では、セッションＩＤ（１）のセッション情報をセッションＩＤ（２）に引き継ぐことで、セッションＩＤ（１）とセッションＩＤ（２）との関連付けが維持される例を示した。但し、セッションＩＤ（２）にセッションＩＤ（１）を関連付ける情報をセッション情報記憶部１１２に記憶し、各セッションＩＤに関連付けられている認証結果に基づいてログインの可否が判定されるようにしてもよい。
【００７３】
また、上記では、２つの認証サーバ２０が利用される例を示したが、３つ以上の認証サーバ２０が利用されるようにしてもよい。
【００７４】
なお、本実施の形態において、第１セッションＩＤ発行部１２は、第１の発行部の一例である。第１認証結果受信部１３は、第１の受信部の一例である。第２セッションＩＤ発行部１４は、第２の発行部の一例である。第２認証結果受信部１５は、第２の受信部の一例である。ログイン判定部１６は、判定部の一例である。セッションＩＤ（１）は、第１のセッションＩＤの一例である。セッションＩＤ（２）は、第２のセッションＩＤの一例である。「認証サーバ２０Ｘによる認証結果」は、第１の認証結果の一例である。「認証サーバ２０Ｙによる認証結果」は、第２の認証結果の一例である。認証サーバ２０Ｘは、第１の認証サーバの一例である。認証サーバ２０Ｙは、第２の認証サーバの一例である。
【００７５】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００７６】
以上の説明に関し、更に以下の項を開示する。
（付記１）
Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行する第１の発行部と、
前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信する第１の受信部と、
前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行する第２の発行部と、
前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信する第２の受信部と、
前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する判定部と、
を有することを特徴とするＷｅｂサーバ。
（付記２）
前記判定部は、前記Ｗｅｂアプリケーションのユーザごとに記憶部に記憶されている、認証サーバごとのユーザＩＤの組み合わせと、前記第１の認証結果及び前記第２の認証結果に含まれるユーザＩＤとを比較して、前記Ｗｅｂアプリケーションの利用の可否を判定する、
ことを特徴とする付記１記載のＷｅｂサーバ。
（付記３）
Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行し、
前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信し、
前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行し、
前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信し、
前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する、
処理をコンピュータが実行することを特徴とするログイン判定方法。
（付記４）
前記判定する処理は、前記Ｗｅｂアプリケーションのユーザごとに記憶部に記憶されている、認証サーバごとのユーザＩＤの組み合わせと、前記第１の認証結果及び前記第２の認証結果に含まれるユーザＩＤとを比較して、前記Ｗｅｂアプリケーションの利用の可否を判定する、
ことを特徴とする付記３記載のログイン判定方法。
（付記５）
Ｗｅｂアプリケーションの利用を要求するＷｅｂブラウザに対して第１のセッションＩＤを発行し、
前記Ｗｅｂブラウザのユーザについての第１の認証サーバによる第１の認証結果を前記第１のセッションＩＤと共に受信し、
前記Ｗｅｂブラウザに対して、前記第１のセッションＩＤに関連付く第２のセッションＩＤを発行し、
前記ユーザについての第２の認証サーバによる第２の認証結果を前記第２のセッションＩＤと共に受信し、
前記第２のセッションＩＤと共に受信した前記第２の認証結果と、前記第２のセッションＩＤに関連付く前記第１のセッションＩＤと共に受信した前記第１の認証結果とに基づいて、前記Ｗｅｂブラウザによる前記Ｗｅｂアプリケーションの利用の可否を判定する、
処理をコンピュータに実行させることを特徴とするプログラム。
（付記６）
前記判定する処理は、前記Ｗｅｂアプリケーションのユーザごとに記憶部に記憶されている、認証サーバごとのユーザＩＤの組み合わせと、前記第１の認証結果及び前記第２の認証結果に含まれるユーザＩＤとを比較して、前記Ｗｅｂアプリケーションの利用の可否を判定する、
ことを特徴とする付記５記載のプログラム。
【符号の説明】
【００７７】
１            Ｗｅｂシステム
１０          Ｗｅｂサーバ
１１          登録部
１２          第１セッションＩＤ発行部
１３          第１認証結果受信部
１４          第２セッションＩＤ発行部
１５          第２認証結果受信部
１６          ログイン判定部
２０Ｘ        認証サーバ
２０Ｙ        認証サーバ
３０          ユーザ端末
３１          Ｗｅｂブラウザ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１１１        登録情報記憶部
１１２        セッション情報記憶部
Ａ            Ｗｅｂアプリ
Ｂ            バス
【図１】
2020113006.tif 000003
【図２】
2020113006.tif 000004
【図３】
2020113006.tif 000005
【図４】
2020113006.tif 000006
【図５】
2020113006.tif 000007
【図６】
2020113006.tif 000008
【図７】
2020113006.tif 000009
【図８】
2020113006.tif 000010
【図９】
2020113006.tif 000011
【図１０】
2020113006.tif 000012
【図１１】
2020113006.tif 000013
【図１２】
2020113006.tif 000014
【図１３】
2020113006.tif 000015
【図１４】
2020113006.tif 000016
【図１５】
2020113006.tif 000017