(57)【要約】【課題】  ２段階認証のための方法、コンピュータ・システム、及びコンピュータ・プログラムを提供する。【解決手段】  クライアントが、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ユーザ識別子及びパスワードをサーバに伝送する。クライアントは、サーバとの認証セッションを確立し、そこで、クライアントはＡＰＩと関連した動作に対する第１のセットのパーミッションを有する。クライアントは、サーバによるユーザ識別子及びパスワードの検証に応答して、ログオン応答及び共有シークレットを受け取る。クライアントは、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成する。クライアントは、ＡＰＩを介してＯＴＰをサーバに送る。サーバが共有シークレットに対してＯＴＰを検証することに応答して、サーバは、ＡＰＩと関連した動作に対する第２のセットのパーミッションを与える。【選択図】      図３
2020531990.tif 000002
【特許請求の範囲】
【請求項１】
２段階認証のための方法であって、前記方法は、
クライアントにより、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ユーザ識別子及びパスワードをサーバに伝送することと、
前記サーバとの認証セッションを確立することであって、前記クライアントは前記ＡＰＩと関連した動作に対する第１のセットのパーミッションを有する、確立することと、
前記サーバによる前記ユーザ識別子及びパスワードの検証に応答して、ログオン応答及び共有シークレットを受け取ることと、
前記クライアントにより、前記共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成することと、
前記ＡＰＩを介して前記ＯＴＰを前記サーバに送ることと、
前記サーバが前記共有シークレットに対して前記ＯＴＰを検証することに応答して、前記ＡＰＩと関連した動作に対する第２のセットのパーミッションを与えることと、
を含む、方法。
【請求項２】
前記クライアント・デバイスにより、ユーザから、前記ユーザ識別子及びパスワードを受け取ることをさらに含む、請求項１に記載の方法。
【請求項３】
前記ログオン応答及び共有シークレットを受け取ることは、前記ユーザ識別子と関連したユーザが、１要素認証から２要素認証へアップグレードするように指定されるとの判断に応答する、請求項１又は２に記載の方法。
【請求項４】
前記クライアントにより、前記共有シークレットを、ユーザと関連したクライアント・プリファレンス内に格納することをさらに含む、請求項１乃至３のいずれかに記載の方法。
【請求項５】
前記サーバは、前記共有シークレットを、ユーザと関連したユーザ・プロファイル内に格納するように構成される、請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記ＡＰＩは、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ（ＲＥＳＴ）ＡＰＩを含む、請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記第２のセットのパーミッションは、前記第１のセットのパーミッションを上回る、請求項１乃至６のいずれかに記載の方法。
【請求項８】
後のログオン動作において、前記ユーザＩＤ、前記パスワード、及び前記共有シークレットに基づいて生成された現在のＯＴＰを前記サーバに伝送することをさらに含む、請求項１乃至７のいずれかに記載の方法。
【請求項９】
２段階認証のためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
処理回路により読み取り可能であり、請求項１乃至８のいずれかに記載の方法を実行するための、前記処理回路により実行される命令を格納する、コンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項１０】
コンピュータ可読媒体上に格納されかつデジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項１乃至８のいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【請求項１１】
１つ又は複数のプロセッサと、１つ又は複数のコンピュータ可読メモリと、１つ又は複数のコンピュータ可読ストレージ・デバイスと、前記１つ又は複数のメモリの少なくとも１つを介して前記１つ又は複数のプロセッサの少なくとも１つにより実行される、前記１つ又は複数のストレージ・デバイスの少なくとも１つに格納されるプログラム命令とを含むコンピュータ・システムであって、前記格納されるプログラム命令は、
クライアントにより、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ユーザ識別子及びパスワードをサーバに伝送するためのプログラム命令と、
前記サーバとの認証セッションを確立するためのプログラム命令であって、前記クライアントは前記ＡＰＩと関連した動作に対する第１のセットのパーミッションを有する、確立するためのプログラム命令と、
前記サーバによる前記ユーザ識別子及びパスワードの検証に応答して、ログオン応答及び共有シークレットを受け取るためのプログラム命令と、
前記クライアントにより、前記共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成するためのプログラム命令と、
前記ＡＰＩを介して前記ＯＴＰを前記サーバに送るためのプログラム命令と、
前記サーバが前記共有シークレットに対して前記ＯＴＰを検証することに応答して、前記ＡＰＩと関連した動作に対する第２のセットのパーミッションを与えるためのプログラム命令と、
を含む、コンピュータ・システム。
【請求項１２】
前記格納されるプログラム命令は、
前記クライアント・デバイスにより、ユーザから、前記ユーザ識別子及びパスワードを受け取るためのプログラム命令をさらに含む、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記ログオン応答及び共有シークレットを受け取ることは、前記識別子と関連したユーザが１段階認証から２段階認証にアップグレードするように指定されるとの判断に応答する、請求項１１又は１２のいずれかに記載のコンピュータ・システム。
【請求項１４】
前記格納されるプログラム命令は、
前記クライアントにより、前記共有シークレットを、ユーザと関連したクライアント・プリファレンス内に格納するためのプログラム命令をさらに含む、請求項１１乃至１３のいずれかに記載のコンピュータ・システム。
【請求項１５】
前記サーバは、前記共有シークレットをユーザと関連したユーザ・プロファイル内に格納するように構成される、請求項１１乃至１４のいずれかに記載のコンピュータ・システム。
【請求項１６】
前記ＡＰＩは、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ（ＲＥＳＴ）ＡＰＩを含む、請求項１１乃至１５のいずれかに記載のコンピュータ・システム。
【請求項１７】
前記第２のセットのパーミッションは、前記第１のセットのパーミッションを上回る、請求項１１乃至１３のいずれかに記載のコンピュータ・システム。
【請求項１８】
前記格納されるプログラム命令は、後のログオン動作において、前記ユーザＩＤ、前記パスワード、及び前記共有シークレットに基づいて生成された現在のＯＴＰを前記サーバに伝送するためのプログラム命令をさらに含む、請求項１１乃至１７のいずれかに記載のコンピュータ・システム。
【請求項１９】
前記格納されるプログラム命令は、データ処理システム内のコンピュータ可読ストレージ・デバイスに格納され、前記格納されるプログラム命令は、ネットワーク上でリモート・データ処理システムから転送される、請求項１１乃至１８のいずれかに記載のコンピュータ・システム。
【請求項２０】
前記格納されるプログラム命令は、サーバ・データ処理システム内のコンピュータ可読ストレージ・デバイスに格納され、前記格納されるプログラム命令は、ネットワーク上で、リモート・データ処理システムに、前記リモート・データ処理システムと関連したコンピュータ可読ストレージ・デバイスで用いるようにダウンロードされる、請求項１１乃至１９のいずれかに記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、２段階認証のための方法、システム及びコンピュータ・プログラム製品に関する。より特定的には、本発明は、アプリケーション・プログラミング・インターフェースを介して１段階認証から２段階認証へ自動アップグレードするための方法、システム及びコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
アプリケーションのための適切なセキュア認証を提供する必要性がある。現在、ネットワーク・アプリケーション・セキュリティは、ネットワーク・サービス又はアプリケーションで認証するためにユーザがユーザ識別子（ＩＤ）及びパスワードを提供する標準的手順から、２段階認証プロセスをさらに必要とすることによって、増強される。ユーザに、ユーザＩＤ及びパスワードなどの第１の認証要素を提供することを求めることに加えて、２段階認証は、認証プロセスを完了するために、ユーザに、第２の認証要素を提供することを求める。典型的には、第２の認証要素は、ユーザに既知のシークレット又はセキュリティ・トークンなどの、認可されていないユーザに知られる可能性が低い、ユーザに既知の情報である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｍ’Ｒａｉｈｉ、Ｄ．，Ｍａｃｈａｎｉ、Ｓ．，Ｐｅｉ、Ｍ．，Ｒｙｄｅｌｌ，Ｊ．著、「ＴＯＴＰ：Ｔｉｍｅ−Ｂａｓｅｄ  Ｏｎｅ−Ｔｉｍｅ  Ｐａｓｓｗｏｒｄ  Ａｌｇｏｒｉｔｈｍ」、Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ（ＲＦＣ）６２３８、Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ（ＩＥＴＦ）、２０１１年５月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、当技術分野において、上述の問題に対処するための必要性が存在する。
【課題を解決するための手段】
【０００５】
第１の態様から見ると、本発明は、２段階認証のための方法を提供し、この方法は、クライアントにより、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ユーザ識別子及びパスワードをサーバに伝送することと；サーバとの認証セッションを確立することであって、クライアントはＡＰＩと関連した動作に対する第１のセットのパーミッションを有する、確立することと；サーバによるユーザ識別子及びパスワードの検証に応答して、ログオン応答及び共有シークレットを受け取ることと；クライアントにより、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成することと；ＡＰＩを介してＯＴＰをサーバに送ることと；サーバが共有シークレットに対してＯＴＰを検証することに応答して、ＡＰＩと関連した動作に対する第２のセットのパーミッションを与えることと、を含む。
【０００６】
更に別の態様から見ると、本発明は、２段階認証のためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、処理回路により読み取り可能であり、本発明のステップを実行するための方法を実行する、処理回路により実行される命令を格納する、コンピュータ可読ストレージ媒体を含む。
【０００７】
更に別の態様から見ると、本発明は、コンピュータ可読媒体上に格納されかつデジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、プログラムがコンピュータ上で実行されるとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【０００８】
更に別の態様から見ると、本発明は、１つ又は複数のプロセッサと、１つ又は複数のコンピュータ可読メモリと、１つ又は複数のコンピュータ可読ストレージ・デバイスと、１つ又は複数のメモリの少なくとも１つを介して１つ又は複数のプロセッサの少なくとも１つにより実行される、１つ又は複数のストレージ・デバイスの少なくとも１つに格納されるプログラム命令とを含むコンピュータ・システムを提供し、格納されるプログラム命令は、クライアントにより、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ユーザ識別子及びパスワードをサーバに伝送するためのプログラム命令と；サーバとの認証セッションを確立するためのプログラム命令であって、クライアントはＡＰＩと関連した動作に対する第１のセットのパーミッションを有する、プログラム命令と；サーバによるユーザ識別子及びパスワードの検証に応答して、ログオン応答及び共有シークレットを受け取るためのプログラム命令と；クライアントにより、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成するためのプログラム命令と；ＡＰＩを介してＯＴＰをサーバに送るためのプログラム命令と；サーバが共有シークレットに対してＯＴＰを検証することに応答して、ＡＰＩと関連した動作に対する第２のセットのパーミッションを与えるためのプログラム命令と、を含むコンピュータ・システムを提供する。
【０００９】
例示的実施形態は、方法、システム、及びコンピュータ・プログラム製品を提供する。方法の実施形態は、クライアントにより、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ユーザ識別子及びパスワードをサーバに伝送することを含む。実施形態は、サーバとの認証セッションを確立することであって、クライアントはＡＰＩと関連した動作に対する第１のセットのパーミッションを有する、確立することをさらに含む。実施形態は、サーバによるユーザ識別子及びパスワードの検証に応答して、ログオン応答及び共有シークレットを受け取ることをさらに含む。実施形態は、クライアントにより、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成することをさらに含む。実施形態は、ＡＰＩを介してＯＴＰをサーバに送ることをさらに含む。実施形態は、サーバが共有シークレットに対してＯＴＰを検証することに応答して、ＡＰＩと関連した動作に対する第２のセットのパーミッションを与えることをさらに含む。
【００１０】
実施形態は、クライアント・デバイスにより、ユーザから、ユーザ識別子及びパスワードを受け取ることをさらに含む。実施形態において、ログオン応答及び共有シークレットを受け取ることは、ユーザ識別子と関連したユーザが、１要素認証から２要素認証にアップグレードするように指定されるとの判断に応答する。
【００１１】
実施形態は、クライアントにより、共有シークレットをユーザと関連したクライアント・プリファレンス内に格納することをさらに含む。実施形態において、サーバは、共有シークレットをユーザと関連したユーザ・プロファイル内に格納するように構成される。実施形態において、ＡＰＩは、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ（ＲＥＳＴ）ＡＰＩを含む。実施形態において、第２のセットのパーミッションは、第１のセットのパーミッションを上回る。
【００１２】
実施形態は、後のログオン動作において、ユーザＩＤ、パスワード、及び共有シークレットに基づいて生成された現在のＯＴＰをサーバに伝送することをさらに含む。
【００１３】
実施形態は、コンピュータ使用可能プログラム製品をさらに含む。コンピュータ使用可能プログラム製品は、１つ又は複数のコンピュータ可読ストレージ・デバイスと、１つ又は複数のストレージ・デバイスの少なくとも１つに格納されるプログラム命令とを含む。実施形態は、コンピュータ・システムを含む。コンピュータ・システムは、１つ又は複数のプロセッサ、１つ又は複数のコンピュータ可読メモリ、及び１つ又は複数のコンピュータ可読ストレージ・デバイス、並びに１つ又は複数のメモリの少なくとも１つを介して１つ又は複数のプロセッサの少なくとも１つにより実行される、１つ又は複数のストレージ・デバイスの少なくとも１つに格納されるプログラム命令を含む。
【００１４】
本発明の特徴と考えられる特定の新規な特徴は、添付の特許請求の範囲に記載されている。しかしながら、本発明自体、並びに好ましい使用方法、さらにその目的及び利点は、例示的実施形態の以下の詳細な説明を添付の図面と共に参照することによって、最も良く理解されるであろう。
【図面の簡単な説明】
【００１５】
【図１】例示的実施形態が実施され得るデータ処理システムのネットワークのブロック図を示す。
【図２】例示的実施形態が実施され得るデータ処理システムのブロック図を示す。
【図３】例示的実施形態による、２段階認証の自動アップグレードのための例示的構成のブロック図を示す。
【図４】例示的実施形態による、２段階認証の自動アップグレードのための例示的プロセスのメッセージ・フローを示す。
【図５】例示的実施形態による、２段階認証の自動アップグレードのための例示的なクライアント側プロセスのフローチャートを示す。
【図６】例示的実施形態による、２段階認証の自動アップグレードのための例示的なサーバ側プロセスのフローチャートを示す。
【発明を実施するための形態】
【００１６】
種々の例示的実施形態は、ステートレス・プロトコル（stateless protocol）のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を利用するサーバ・アプリケーション又はサービスのための、１段階認証から２段階認証への自動アップグレードを提供する。ステートレス・プロトコルは、通信セッションの期間中、送信者又は受信者のいずれもセッション情報を保持することを要求しない。１つ又は複数の実施形態は、ＲＥＳＴ  ＡＰＩ作業領域の他に付加的な段階を必要とせずに、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ（ＲＥＳＴ）ＡＰＩを完全にイン・バンドで利用するサーバ・アプリケーション又はサービスに対する、１段階認証から２段階認証への自動アップグレードを提供する。２段階認証は、２要素認証（two factor authentication）と呼ばれることもある。特定の実施形態において、認証のためにユーザＩＤ及びパスワードのみを利用する１段階認証が、特定のユーザに対して、認証のためにユーザＩＤ／パスワード、並びにワンタイム・パスコードを利用する２段階認証に自動的にアップグレードされる。
【００１７】
２要素認証の従来の使用事例において、ユーザは、ブラウザを介してウェブ・アプリケーションにログオンし、ユーザＩＤ及びパスワードを入力し、ユーザと関連したユーザ・プロファイル内の２要素認証を可能にする。次に、ユーザは、一般にＱＲコードを走査することにより、スマートフォン又は他のデバイスで共有シークレットをキャプチャする。ユーザは、共有シークレットに基づいたパスコードを生成し、検証のためにパスコードを認証サーバにサブミットする。既存の実施形態において、ユーザは、ウェブ・ブラウザを介してログオンすることにより、従来の方法で第２の要素を設定するように求められ、ＡＰＩアクセスと比較すると、共有シークレット及びアルゴリズムと同じではない別個の認証トークンがウェブ・アクセスのために用いられる。
【００１８】
本明細書に記載される１つ又は複数の特定の実施形態は、ＲＥＳＴ  ＡＰＩを介してウェブ・アプリケーションと対話するユーザが、従来のウェブ・ブラウザに利用可能な同じ機能のセットを利用し、ＲＥＳＴ  ＡＰＩクライアントを介する認証として、そのユーザ・アカウントのための２段階認証を可能にする。
【００１９】
実施形態において、特定のユーザが、次のログオン試行で１又は複数のアプリケーション又はサービスへのアクセスを与えるために、１要素認証から２要素認証へのアップグレードを要求するように指定される。特定の実施形態において、ユーザは、アプリケーション又はサービスの管理者により、２要素認証を要求するように指定される。実施形態において、ユーザは、ウェブ・サービス（ＲＥＳＴ  ＡＰＩ）クライアント・アプリケーションを用いてユーザＩＤ及びパスワードを提供することにより、認証サーバなどのサーバにログオンする。実施形態において、サーバは、ユーザＩＤ及びパスワードを用いてユーザを検証するよう試みる。
【００２０】
成功裡に認証すると、ウェブ・サービス・セッションなどのセッションが、サーバとクライアントとの間に確立され、そこで、ユーザは制限されたログオン状態にある。制限されたログオン状態では、ユーザは認証されるものの、限定されたセットのＡＰＩ動作に対するアクセス・パーミッションしか有さない。実施形態において、サーバは、共有シークレットを生成し、共有シークレットをセッション内に格納する。１つ又は複数の実施形態において、共有シークレットは、公開鍵暗号化などの鍵共有プロトコル（key-agreement protocol）を用いて作成される、クライアント及びサーバのみに知られる情報である。特定の実施形態において、共有シークレットは、パスワード、パスフレーズ、又は疑似ランダムに生成される数若しくは文字列である。実施形態において、サーバは、セッション特有のデータ及び共有シークレットを含むログオン応答をクライアントに送り返す。
【００２１】
実施形態において、クライアント・アプリケーションは、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成する。ＯＴＰは、非特許文献１に記載されるような時間ベースのワンタイム・パスコード（ＴＯＴＰ）アルゴリズムを用いて、共有シークレットから生成される。１つ又は複数の実施形態において、サーバは、暗号ハッシュ関数を用いて、共有シークレットを現在のタイムスタンプと組み合わせ、ワンタイム・パスコードを生成する。実施形態において、クライアントは、ＯＴＰが、ユーザと関連したユーザ・プロファイルへの共有シークレットの設定を要求することを含むＡＰＩ要求をサーバに送る。
【００２２】
ＯＴＰの受信に応答して、サーバは、共有シークレットに対してそのＯＴＰを検証する。検証が成功した場合、サーバは、共有シークレットをユーザ・プロファイル内に格納し、成功応答をクライアントに送り返す。実施形態において、クライアント・アプリケーションは、共有シークレットをＲＥＳＴ  ＡＰＩクライアント・プリファレンス又は別のデータベースに格納する。実施形態において、ユーザからの後のログオンは、ユーザが、サーバに認証されてサーバにより提供されるアプリケーション及びサービスへのアクセスを得るために、ユーザＩＤ、パスワード、及び共有シークレットに基づいた現在のＯＴＰをサブミットすることを求める。
【００２３】
例示的実施形態が、単なる例として、特定のタイプのサービス、伝送、データ処理システム、環境、コンポーネント、及びアプリケーションに関連して説明される。これら及他の類似のアーチファクトのいずれの特定の発現も、本発明を限定することを意図するものではない。これら及び他の類似のアーチファクトのいずれの適切な発現も、例示的実施形態の範囲内で選択され得る。
【００２４】
さらに、例示的実施形態は、データ・ネットワーク上で任意のタイプのデータ、データ・ソース、又はデータ・ソースへのアクセスに関して実施され得る。任意のタイプのデータ・ストレージ・デバイスは、本発明の範囲内で、データ処理システムにおいて局所的に又はデータ・ネットワーク上でデータを本発明の実施形態に提供することができる。実施形態がモバイル・デバイスを用いて説明される場合、モバイル・デバイスと共に使用するのに適したいずれのタイプのデータ・ストレージ・デバイスも、例示的実施形態の範囲内で、モバイル・デバイスにおいて局所的に又はデータ・ネットワーク上でデータをそうした実施形態に提供することができる。
【００２５】
例示的実施形態は、例示的実施形態への制限ではなく単なる例として、特定のコード、設計、アーキテクチャ、プロトコル、レイアウト、概略図及びツールを用いて説明される。さらに、例示的実施形態は、幾つかの例において、説明を明確にするために単なる例として、特定のソフトウェア、ツール及びデータ処理環境を用いて説明される。例示的実施形態は、他の比較可能な又は同様の目的の構造、システム、アプリケーション、又はアーキテクチャと併せて用いることができる。例えば、本発明の範囲内で、他の比較可能なモバイル・デバイス、構造、システム、アプリケーション、又はそのためのアーキテクチャを、本発明のそうした実施形態と併せて用いることができる。例示的実施形態は、ハードウェア、ソフトウェア、又はその組み合わせで実施され得る。
【００２６】
本開示における例は、説明を明確にするために用いられるにすぎず、例示的実施形態に限定するものではない。本開示から付加的なデータ、動作、アクション、タスク、アクティビティ及び操作を考えることができ、それらは例示的実施形態の範囲内にあると考えられる。
【００２７】
本明細書に列挙されるいずれの利点も単なる例にすぎず、例示的実施形態に限定するように意図されたものではない。付加的な又は異なる利点が、特定の例示的実施形態により実現され得る。さらに、特定の例示的実施形態が、上に列挙される利点の幾つか、全てを有することがあり、又はそのいずれも有していないこともある。
【００２８】
図を参照すると、特に図１及び図２を参照すると、これらの図は、例示的実施形態が実施され得るデータ処理環境の例示的な図である。図１及び図２は単なる例にすぎず、異なる実施形態が実施され得る環境に関するいずれかの限定を主張又は意味することを意図しない。特定の実施は、以下の説明に基づいて、示される環境への多くの修正をなすことができる。
【００２９】
図１は、例示的実施形態が実施され得るデータ処理システムのネットワークのブロック図を示す。データ処理環境１００は、例示的実施形態が実施され得るコンピュータのネットワークである。データ処理環境１００は、ネットワーク１０２を含む。ネットワーク１０２は、データ処理環境１００内で互いに接続される種々のデバイスとコンピュータとの間の通信リンクを与えるために用いられる媒体である。ネットワーク１０２は、有線、無線通信リンク、又は光ファイバ・ケーブルなどの接続を含むことができる。
【００３０】
クライアント又はサーバは、ネットワーク１０２に接続された特定のデータ処理システムの例示的な役割にすぎず、これらのデータ処理システムについての他の構成又は役割を排除することを意図しない。サーバ１０４及びサーバ１０６は、ストレージ・ユニット１０８と共にネットワーク１０２に結合される。ソフトウェア・アプリケーションは、データ処理環境１００内のいずれかのコンピュータ上で実行され得る。クライアント１１０、１１２及び１１４もネットワーク１０２に結合される。サーバ１０４若しくは１０６、又はクライアント１１０、１１２、若しくは１１４などのデータ処理システムは、データを含むことができ、そこで実行されるソフトウェア・アプリケーション又はソフトウェア・ツールを有し得る。
【００３１】
単なる例として、こうしたアーキテクチャのいかなる限定も意味することなく、図１は、実施形態の例示的実施において使用可能な特定のコンポーネントを示す。例えば、サーバ１０４及び１０６、並びにクライアント１１０、１１２、１１４は、単なる例として、サーバ及びクライアントとして示され、クライアント−サーバ・アーキテクチャの限定を意味しない。別の例として、実施形態は、幾つかのデータ処理システム及び示されるようなデータ・ネットワークにわたって分散することができ、一方、別の実施形態は、例示的実施形態の範囲内の単一のデータ処理システム上で実施することができる。データ処理システム１０４、１０６、１１０、１１２及び１１４は、クラスタ、パーティション、及び実施形態を実施するのに適した他の構成における例示的ノードも表す。
【００３２】
デバイス１３２は、本明細書で説明されるデバイスの例である。例えば、デバイス１３２は、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、固定型若しくは携帯型のクライアント１１０、ウェアラブル・コンピューティング・デバイス、又は他のいずれかの好適なデバイスの形をとることができる。図１の別のデータ処理システムにおいて実行されているように説明されるいずれのソフトウェア・アプリケーションも、デバイス１３２において同様の方法で実行されるように構成することができる。図１の別のデータ処理システムに格納又は生成されるいずれのデータ又は情報も、デバイス１３２内に同様の方法で格納又は生成されるように構成することができる。
【００３３】
サーバ１０４のサーバ・アプリケーション１０５は、本明細書で説明されるサーバ側認証動作の実施形態を実施する。データベース１０９は、図示のような又は別のソース（図示せず）により与えられるストレージ１０８内に格納され得る。特定の実施形態において、データベース１０９は、１又は複数のユーザと関連したユーザ・プロファイル情報を格納することができる。クライアント・アプリケーション１１１は、本明細書で説明されるクライアント側認証動作の実施形態を実施する。
【００３４】
サーバ１０４及び１０６、ストレージ・ユニット１０８、及びクライアント１１０、１１２及び１１４、並びにデバイス１３２は、有線接続、無線通信プロトコル、又は他の好適なデータ接続を用いて、ネットワーク１０２に結合することができる。クライアント１１０、１１２及び１１４は、例えば、パーソナル・コンピュータ又はネットワーク・コンピュータとすることができる。
【００３５】
示される例において、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ及びアプリケーションなどのデータをクライアント１１０、１１２及び１１４に提供することができる。クライアント１１０、１１２及び１１４は、この例では、サーバ１０４に対するクライアントとすることができる。クライアント１１０、１１２、１１４、又はその何らかの組み合わせは、それぞれのデータ、ブート・ファイル、オペレーティング・システム・イメージ及びアプリケーションを含むことができる。データ処理環境１００は、付加的なサーバ、クライアント、及び図示されていない他のデバイスを含むことができる。
【００３６】
示される例において、データ処理環境１００は、インターネットであり得る。ネットワーク１０２は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、及び互いに通信するための他のプロトコルを使用するネットワーク及びゲートウェイの集まりを表すことができる。インターネットの中心は、データ及びメッセージを送る何千もの商用、政府、教育、及びその他のコンピュータ・システムを含む主要なノード又はホスト・コンピュータ間のデータ通信リンクのバックボーンである。もちろん、データ処理環境１００は、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）等の多数の異なるタイプのネットワークとしても実装され得る。図１は、異なる例示的実施形態に対するアーキテクチャ上の限定としてではなく、一例として意図される。
【００３７】
他の使用の中でも、データ処理環境１００は、例示的実施形態が実施され得るクライアント−サーバ環境を実施するために用いられ得る。クライアント−サーバ環境は、ソフトウェア・アプリケーション及びデータがネットワークにわたって分散されるのを可能にするので、アプリケーションは、クライアント・データ処理システムとサーバ・データ処理システムとの間の対話性を用いて機能する。データ処理システム１００は、サービス指向型アーキテクチャを用いることもでき、そこで、ネットワークにわたって分散された相互運用可能なソフトウェア・コンポーネントは、一貫したビジネス・アプリケーションとして互いにパッケージ化され得る。データ処理環境１００は、クラウドの形をとることもでき、最小の管理作業又はサービス・プロバイダとの最小限の対話しか伴わずに迅速にプロビジョニング及びリリースされ得る、構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン及びサービス）の共有プールに対する便利な、オンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのクラウド・コンピューティング・モデルを利用する。
【００３８】
図２を参照すると、この図は、例示的実施形態が実施され得るデータ処理システムのブロック図を示す。データ処理システム２００は、図１のサーバ１０４及び１０６、又はクライアント１１０、１１２及び１１４などのコンピュータ、又は別のタイプのデバイスの例であり、その中に、例示的実施形態のためのプロセスを実施するコンピュータ使用可能プログラム・コード又は命令が配置され得る。
【００３９】
データ処理システム２００は、図１のデバイス１３２のような、データ処理システム又は内部の構成も表し、その中に、例示的実施形態のプロセスを実施するコンピュータ使用可能プログラム・コード又は命令が配置され得る。データ処理システム２００は、単なる例としてコンピュータとして説明されるが、それに限定されるものではない。図１のデバイス１３２などの他のデバイスの形の実装は、タッチ・インターフェースを付加することなどにより、データ処理システム２００を修正することができ、本明細書で説明されるデータ処理システム２００の動作及び機能の一般的な説明を逸脱することなく、データ処理システム２００から特定の示されるコンポーネントを排除することさえ可能である。
【００４０】
示される例において、データ処理システム２００は、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２と、サウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４とを含む、ハブ・アーキテクチャを利用する。処理ユニット２０６、メイン・メモリ２０８、及びグラフィックス・プロセッサ２１０は、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２に結合される。処理ユニット２０６は、１つ又は複数のプロセッサを含むことができ、１つ又は複数の異種のプロセッサ・システムを用いて実装され得る。処理ユニット２０６は、マルチコア・プロセッサとすることができる。特定の実装において、グラフィックス・プロセッサ２１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を通して、ＮＢ／ＭＣＨ２０２に結合され得る。
【００４１】
示される例においては、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２は、サウス・ブリッジ及びＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に結合される。音声アダプタ２１６、キーボード及びマウス・アダプタ２２０、モデム２２２、読み出し専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）及び他のポート２３２、並びにＰＣＩ／ＰＣＩｅデバイス２３４は、バス２３８を通して、サウス・ブリッジ及びＩ／Ｏコントローラ・ハブ２０４に結合される。ハードディスク・ドライブ（ＨＤＤ）又はソリッド・ステート・ドライブ（ＳＳＤ）２２６及びＣＤ−ＲＯＭ２３０は、バス２４０を通して、サウス・ブリッジ及びＩ／Ｏコントローラ・ハブ２０４に結合される。ＰＣＩ／ＰＣＩｅデバイス２３４は、例えば、Ｅｔｈｅｒｎｅｔアダプタ、アドイン・カード、及びノートブック・コンピュータ用のＰＣカードを含むことができる。ＰＣＩは、カード・バス・コントローラを使用するが、ＰＣＩｅは使用しない。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入力／出力システム（ＢＩＯＳ）とすることができる。ハードディスク・ドライブ２２６及びＣＤ−ＲＯＭ２３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ）、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）インターフェース、又はエクスターナルＳＡＴＡ（ｅＳＡＴＡ）及びマイクロＳＡＴＡ（ｍＳＡＴＡ）などの変形を使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス２３６は、バス２３８を通して、サウス・ブリッジ及びＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に結合され得る。
【００４２】
メイン・メモリ２０８、ＲＯＭ２２４、又はフラッシュ・メモリ（図示せず）などのメモリは、コンピュータ使用可能ストレージ・デバイスの幾つかの例である。ハードディスク・ドライブ又はソリッド・ステート・ドライブ２２６、ＣＤ−ＲＯＭ２３０及び他の同様の使用可能なデバイスは、コンピュータ使用可能ストレージ媒体を含むコンピュータ使用可能ストレージ・デバイスの幾つかの例である。
【００４３】
オペレーティング・システムは、処理ユニット２０６上で動作する。オペレーティング・システムは、図２のデータ処理システム２００内の種々のコンポーネントを連携させ、それらの制御を提供する。オペレーティング・システムは、これらに限定されるものではないが、サーバ・システム、パーソナル・コンピュータ及びモバイル・デバイスを含む、任意のタイプのコンピューティング・プラットフォーム用の市販のオペレーティング・システムとすることができる。オブジェクト指向又は他のタイプのプログラミング・システムは、オペレーティング・システムと共に動作し、データ処理システム２００上で実行されるプログラム又はアプリケーションから、オペレーティング・システムへの呼び出しを提供することができる。
【００４４】
オペレーティング・システム、オブジェクト指向プログラミング・システム、及び図１のサーバ・アプリケーション１０５若しくはクライアント・アプリケーション１１１などのアプリケーション又はプログラムのための命令は、例えばハードディスク・ドライブ２２６上のコード２２６Ａの形でストレージ・デバイス上に配置され、例えば処理ユニット２０６によって実行するために、メイン・メモリ２０８などの１つ又は複数のメモリの少なくとも１つにロードされ得る。例示的実施形態のプロセスは、例えば、メイン・メモリ２０８、読み出し専用メモリ２２４などのメモリ内に、又は１つ又は複数の周辺デバイス内に配置され得る、コンピュータ実施命令を用いて、処理ユニット２０６により実行され得る。
【００４５】
さらに、１つの事例では、コード２２６Ａは、ネットワーク２０１Ａ上でリモート・システム２０１Ｂからダウンロードすることができ、そこで、同様のコード２０１Ｃがストレージ・デバイス２０１Ｄ上に格納される。別の事例では、コード２２６Ａは、ネットワーク２０１Ａ上でリモート・システム２０１Ｂにダウンロードすることができ、そこで、ダウンロードされたコード２０１Ｃがストレージ・デバイス２０１Ｄ上に格納される。
【００４６】
図１〜図２に示されるハードウェアは、実装に応じて変化し得る。フラッシュ・メモリ、同等の不揮発性メモリ、又は光学ディスク・ドライブ等といった、他の内部ハードウェア又は周辺デバイスが、図１〜図２に示されるハードウェアに加えて又はそれらの代わりに使用され得る。さらに、例示的実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用され得る。
【００４７】
幾つかの例示的な例において、データ処理システム２００は、通常、オペレーティング・システム・ファイル及び／又はユーザ生成データを格納するための不揮発性メモリを提供するフラッシュ・メモリを有するように構成される、携帯情報端末（ＰＤＡ）とすることができる。バス・システムは、システム・バス、Ｉ／Ｏバス、及びＰＣＩバスなどの１つ又は複数のバスを含むことができる。もちろん、バス・システムは、ファブリック又はアーキテクチャに取り付けられた異なるコンポーネント又はデバイス間のデータの転送を提供する任意のタイプの通信ファブリック又はアーキテクチャを用いて実施することができる。
【００４８】
通信ユニットは、モデム又はネットワーク・アダプタなどのデータを受送信するために使用される１つ又は複数のデバイスを含むことができる。メモリは、例えば、メイン・メモリ２０８、又はノース・ブリッジ及びメモリ・コントローラ・ハブ２０２内に見出されるキャッシュなどのキャッシュとすることができる。処理ユニットは、１つ又は複数のプロセッサ又はＣＰＵを含むことができる。
【００４９】
図１〜図２の示される例及び上述の例は、アーキテクチャ上の制限を意味することを意図しない。例えば、データ処理システム２００は、モバイル又はウェアラブル・デバイスの形をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、又は電話デバイスとすることもできる。
【００５０】
コンピュータ又はデータ処理システムが、仮想マシン、仮想デバイス、又は仮想コンポーネントとして説明される場合、仮想マシン、仮想デバイス、又は仮想コンポーネントは、データ処理システム２００内に示される一部又は全てのコンポーネントの仮想化された発現（manifestation）を用いてデータ処理システム２００の方法で動作する。例えば、仮想マシン、仮想デバイス、又は仮想コンポーネントにおいて、処理ユニット２０６は、ホスト・データ処理システムにおいて利用可能なハードウェア処理ユニット２０６の全て又は一部の数の仮想化インスタンスとして発現され、メイン・メモリ２０８は、ホスト・データ処理システムにおいて利用可能であり得るメイン・メモリ２０８の全ての部分又は一部分の仮想化インスタンスとして発現され、ディスク２２６は、ホスト・データ処理システムにおいて利用可能であり得るディスク２２６の全ての部分又は一部分の仮想化インスタンスとして発現される。ホスト・データ処理システムは、そのような場合、データ処理システム２００により表される。
【００５１】
図３を参照すると、この図は、例示的実施形態による、２段階認証の自動アップグレードのための例示的構成のブロック図を示す。クライアント３０２は、図１のクライアント１１０の例であり、クライアント・アプリケーション３０６は、図１のクライアント・アプリケーション１１１の例である。サーバ３０４は、図１のサーバ１０４の例であり、サーバ・アプリケーション３１４は、図１のサーバ・アプリケーション１０５の例である。ネットワーク３００は、図１のネットワーク１０２の例である。
【００５２】
クライアント・アプリケーション３０６は、認証コンポーネント３０８、ＲＥＳＴ  ＡＰＩコンポーネント３１０、及びクライアント・プリファレンス・コンポーネント３１２を含む。認証コンポーネント３０８は、本明細書で説明されるような共有シークレットからのＯＴＰの生成など、クライアント側認証動作を実行するように構成される。ＲＥＳＴ  ＡＰＩコンポーネント３１０は、本明細書で説明されるような、クライアント３０２とサーバ３０４との間などの、ＲＥＳＴベースのメッセージ動作を実行するように構成される。クライアント・プリファレンス・コンポーネント３１２は、本明細書で説明されるような、サーバ３０４から受け取った共有シークレットなど、クライアント３０２のユーザ３２２と関連したクライアント・プリファレンス情報を格納するように構成される。
【００５３】
サーバ・アプリケーション３１４は、認証コンポーネント３１６、ＲＥＳＴ  ＡＰＩコンポーネント３１８、及びユーザ・プロファイル・コンポーネント３２０を含む。認証コンポーネント３１６は、本明細書で説明されるような、共有シークレットの生成、ユーザＩＤ／パスワードの組み合わせの検証、及び共有シークレットに対する所定のＯＴＰの検証といったサーバ側認証動作を実行するように構成される。ＲＥＳＴ  ＡＰＩコンポーネント３１８は、本明細書で説明されるような、サーバ３０４とクライアント３０２との間などの、ＲＥＳＴベースのメッセージ動作を実行するように構成される。ユーザ・プロファイル・コンポーネント３２０は、本明細書で説明されるような、認証コンポーネント３１６により生成される共有シークレットなどの、クライアント３０２のユーザ３２２と関連したユーザ・プロファイル情報を格納するように構成される。
【００５４】
一実施形態において、ＲＥＳＴ  ＡＰＩを利用するアプリケーション及びサービスのための２段階認証プロセスが提供され、そこで、ユーザ３２２は、ユーザＩＤ及びパスワードをクライアント３０２のクライアント・アプリケーション３０６に提供し、クライアント・アプリケーション３０６は、ユーザＩＤ及びパスワードをサーバ３０４のサーバ・アプリケーション３１４に伝送する。ユーザＩＤ及びパスワードの受信に応答して、サーバ・アプリケーション３１４は、ユーザＩＤ及びパスワードを確認する。ユーザＩＤ及びパスワードの確認が成功すると、サーバ・アプリケーション３１４は、ユーザ３２２が１段階認証から２段階認証へアップグレードされるかどうかを判断する。ユーザ３２２が１段階認証から２段階認証へアップグレードされない場合、サーバ３０４は、クライアント３０２についてのＡＰＩ動作に対する完全なパーミッション／アクセスを有する、クライアント３０２とサーバ３０４との間の認証セッションを確立する。ユーザ３２２が１段階認証から２段階認証へアップグレードされる場合、サーバ３０４は、クライアント３０２とサーバ３０４との間に、クライアント３０２についてパーミッションが与えられたＡＰＩ動作に対する制限されたパーミッションを有する認証セッションを確立する。サーバ３０４は、認証コンポーネント３１６により生成される共有シークレットを含むログオン応答をクライアント３０２に送る。クライアント３０２は、共有シークレットを含むログオン応答を受け取り、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成する。クライアント３０２は、ＯＴＰを含むＡＰＩ要求をサーバ３０４に送り、共有シークレットがユーザ３２２と関連したユーザ・プロファイル内に設定されることを指示する。サーバ３０４は、ＯＴＰを含む要求を受け取り、共有シークレットに対してＯＴＰを検証する。サーバ３０４が共有シークレットに対してＯＴＰを成功裡に検証した場合、サーバ３０４は、サーバ３０４とクライアント３０２との間の、ＡＰＩ動作に対する完全なパーミッション／アクセスがクライアント３０２に与えられる認証セッションを続行する。サーバ３０４は、共有シークレットをユーザ・プロファイル内に格納し、クライアント・アプリケーション３０６による後のログオンは、ユーザＩＤ、パスワード、及び共有シークレットに基づいて生成される現在のＯＴＰを求める。
【００５５】
図４を参照すると、この図は、例示的実施形態による、２段階認証の自動アップグレードのための例示的プロセスのメッセージ・フローを示す。１つ又は複数の実施形態において、メッセージ・フロー４００は、図３のクライアント・アプリケーション３０６及びサーバ・アプリケーション３１４において実施され得る。
【００５６】
４０２において、クライアント３０２が、ユーザ３２２からユーザＩＤ及びパスワードを受け取る。４０４において、クライアント３０２は、ユーザＩＤ及びパスワードをサーバ３０４に送る。４０６において、サーバ３０４は、ユーザＩＤ及びパスワードを検証することにより第１の認証を用いて、ユーザ３２２を認証する。ユーザ３２２が１段階認証から２段階認証へのアップグレードを要求するように指定される場合、４０８において、サーバ３０４は、共有シークレットを生成し、クライアント３０２との認証セッションを確立する。特定の実施形態において、認証セッションは、クライアント３０２についてＡＰＩ動作に対する制限されたパーミッション／アクセスを有する。４１０において、サーバ３０４は、認証セッションを用いて、セッション特有のデータ及び共有シークレットをクライアント３０２に送る。４１２において、クライアント３０２は、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成する。４１４において、クライアント３０２は、共有シークレットに基づいて生成されたＯＴＰをサーバ３０４に送る。
【００５７】
４１６において、サーバ３０４は、共有シークレットに対してＯＴＰを検証する。ＯＴＰが検証された場合、４１８において、サーバ３０４は、共有シークレットを、ユーザ３２２と関連したユーザ・プロファイルに格納する。４２０において、サーバ３０４は、認証応答をクライアント３０２に送って認証セッションを続行し、そこで、クライアント３０２は、ＡＰＩ動作に対する完全なパーミッション／アクセスを有し、サーバ３０４又は別のサーバにより提供されるアプリケーション及び／又はサービスへのアクセスを得る。４２２において、クライアント３０２は、共有シークレットをクライアント・プリファレンス・コンポーネント３１２に格納する。その後、メッセージ・フロー４００は終了する。実施形態において、ユーザ３２２からの後のログオンは、ユーザ３２２が、サーバ３０４に認証されてサーバにより提供されるアプリケーション及びサービスへのアクセスを得るために、ユーザＩＤ、パスワード、及び共有シークレットに基づいて生成される現在のＯＴＰを提供することを求める。
【００５８】
図５を参照すると、この図は、例示的実施形態による、２段階認証の自動アップグレードのための例示的なクライアント側プロセスのフローチャートを示す。１つ又は複数の実施形態において、プロセス５００は、図３のクライアント・アプリケーション３０６において実施され得る。５０２において、クライアント・アプリケーション３０６は、ユーザＩＤ及びパスワードをユーザ３２２に促す。５０４において、クライアント・アプリケーション３０６は、ユーザ３２２からユーザＩＤ及びパスワードを受け取る。５０６においてクライアント・アプリケーション３０６は、ユーザＩＤ及びパスワードをサーバ３０４に送る。
【００５９】
ユーザ３２２が１段階認証から２段階認証へのアップグレードを要求するように指定される場合、サーバ３０４は、共有シークレットを生成する。ブロック５０８において、クライアント３０２は、サーバ３０４との認証セッションを確立する。特定の実施形態において、第１の認証セッションは、クライアント３０２に対してＡＰＩ動作への制限されたパーミッション／アクセスを有する。５１０において、クライアント３０２は、認証セッションを用いて、サーバ３０４から、共有シークレットを含むログオン応答を受け取る。
【００６０】
５１２において、クライアント３０２は、サーバ３０４から受け取った共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成する。５１４において、クライアント３０２は、共有シークレットに基づいて生成されたＯＴＰをサーバ３０４に送る。サーバ３０４は、共有シークレットに対してＯＴＰを検証する。ＯＴＰが検証された場合、サーバ３０４は、共有シークレットを、ユーザ３２２と関連したユーザ・プロファイルに格納する。５１６において、クライアント３０２は、サーバ３０４から認証応答を受け取る。５１８において、クライアント３０２は、認証応答が、ユーザ３２２が認証されたことを示すかどうかを判断する。ユーザ３２２が認証されない場合、プロセス５００は終了する。ユーザ３２２が認証された場合、５２０において、クライアント３０２は、サーバ３０４との認証セッションを続行し、そこで、ＡＰＩ動作に対する完全なパーミッション／アクセスがクライアント３０２に与えられて、サーバ３０４又は別のサーバにより提供されるアプリケーション及び／又はサービスへのアクセスを得る。５２２において、クライアント３０２は、共有シークレットをクライアント・プリファレンス・コンポーネント３１２に格納する。その後、クライアント・アプリケーション３０６は、プロセス５００を終了する。実施形態において、ユーザ３２２からの後のログオンは、ユーザ３２２が、サーバ３０４に認証されてサーバにより提供されるアプリケーション及びサービスへのアクセスを得るために、ユーザＩＤ、パスワード、及び共有シークレットに基づいて生成される現在のＯＴＰを提供することを求める。
【００６１】
図６を参照すると、この図は、例示的実施形態による、２段階認証の自動アップグレードのための例示的なサーバ側プロセスのフローチャートを示す。１つ又は複数の実施形態において、プロセス６００は、図３のサーバ・アプリケーション３１４において実施され得る。６０２において、サーバ３０４のサーバ・アプリケーション３１４は、クライアント３０２から、ユーザ３２２により提供されるユーザＩＤ及びパスワードを受け取る。
【００６２】
６０４において、サーバ・アプリケーション３１４は、ユーザＩＤ及びパスワードを検証することにより第１の認証要素を用いてユーザ３２２を認証する。６０６において、サーバ・アプリケーション３１４は、クライアント３０２との認証セッションを確立する。特定の実施形態において、認証セッションは、クライアント３０２についてＡＰＩ動作に対する制限されたパーミッション／アクセスを有する。６０８において、サーバ・アプリケーション３１４は、ユーザ３２２が１要素認証から２要素認証へのアップグレードを要求するかどうかを判断する。ユーザ３２２が１要素認証から２要素認証へのアップグレードを要求するように指定される場合、６１０において、サーバ・アプリケーション３１４は、共有シークレットを生成する。６１２において、サーバ・アプリケーション３１４は、認証セッションを用いて、共有シークレットを含むログオン応答をクライアント３０２に送る。共有シークレットの受信に応答して、クライアント３０２は、共有シークレットに基づいてワンタイム・パスコード（ＯＴＰ）を生成し、共有シークレットに基づいて生成されたＯＴＰをサーバ３０４に送る。
【００６３】
６１４において、サーバ・アプリケーション３１４は、クライアント３０２からＯＴＰを受け取る。６１６において、サーバ・アプリケーション３１４は、共有シークレットに対してＯＴＰを検証する。ＯＴＰが検証された場合、６１８において、サーバ・アプリケーション３１４は、共有シークレットを、ユーザ３２２と関連したユーザ・プロファイルに格納する。６２０において、サーバ３０４は、認証セッションを続行し、そこで、クライアント３０２は、ＡＰＩ動作に対する完全なパーミッション／アクセスが与えられて、サーバ３０４又は別のサーバにより提供されるアプリケーション及び／又はサービスへのアクセスを得る。６２２において、サーバ・アプリケーション３１４は、認証セッションの続行を示す認証応答をクライアント３０２に送る。実施形態において、ユーザ３２２からの後のログオンは、ユーザ３２２が、サーバ３０４に認証されてサーバ３０４又は別のサーバにより提供されるアプリケーション及びサービスへのアクセスを得るために、ユーザＩＤ、パスワード、及び共有シークレットに基づいて生成される現在のＯＴＰを提供することを求める。６０８において、サーバ・アプリケーション３１４が、２要素認証を必要としないと判断した場合、６２２において、サーバ・アプリケーション３１４は、クライアント３０２により認証セッションを使用できることを示す認証応答をクライアント３０２に送る。このようにユーザ３２２が２要素認証にアップグレードされない場合、ユーザ３２２からの後のログオンは、ユーザＩＤ及びパスワードのみの提供を求める。その後、サーバ・アプリケーション３１４はプロセス６００を終了する。
【００６４】
従って、ユーザの１段階認証から２段階認証への自動アップグレード、及び他の関連する特徴、機能、又は動作を可能にするために、例示的実施形態において、コンピュータ実施方法、システム、装置及びコンピュータ・プログラム製品が提供される。実施形態又はその一部があるタイプのデバイスに関して説明されるが、コンピュータ実施方法、システム又は装置、コンピュータ・プログラム製品又はその一部は、そのタイプのデバイスの好適で比較可能な発現と共に用いられるように適合又は構成される。
【００６５】
実施形態がアプリケーションにおいて実施されるように説明される場合、Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）モデルにおけるアプリケーションの供給は、例示的実施形態の範囲内にあると考えられる。ＳａａＳモデルにおいて、実施形態を実施するアプリケーションの能力は、クラウド・インフラストラクチャにおいてアプリケーションを実行することにより、ユーザに与えられる。ユーザは、ウェブ・ブラウザ（例えば、ウェブ・ベースの電子メール）又は他の軽量クライアント・アプリケーションなどのシン・クライアント・インターフェースを通じて種々のクライアント・デバイスを用いてアプリケーションにアクセスすることができる。ユーザは、ネットワーク、サーバ、オペレーティング・システム、又はクラウド・インフラストラクチャのストレージを含む基礎をなすクラウド・インフラストラクチャを管理又は制御しない。場合によっては、ユーザが、ＳａａＳアプリケーションの能力を管理又は制御しないことさえある。他の場合には、アプリケーションのＳａａＳ実装は、制限されたユーザ固有のアプリケーション構成設定の可能な例外を可能にする。
【００６６】
本発明は、統合のいずれかの可能な技術的詳細レベルにおける、システム、方法、及び／又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００６７】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【００６８】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスにダウンロードすることができ、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納するためにコンピュータ可読プログラム命令を転送する。
【００６９】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述することができるいずれかのソースコード若しくはオブジェクトコードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個別化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【００７０】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００７１】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、命令が内部に格納されたコンピュータ可読ストレージ媒体が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実装する命令を含む製品を含むようにすることもできる。
【００７２】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するようにすることもできる。
【００７３】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【符号の説明】
【００７４】
１００：データ処理環境
１０２、３００：ネットワーク
１０４、１０６、３０２：サーバ
１０５、３１４：サーバ・アプリケーション
１０８：ストレージ
１０９：データベース
１１０、１１２、１１４、３０２：クライアント
１１１、３０６：クライアント・アプリケーション
１３２：デバイス
２００：データ処理システム
２０１Ｂ、２０１Ｃ：リモート・システム
２０１Ｄ：ストレージ・デバイス
２０２：ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）
２０４：サウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）
２０６：処理ユニット
２０８：メイン・メモリ
２１０：グラフィックス・プロセッサ
２１２：ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ
２２６：ハードディスク・ドライブ
２２６Ａ：コード
２３８：バス
３０８、３１６:認証コンポーネント
３１０、３１８：ＲＥＳＴ  ＡＰＩコンポーネント
３１２：クライアント・プリファレンス・コンポーネント
３２０：ユーザ・プロファイル・コンポーネント
３２２：ユーザ
【図１】
2020531990.tif 000003
【図２】
2020531990.tif 000004
【図３】
2020531990.tif 000005
【図４】
2020531990.tif 000006
【図５】
2020531990.tif 000007
【図６】
2020531990.tif 000008
【国際調査報告】
2020531990.tif 000009
2020531990.tif 000010