(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来技術における認証方法において、特許文献1〜4のようにオンラインを前提としたサーバでの認証では、アプリケーションがインストールされたクライアントが、サーバと通信可能に接続されたオンライン状態でないと、アプリケーションを利用できないという課題があった。また、サーバと接続していないオフラインの状態でも認証可能な方法を採用すると、アクセストークンの有効期限を改ざんするなどの不正が行われる危険性が高まるという課題があった。このように、オンラインでの認証には、利便性に欠けるという課題があり、一方で、オフラインでの認証は不正への対処が不十分であった。
本発明は、かかる課題に鑑み、オンラインによる認証とオフラインによる認証の利点を活かした認証を実現することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、
ネットワークを介してサーバに接続されたクライアントにおいてアプリケーションを利用するための認証を行う認証システムであって、
前記サーバは、
前記クライアントからの認証要求に従い、前記アプリケーションの利用を許可するためのトークンとして、その有効期限を表す固定的な日時情報と、認証の実行に応じて更新される動的な日時情報を含み、前記クライアントがオフライン状態にある場合の認証に用いられるオフライン用トークンを生成して、該クライアントに送信するトークン発行部と、
前記生成されたトークンを管理するトークン管理部と
を備え、
前記クライアントは、
前記オフライン用トークンを保持するトークン保持部と、
現在時刻が、前記オフライン用トークンに含まれる前記動的な日時情報以降であり、かつ前記有効期限内である場合に前記アプリケーションの利用を許可し、その他の場合には前記アプリケーションの利用を禁止する利用許可部と、
前記利用許可部の動作に伴い、前記動的な日時情報を、前記現在時刻に更新する日時情報更新部と
を備える認証システムとして構成することができる。
クライアントに構成されるトークン保持部、利用許可部、および日時情報更新部は、それぞれアプリケーションとは別個に構成してもよいし、アプリケーションの一部として組み込んでもよい。
【0006】
本発明では、サーバから発行されるオフライン用トークンを用いて、クライアントにおけるアプリケーションの利用の許可/禁止を行うことができる。従って、オフライン用トークンの発行時には、クライアントはサーバにネットワークで接続されている必要があるが、その後は、サーバに接続されていなくとも、アプリケーションを利用することができるため利便性が確保される。
しかも、本発明で用いられるオンライン用トークンには、有効か否かを判定するための日時として、有効期限を表す固定的な日時情報と、認証の実行に応じて更新される動的な日時情報が含まれる。固定的な日時情報としては、オフライン用トークンを利用可能な最終の日時情報、オフライン用トークンの利用を開始可能な日時または発行日時、オフライン用トークンの利用を開始してから利用できなくなるまでの期間などの情報を用いることができる。これらを全てもちいてもよいし、一部を用いても良い。また、動的な日時情報としては、認証を実行した日時、アプリケーションを利用した日時、オフライン用トークンの利用を開始した後の経過時間などを利用することができる。その上で、現在時刻が動的な日時情報以降であること、および有効期限内であることという2つの条件を満たすときにアプリケーションの利用を許可するように判断する。ここで用いる現在時刻は、クライアントの時計に基づいて得られる時刻でよい。このように、固定的な日時情報に加えて、動的な日時情報を用いれば、仮に有効期限を過ぎた後にクライアントの時計を遡らせたとしても、現在時刻が動的な日時情報以降という条件を満たさないため、オフライン用トークンを不正に利用することはできなくなる。
従って、本発明は、不正を抑制しつつ、オフラインでアプリケーションを利用できる利便性を実現することが可能となる効果を奏する。
【0007】
本発明においては、
前記日時情報更新部は、前記動的な日時情報を、将来に向かう方向にのみ更新するよう規制されているものとしてもよい。
こうすることにより、動的な日時情報を遡らせるという不正を防ぐことができ、アプリケーションの不正利用をより確実に回避することが可能となる。
【0008】
このように日時情報の更新を規制する場合、
前記日時情報更新部は、オンラインとなった時には、前記規制を解除し、前記動的な日時情報を、前記ネットワーク経由で取得される日時に同期させるものとしてもよい。
こうすることにより、動的な日時情報が誤って不正確な日時となったときに、その修正を図ることができる。例えば、クライアントの時計が、何らかの理由で、有効期限以降の将来の日時に変動してしまったとすると、動的な日時情報もこれに併せて将来の日時に更新されてしまう可能性があり、真の現在時刻が有効期限内であったとしても、オフライン用トークンに基づくアプリケーションの利用ができなくなってしまう。そして、動的な日時情報は不正防止のため簡単には遡らせることができないから、一旦、かかる事態が生じてしまうと、クライアントの時計を正常に戻しても、アプリケーションの利用は再開できなくなってしまうおそれがある。
上記態様によれば、クライアントがオンラインとなった時には、例外的に動的な日時情報の同期を認めることができ、正常な時刻に遡らせることも可能となるから、アプリケーションの利用を復旧させることができる。
【0009】
また、本発明においては、
前記サーバは、前記クライアントからの認証要求に応じて、前記クライアントがオンライン状態にある場合の認証に用いるための該クライアントに固有のオンライン用トークンの有効性、および前記アプリケーションの起動を許可するための起動条件の少なくとも一方を踏まえて、該クライアントにおける前記アプリケーションの利用を許可するか否かの認証を行う認証部を有し、
前記クライアントは、前記アプリケーションの起動時および起動後の所定のタイミングで、繰り返し、前記サーバに対して前記認証要求を送信する認証要求送信部を有し、
前記サーバにおいて、
前記トークン発行部は、前記認証により前記アプリケーションの利用を許可する場合、該クライアントに固有の有効なオンライン用トークン、または前記クライアントに対して発行済みのオンライン用トークンが有効であることを示す情報を前記クライアントに送信し、
前記トークン管理部は、前記認証要求に対応する発行済みのオンライン用トークンであって、前記トークン発行部によって新たに生成されたオンライン用トークンとは異なるクライアントに対して発行されたものがある場合は、所定の無効化条件に従って当該発行済みのオンライン用トークンを無効化し、
前記クライアントにおいて、
前記利用許可部は、前記オンライン用トークンが有効であることが確認できたときは前記アプリケーションの利用を許可し、その他の場合は前記アプリケーションの利用を禁止するものとしてもよい。
【0010】
上記態様は、ネットワークに接続した状態での認証、即ちオンライン認証を実現する態様である。即ち、サーバは、クライアントからの認証要求に応じて認証を行う。この認証は、クライアントにおいて新たにアプリケーションを起動させる場合、および既にアプリケーションを利用している場合に行われる。後者の場合は、アプリケーションの利用中に、ユーザが指示しなくても、クライアントが定期的にサーバに対して認証要求を送信するのである。
サーバは、アプリケーションの利用を許可する場合には、オンライン用トークン等の情報をクライアントに送信する。例えば、クライアントにおいて新たにアプリケーションを起動するときは、新しいオンライン用トークンを発行し、それをクライアントに送信する。オンライン用トークン自体に代えて、オンライン用トークンの識別情報を送信する態様も含まれる。
一方、既にクライアントにおいてアプリケーションを利用しているときは、既存のオンライン用トークンが有効である旨の情報をクライアントに送信する。既存のオンライン用トークンに代わる新たなオンライン用トークンを発行し、それをクライアントに送信するようにしてもよい。
こうすることにより、クライアントでは、有効なオンライン用トークン(その識別情報や、オンライン用トークンが有効であることを示す情報も含む)を受け取ると、アプリケーションの利用を許可することができる。
本発明では、さらに、サーバは、異なるクライアントからの認証要求が送信された場合には、発行済みのオンライン用トークンを無効化した上で、新たなオンライン用トークンを発行する。発行済みのオンライン用トークンが無効化されることにより、従前、アプリケーションを利用していた端末では、アプリケーションの利用ができなくなる。つまり、ユーザは、使用する端末を変更したい場合、従前の端末でアプリケーションの利用を停止しなくても、新たな端末から認証要求を送信しさえすれば、容易に端末を変更することができることになる。
既に発行されているオンライン用トークンと異なる端末からの認証要求か否かを判断するために、本発明では、オンライン用トークンは、クライアントに「固有」なものとしている。例えば、クライアントの端末に固有の識別情報をオンライン用トークンに含めるようにしてもよいし、オンライン用トークンをクライアントの識別情報と関連付けて管理してもよい。
【0011】
本発明においては、
前記認証要求は、前記アプリケーションの開発者の識別情報、該アプリケーションの識別情報、該アプリケーションのユーザのアカウント情報、該クライアントの端末識別情報を含み、
前記認証は、前記認証要求に含まれる各情報と、前記サーバに予め登録された情報との整合性を考慮して行われるものとしてもよい。
こうすることにより,本発明による認証を複数の開発者、アプリケーション、ユーザ、クライアント端末で混乱なく利用可能なシステムとすることができる。例えば、認証要求にアプリケーションの開発者の識別情報を含めることにより、例え他の情報(アプリケーションの識別情報、アカウント情報、端末情報)が同一であったとしても、認証要求としては、開発者に関連づけられたものと認識することができるからである。従って、各開発者は、他の開発者がどのようなアプリケーションの識別情報、アカウント情報を用いているかを考慮せず、これらについて任意に設定することが可能となるのである。
【0012】
また、本発明においては、
前記サーバは、
前記アプリケーションの識別情報および前記ユーザのアカウント情報とを記憶しておくデータベースを、前記アプリケーションの開発者ごとに個別に備えるものとしてもよい。
こうすることにより、アプリケーションの開発者ごとに、データ管理をすることが可能となり、より本発明の利便性を向上させることが可能となる。
【0013】
本発明は、以上で説明した種々の特徴を必ずしも全て備えている必要はなく、適宜、その一部を省略したり、組み合わせたりして構成してもよい。また、本発明は、上述した認証システムとしての構成に限らず、種々の態様での構成が可能であり、
例えば、
ネットワークを介してサーバに接続されたクライアントにおいてアプリケーションを利用するための認証を行う認証方法であって、
前記サーバが実行する処理として、
前記クライアントからの認証要求に従い、前記アプリケーションの利用を許可するためのトークンとして、その有効期限を表す固定的な日時情報と、認証の実行に応じて更新される動的な日時情報を含み、前記クライアントがオフライン状態にある場合の認証に用いられるオフライン用トークンを生成して、該クライアントに送信するステップと、
前記生成されたトークンを管理するステップと
を備え、
前記クライアントが実行する処理として、
前記オフライン用トークンを保持するトークン保持ステップと、
現在時刻が、前記オフライン用トークンに含まれる前記動的な日時情報以降であり、かつ前記有効期限内である場合に前記アプリケーションの利用を許可し、その他の場合には前記アプリケーションの利用を禁止する利用許可ステップと、
前記利用許可ステップに伴い、前記動的な日時情報を、前記現在時刻に更新する日時情報更新ステップと
を備える認証方法として構成してもよい。
これらの認証方法においても、認証システムで説明した種々の特徴を組み込むことが可能である。
【0014】
また、上述の認証方法を、コンピュータに実現させるためのコンピュータプログラム、およびこれらのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体として構成することもできる。かかるコンピュータプログラムとしては、サーバにインストールするものとして構成することもできるし、クライアントにインストールするものとして構成することもできる。後者の態様としては、
例えば、
ネットワークを介してサーバに接続されたクライアントにおいてアプリケーションを利用するための認証を行うために該クライアントにおいて実行させるコンピュータプログラムであって、
前記サーバに対して認証要求を送信する機能と、
前記サーバから、前記アプリケーションの利用を許可するためのトークンとして、その有効期限を表す固定的な日時情報と、認証の実行に応じて更新される動的な日時情報を含み、前記クライアントがオフライン状態にある場合の認証に用いられるオフライン用トークンを受信する機能と、
現在時刻が、前記オフライン用トークンに含まれる前記動的な日時情報以降であり、かつ前記有効期限内である場合に前記アプリケーションの利用を許可し、その他の場合には前記アプリケーションの利用を禁止する利用許可機能と、
前記利用許可機能の実行に伴い、前記動的な日時情報を、前記現在時刻に更新する日時情報更新機能と
を前記クライアントに実現させるためのコンピュータプログラムとしての構成である。
これらのコンピュータプログラムにおいても、認証システムで説明した種々の特徴を組み込むことが可能である。クライアントに実行させるコンピュータプログラムの場合、クライアントで利用するアプリケーションとは別のコンピュータプログラムとして用意することもできるし、アプリケーションに組み込む形で用意することもできる。
【発明を実施するための形態】
【0016】
A.システム構成:
本発明の実施例について説明する。
図1は、実施例としての認証システムの構成を示す説明図である。認証システムは、インターネットINTにクライアントPCおよびサーバ10が接続された環境下において、クライアントPCにインストールされたアプリケーションの利用についての認証をサーバ10が与えるためのシステムである。以下、ネットワークを介した認証を、「クラウド認証」と称することもある。
図1においては、クライアントPCは1台のみを示したが、複数台であってもよい。クライアントPCは、CPU、メモリなどを備え種々のアプリケーションを実行できるコンピュータであり、パーソナルコンピュータの他、タブレット、スマートフォン、携帯電話などを利用可能である。
認証システムは、サーバ10に備えられる機能と、クライアントPCに備えられる認証システムモジュール20とによって構築されることになる。本実施例では、サーバ10およびクライアントPCに、図示した各機能ブロックを実現するためのコンピュータプログラムをインストールすることによって、ソフトウェア的に構成されるが、少なくとも一部をハードウェア的に構成することも可能である。また、サーバ10に示した各機能ブロックは、複数のサーバによる分散処理によって実現してもよい。
【0017】
本実施例の認証システムは、例えば、次のような態様で利用される。アプリケーションの開発者であるデベロッパは、アプリケーションを利用する権利、即ちライセンスを、ユーザに有償で提供することにより利益を得る。かかる利益を適正に得るためには、ユーザによるアプリケーションの不正利用を防止する必要があり、そのためには、アプリケーションの利用時にユーザが有効なライセンスを有しているか否かを認証する必要がある。かかる認証を実現するのが、本実施例の認証システムである。この認証システムは、アプリケーションのデベロッパ自身が構築し、運用するものとしてもよいが、本実施例では、デベロッパ以外の運用主体が認証システムを運用する例を示した。即ち、デベロッパは、認証システムの運用主体と、認証システムの利用契約を締結した上で、クライアントPCにインストールされる認証システムモジュール20を用意する。この認証システムモジュール20は、デベロッパが開発するアプリケーションに組み込んでも良いし、アプリケーションと別のモジュールとしてもよい。デベロッパからアプリケーションのライセンスを受けたユーザは、自身のクライアントにアプリケーションをインストールすることにより、同時に、認証システムモジュール20もインストールすることになる。かくして、アプリケーションは、本実施例の認証システムによる認証の下で、稼働するようになるのである。
【0018】
サーバ10に備えられた各機能ブロックについて説明する。
サーバ10には、デベロッパ情報データベース16、ライセンス情報データベース17、アカウント情報データベース18の3種類のデータベースが備えられている。デベロッパ情報データベース16は、認証システムを利用するアプリケーションのデベロッパに関する情報を格納する。ライセンス情報データベース17およびアカウント情報データベース18は、それぞれデベロッパごとに用意されるデータベースである。ライセンス情報データベース17は、アプリケーションのライセンスを購入したユーザおよびライセンス条件などの情報を記憶する。アカウント情報データベース18は、ライセンスを受けたユーザが利用可能なアカウント(またはユーザIDということもある)に関する情報を記憶する。これらのデータベースの内容については、後で具体的に説明する。
データベース管理部13は、デベロッパ情報データベース16、ライセンス情報データベース17、アカウント情報データベース18に対するデータの読み書きを管理する。
送受信部11は、インターネットINTを介して種々の情報の送受信を実行する。本実施例で送受信される情報としては、例えば、アプリケーションの利用の認証を求める認証要求や、利用を許可するためのトークンなどが挙げられる。
認証部14は、サーバ10における各機能ブロックを統合する機能も奏しつつ、アプリケーションの認証を行う。本実施例では、後で説明する通り、アプリケーションの起動時に認証が行われる他、アプリケーションの利用中にも繰り返し認証が行われる。認証部14は、クライアントPCから認証要求を受取り、それぞれのタイミングにおいて、デベロッパ情報データベース16、ライセンス情報データベース17、アカウント情報データベース18、トークン管理部15などに格納された情報を参照しながら、アプリケーションの利用可否を判断するのである。
トークン発行部12は、認証部14による認証の結果、アプリケーションの利用を許可する場合に、必要に応じて、新たなトークンを発行する。トークンとは、クライアントPCにアプリケーションの利用を許可するためのワンタイム、即ち使い捨ての情報である。
トークン管理部15は、発行されたトークンを保持する。
【0019】
次に、クライアントPCに備えられた各機能ブロックについて説明する。
送受信部30は、インターネットINTを介して各種情報の送受信をする。
アプリケーション31は、クライアントPCで利用される種々のコンピュータプログラムである。本実施例の認証の対象となっているものもあれば、そうでないものも含まれ得る。本実施例では、以下、アプリケーション31と呼ぶときは、本実施例の認証の対象となっているものを意味するものとする。
認証システムモジュール20は、サーバ10と連携して、本実施例の認証システムを構築するモジュールである。認証システムモジュール20は、アプリケーション31と個別のモジュールとして用意してもよいし、各アプリケーション31に組み込むものとしてもよい。
認証要求送信部21は、サーバ10に対して認証を要求する情報(これを認証要求と呼ぶ)を送信する。認証要求送信部21は、クライアントPCにおいて新たにアプリケーションを起動しようとするときに、認証要求を送信する。また、アプリケーションの利用中は、ユーザからの指示に関わらず所定のタイミングで繰り返し認証要求を送信する。
認証用情報記憶部22は、認証要求に含まれる情報を一時的に格納しておく。認証要求に含まれる情報には、クライアントPCの端末固有の識別情報も含まれる。また、アプリケーションの認証要求に対して、サーバ10からトークンが発行されているとき、認証用情報記憶部22は、このトークンも記憶しておく。
利用許可部23は、サーバ10による認証が得られた場合には、アプリケーション31の利用を許可する。また、本実施例では、クライアントPCがサーバ10と接続されていない状態での認証も行うことができるスタンドアロンモードが用意されている。利用許可部23は、スタンドアロンモードの場合には、認証用情報記憶部22に記憶された情報、特にオフライン用トークンに基づいて、アプリケーション31の利用可否を判断する機能も奏する。
日時情報更新部24は、スタンドアロンモードにおいて、認証用情報記憶部22に記憶されているオフライン用トークンに含まれる「利用日時」の情報を更新する。「利用日時」とは、後述する通り、オフライン用トークンの不正利用を防止するための情報である。日時情報更新部24は、スタンドアロンモードでの認証が行われたときなど、所定のタイミングで、利用日時を更新するのである。
【0020】
B.データベース構成:
図2は、データベースの構成を例示する説明図である。
デベロッパ情報データベース16は、認証システムを利用するアプリケーションのデベロッパに関する情報を格納するデータベースである。
デベロッパIDは、デベロッパの識別情報である。
契約情報は、認証システムの運用主体と、デベロッパとの契約に関連する情報を表す。契約情報には、例えば、デベロッパの名称、連絡先、契約条件、課金情報、支払情報などが含まれる。
デベロッパキーは、アプリケーションの認証の際に用いられるデベロッパに固有の情報である。デベロッパキーは、デベロッパIDと同じ情報とすることもできるが、本実施例では、別個の情報を用いるものとした。
アプリケーション名称およびアプリケーションIDは、本実施例の認証対象となるアプリケーションの名称および識別情報である。アプリケーション名称、アプリケーションIDは、デベロッパごとに複数設けることもできる。デベロッパ情報データベース16は、デベロッパごとに情報が格納されるものであるから、アプリケーション名称、アプリケーションIDは、他のデベロッパのアプリケーション名称等と重複していても差し支えない。もっとも、本実施例では、混乱を回避するため、アプリケーションIDについては、デベロッパによってアプリケーションが新たに登録されたときに、認証システムが他のデベロッパとも重複しない固有の識別情報を付すものとした。
【0021】
ライセンス情報データベース17、アカウント情報データベース18は、それぞれデベロッパごとに用意されるデータベースである。
ライセンス情報データベース17は、アプリケーションのライセンスを購入したユーザおよびライセンス条件などの情報を記憶する。ユーザによるライセンスごとに図示するデータが用意されることになる。
アプリケーションIDは、ライセンスの対象となるアプリケーションの識別情報である。デベロッパ情報データベース16に格納されているアプリケーションIDに対応した情報である。
デベロッパキーは、デベロッパを表す情報であり、デベロッパ情報データベース16に格納されている情報である。
購入ライセンス数は、ユーザが購入したライセンス数、即ちアプリケーションを同時に利用可能な数を表す情報である。他に、コンピュータにインストール可能な数を表す情報を追加してもよい。
適用開始日時は、ライセンスの適用によりアプリケーションの利用を開始できる日時を表す。
有効期限は、ライセンスの有効期限、即ちアプリケーションの利用が許可される期限を表す。
アカウント当たりのライセンス数は、一つのアカウント、即ち利用者IDによってアプリケーションを同時に利用可能な数を表す。
【0022】
アカウント情報データベース18は、ライセンスを受けたユーザが利用可能なアカウント(またはユーザIDということもある)に関する情報を記憶する。例えば、会社がライセンスを受け、複数の従業員にアプリケーションを利用させるような場合など、一つのライセンス情報に対して、複数のアカウント情報が対応づけられることもある。
利用者IDは、アプリケーションの利用者の識別情報であり、パスワードは、アプリケーションを利用するために認証画面において入力すべき情報である。
権限は、アプリケーションの利用について、利用者に許容された権限である。本実施例では、クライアントがサーバに接続された状態でアプリケーションの認証を行うオンライン認証の他、サーバと接続されていないオフライン状態でも認証可能なスタンドアロンモードが用意されている。権限には、スタンドアロンモードの利用可否を設定可能とした。
適用開始日時は、利用者ごとに、アプリケーションの利用を開始できる日時を記憶している。
【0023】
いずれのデータベースにおいても、図示した各情報の全てを備えている必要はなく、一部を必要に応じて省略してもよい。また、図示した以外の情報をデータベースに追加しても良い。本実施例では、ライセンス情報データベース17とアカウント情報データベース18とを分けて用意したが、両者を統合したデータベースとすることもできる。
【0024】
C.トークンの構成:
次に、本実施例の認証で利用されるトークンの構成について説明する。トークンは、クライアントPCにアプリケーションの利用を許可するためのワンタイム、即ち使い捨ての情報である。トークンを構成する情報は、任意に設定可能であるが、本実施例では、以下の情報を含めるものとした。
「トークンID」、即ちトークンの識別情報である。
ライセンス情報データベース17に格納されている「アプリケーションID」、デベロッパキー」である。
「ライセンス種別」、即ちオンライン認証用か、スタンドアロン用かを示す情報である。
ライセンス情報データベース18に格納されている「利用者ID」である。
スタンドアロンモードのときに利用される情報として、「利用日時」、「有効期限」、「切替日時」などの情報である。これらの各情報の意味は後述する。
クライアントの「端末ID」、即ちハードウェア固有の識別情報である。
その他の管理情報などを含めることもできる。
【0025】
D.オンライン認証:
以下、本実施例の認証システムによる認証処理によって順に説明する。
図3は、オンライン認証処理のフローチャートである。オンライン認証とは、クライアントとサーバとがインターネットを介して通信可能な状況で行う認証処理である。この処理は、クライアントからサーバに対する認証要求が送信されたときにサーバによって実行される。認証要求が送信される場面としては、利用者が新たにアプリケーションを起動させるとき、および既にアプリケーションを利用しているときがある。後者の場合は、利用者の指示に関係なく、所定のタイミングで、クライアントが自動的に認証要求をサーバに送信するのである。
【0026】
サーバは、まず認証要求を受信する(ステップS10)。認証要求には、デベロッパキー、アプリケーションID、利用者ID、パスワード、端末IDが含まれる。デベロッパキーおよびアプリケーションIDが含まれることにより、認証システムを利用する契約が締結された正規のデベロッパが作成した正規のアプリケーションからの認証要求であることを確認することができる。また、デベロッパキーを含むことにより、アプリケーションID、利用者ID、パスワードは、他のデベロッパとの重複を考慮することなく、デベロッパごとに任意に設定された情報を利用することが可能となる。もっとも、利用者ID、パスワードなどは、認証システムにおいてデベロッパに依存せずに利用可能な情報としても差し支えない。
アプリケーションの利用中に送信される認証要求の場合は、利用者IDやパスワードなどの情報を省略してもよい。また、デベロッパキー、アプリケーションIDなどの情報に代えて、認証の際に発行されるトークンを用いるようにしてもよい。
端末IDは、クライアントに固有の情報であり、本実施例ではクライアントおよびアプリケーションの組み合わせに対して固有の情報となるSecureUDIDを利用するものとした。端末IDとしては、他にMACアドレスなどを用いても良い。端末IDを用いることにより、サーバは、インターネットに複数のクライアントが接続されている状態でも、認証要求を送信したクライアントを特定することができる利点がある。
【0027】
次に,サーバは、認証要求が有効か否かを判断する(ステップS11)。本実施例では、次の4つの条件を満たすときに、認証要求が有効と判断するものとした。
条件(1)は、デベロッパキーが有効であること、即ち認証要求に含まれるデベロッパキーが、デベロッパ情報データベース16に格納された情報と一致することである。
条件(2)は、アプリケーションIDが有効であること、即ち認証要求に含まれるアプリケーションIDが、デベロッパ情報データベース16またはライセンス情報データベース17に格納された情報と一致することである。
条件(3)は、利用者ID、パスワードが有効であること、即ちこれらの情報が、アカウント情報データベース18に格納された情報と一致することである。
条件(4)は、ライセンスの有効期限内であること、即ち認証を行っている時刻が、ライセンス情報データベース17に格納された「有効期限」の情報と整合することである。
アプリケーションの利用中に送信された認証要求の場合は、条件(3)を省略してもよい。
【0028】
上述の4つの条件のいずれかを満たさず、認証要求が有効ではないと判断されると(ステップS11)、サーバは、アプリケーションの利用を認めることなく、オンライン認証処理を終了する。
一方、認証要求が有効であると判断された場合(ステップS11)、サーバは、トークン管理部15(
図1参照)に格納された発行済みのトークンを検索し、認証要求に対応するトークンが発行されたか否かを判断する。認証要求に対応するトークンとは、デベロッパキー、アプリケーションID、利用者IDが一致するトークンを言う。
【0029】
トークンが発行済みでない場合において(ステップS12)、アプリケーションの利用数が有効範囲内におさまるときは(ステップS17)、サーバは新規にトークンを発行する(ステップS18)。クライアントがトークンを受け取ると、アプリケーションは利用可能となる。アプリケーションの利用数が有効範囲を超えるときは(ステップS17)、サーバはアプリケーションの利用を認めることなく、オンライン認証処理を終了する。
【0030】
アプリケーションの利用数が有効範囲を超えるか否かの判断(ステップS17)は、例えば、次の手順で行うことができる。トークン管理部15に格納されたデベロッパキー、アプリケーションIDが認証要求と一致するトークンを検索することにより、アプリケーションの利用数を求めることができる。この利用数が、ライセンス情報データベース17に格納された購入ライセンス数よりも小さい場合には、新たにアプリケーションの利用を認めても、利用数が購入ライセンス数を超えることはないため、アプリケーションの利用数は有効範囲内におさまると判断できる。また、この利用数が、ライセンス情報データベース17と一致する場合は、アプリケーションの利用数は有効範囲を超えると判断できる。
【0031】
一方、認証要求に一致するトークンが発行済みの場合(ステップS12)、サーバは、発行済みのトークンと認証要求にそれぞれ含まれる端末IDが一致するかを判断する(ステップS13)。
両者が一致するときは、サーバは、トークンを発行済みのクライアントから、アプリケーション利用中に繰り返し認証要求が送信されたものと判断し、トークンを継続利用する処理を行う(ステップS16)。例えば、トークン管理部15に格納されているトークンを改めてクライアントに送信してもよいし、発行済みのトークンが有効である旨の情報をクライアントに送信してもよい。
【0032】
発行済みのトークンと認証要求にそれぞれ含まれる端末IDが一致しない場合(ステップS13)、サーバは、利用者が異なる端末から認証要求を送信したと判断し、以下の処理を行う。まず、サーバは、アカウント当たりのライセンス数を確かめる(ステップS14)。即ち、トークン管理部15から認証要求に含まれる利用者IDを含むトークンの数を求めることにより、認証要求を送ったアカウントによるアプリケーションの利用数を求め、この利用数と、ライセンス情報データベース17に格納されたアカウント当たりのライセンス数を比較する。
この結果、アプリケーションの利用数がアカウント当たりのライセンス数の範囲内と判断されるときは(ステップS14)、サーバは、先に説明したステップS17の処理によって、アプリケーションの利用可否を判断する。また、アプリケーションの利用数がアカウント当たりのライセンス数を超過すると判断されるときは(ステップS14)、発行済みのトークンを無効化して(ステップS15)、利用中のアプリケーションの利用を停止した上で、先に説明したステップS17の処理によって、アプリケーションの利用可否を判断する。
このように、同じ利用者IDを含みつつ、端末IDが一致しない認証要求がなされたときに、発行済みのトークンを無効化することにより、利用者は、それまでに利用していたアプリケーションを停止させるまでなく、異なる端末でアプリケーションを容易に利用することが可能となる利点がある。
トークンの無効化は、認証要求と利用者IDが一致するトークンに対して行われるものであり、利用者IDが異なるトークンに対しては、行われない。即ち、利用者IDが異なる場合には、先にアプリケーションを利用していたものが優先して扱われ、利用者IDが一致する場合には、あとから認証した端末が優先して扱われることになる。
【0033】
E.スタンドアロン認証:
図4は、スタンドアロン切替処理のフローチャートである。オンライン認証が行われた後、オフラインでもアプリケーションを利用することができるスタンドアロンモードに切り替えるための処理である。この処理は、利用者が、クライアントからサーバに対して切替要求を送信することによって、サーバにおいて実行される。
【0034】
サーバは、まず切替要求を受信する(ステップS20)。切替要求には、トークン、有効期限、クライアント日時、および端末IDの各情報が含まれる。トークンとは、オンライン認証によって発行されたトークンである。本実施例では、オンラインで認証を受けた後、スタンドアロンモードへの切替を行うものとしたため、このように切替要求にはトークンを含めることができる。もっとも、最初からスタンドアロンモードでの認証を認めるようにしてもよい。この場合でも、アプリケーションの起動時には、トークンを受け取るために、クライアントとサーバが接続されていることが前提となるから、先に説明したオンライン認証(
図3参照)を実行した後、自動的にスタンドアロン切替処理に移行するようにすれば足りる。
有効期限はトークンの有効期限、クライアント日時は、クライアントが保持する時計に基づく日時情報である。端末IDはオンライン認証処理と同様である。切替要求には、スタンドアロンモードでの利用を希望する期間などの情報を含めても良い。
【0035】
サーバは、受信した切替要求の有効性を判断する(ステップS21)。本実施例では、次の2つの条件を満たすときに有効と判断するものとした。
条件(1)トークンが有効とは、切替要求に含まれるトークンが、サーバのトークン管理部15(
図1参照)に無効化されずに管理されていることを意味する。
条件(2)ライセンスの有効期限内とは、ライセンス情報データベース17に格納された有効期限を過ぎていないことを意味する。ライセンス自体が有効期限を超過している場合は、スタンドアロンモードへの切替えを認める必要もないからである。
条件(1)(2)のいずれか一方または双方を満たさず、切替要求が無効と判断される場合には(ステップS21)、サーバは、切替えを認めることなく、この処理を終了する。
【0036】
切替要求が有効な場合(ステップS21)、サーバは、スタンドアロンモードへの変更が要求されたアプリケーションに対して有効なトークンが発行されているかを判断する(ステップS22)。かかるトークンが発行されていない場合には、オンラインでの認証が未了と判断し、サーバは、切替えを認めることなく、この処理を終了する。
有効なトークンが発行されている場合には(ステップS22)、そのトークンがスタンドアロンモードに設定されているか否かを判断し(ステップS23)、既にスタンドアロンモードになっている場合には、そのトークンを継続利用する(ステップS26)。つまり、クライアントに対して、改めて切替要求を認めることなく、既に発行されているトークンを再送するか、発行済みのトークンを利用できる情報を送信する。
【0037】
発行済みのトークンがオンライン認証用である場合には(ステップS23)、サーバは、以下の手順で、スタンドアロンモードへの切替えのための処理を行う。まず、クライアントの時計の日時を取得し、その誤差が許容範囲内かを判断する(ステップS24)。後述する通り、本実施例においては、スタンドアロンモードによる認証では、トークンに格納された日時情報によって、利用者によるアプリケーションの不正利用を防止している。スタンドアロンモードへの切替時に、クライアントの時計の誤差が大きい場合には、アプリケーションの不正利用を防止できないおそれがある。従って、誤差が許容範囲を超える場合には(ステップS24)、スタンドアロンモードへの切替えを認めず、誤差が許容範囲内のときのみ、スタンドアロンモードへの切替を実行して(ステップS25)、この処理を終了する。切替を認めるか否かの判断基準としての、「誤差の許容範囲」は、不正利用防止の観点から、任意に設定可能な値である。
スタンドアロンモードへの切替では、スタンドアロンモードであることを表すオフライン用トークンがクライアントに送信される。オフライン用トークンには、スタンドアロンモードへの切替日時、同モードで利用可能な有効期限、および利用日時などの情報が含まれる。切替日時および有効期限は、スタンドアロンモードへの切替時に設定される固定的な日時情報であるが、利用日時は、オフライン用トークンを利用して認証を行った最後の日時を表す情報であり、オフライン用トークンの利用に伴って更新される動的な日時情報である。クライアントは、このオフライン用トークンを、認証用情報記憶部22(
図1参照)に保持する。
【0038】
図5は、アプリケーション利用許可処理のフローチャートである。この処理は、クライアントにおいて、アプリケーションを利用する際に実行される処理である。この処理が実行される場面としては、アプリケーションを新規に起動するとき、およびアプリケーションを既に利用しているときがあり、クライアントがオンラインの場合とスタンドアロンの場合とがある。アプリケーションの利用中である場合には、例えば、一定の周期でこの処理を実行するようにしてもよいし、アプリケーションに対するユーザの特定の操作をトリガとして実行するようにしてもよい。
【0039】
処理を実行し、クライアントがネットワークに接続されている場合であって(ステップS30)、アプリケーションを起動中でない場合(ステップS31)、つまりアプリケーションを新たに起動する場合には、クライアントは認証画面を表示する(ステップS32)。認証画面とは、利用者IDおよびパスワードなどの認証情報を入力するための画面である。そして、入力された認証情報も含めて、認証要求をサーバに送信し、またクライアントの時計をサーバと同期する(ステップS33)。
既にアプリケーションを起動しているときは(ステップS31)、認証画面の表示をスキップした上で、認証要求をサーバに送信し、またクライアントの時計をサーバと同期する(ステップS33)。この場合の認証要求からは、利用者IDやパスワードの情報は省略してもよい。
ステップS33の処理において、クライアントの時計を同期するのは、次の理由によるものである。本実施例では、スタンドアロンモードにおいて、トークンに記録された日時情報(利用日時という)によって、アプリケーションの不正利用を防止している。かかる観点から、クライアントとサーバの時計が同期していることが好ましいのである。また、スタンドアロンモードにおいて時計が同期されたときは、それに合わせてトークンの利用日時の情報も同期させるものとしている。この意義については、後で説明する。
【0040】
クライアントは、認証要求を送信した後、スタンドアロンモードでない場合は(ステップS34)、サーバでの認証が完了するのを待つ。サーバからトークンが受信できない場合には(ステップS35)、クライアントは、アプリケーションの利用を禁止して(ステップS36)、この処理を終了する。トークンが受信できない(ステップS35)とは、トークンが所定の待機時間内に受信できなかった場合や、認証に失敗した旨の情報をサーバから受信した場合などが含まれる。
一方、サーバからトークンを受信できた場合には(ステップS35)、クライアントはアプリケーションの利用を許可して(ステップS43)、この処理を終了する。利用の許可には、新規にアプリケーションを起動する場合、および利用中のアプリケーションを継続的に利用可能とする場合の双方が含まれる。受信したトークンは、認証用情報記憶部22(
図1参照)に保持される。
【0041】
スタンドアロンモードの場合(ステップS34)には、利用可否判断を行う(ステップS40)。クライアントがネットワークに接続されていない場合(ステップS30)も同様である。
利用可否判断とは、アプリケーションの利用を許可するか否かの判断であり、クライアントは、認証用情報記憶部22に保持されたオフライン用トークンを参照し、次の3つの条件を満たすときに、利用可能と判断する。
【0042】
条件(1)は、クライアント日時は切替日時以降であるという条件である。クライアント日時とは、クライアントの時計の日時を意味する。切替日時とは、スタンドアロンモードへの切替えが行われた日時を意味する。これらの情報は、オフライン用トークンに記録されている。
条件(2)は、クライアント日時は利用日時以降であるという条件である。利用日時とは、オフライン用トークンを用いた認証が最後に行われた日時を意味する。
条件(3)は、クライアント日時は有効期限内であるという条件である。
認証用情報記憶部22にオフライン用トークンが保持されていないときは、そもそもスタンドアロンモードが許容されていないことになり、上の3つの条件のいずれも満たさないから、アプリケーションの利用は不可と判断されることになる。
【0043】
上記条件のうち、条件(1)(3)は、切替日時、有効期限という固定的な日時情報を用いた判断である。仮に、これらの条件のみでアプリケーションの利用可否を判断するとすれば、有効期限を過ぎた後に、クライアントの時計を、遡らせることによって、容易に条件(1)(2)を満たすようにでき、アプリケーションの不正利用をすることが可能となってしまう。
これに対し、条件(2)は、オフライン用トークンを用いて認証するたびに更新される動的な日時情報である。従って、オフライン用トークンを利用するにつれて、日時の進行に伴って、条件(2)は有効期限に近づくように更新されることになるから、条件(2)(3)を満たす時間幅は徐々に狭くなることになる。仮に有効期限を過ぎてしまえば、条件(2)(3)を満たす範囲は存在しなくなることも起き得る。このように動的な日時情報を組み合わせてアプリケーションの利用可否を判断することにより、不正利用を防止することができる利点がある。
本実施例では、こうした機能をさらに強化するため、利用日時の情報は、原則として将来に向かってのみ更新可能とし、遡る変化は許容しないものとした。
【0044】
条件(1)〜(3)のいずれかを満たさない場合には、アプリケーションの利用は不可と判断され(ステップS41)、アプリケーションの利用が禁止される(ステップS36)。
条件(1)〜(3)のいずれも満たす場合には、アプリケーションの利用が可能と判断され(ステップS41)、利用日時を更新した後(ステップS42)、アプリケーションの利用が許可される(ステップS43)。
【0045】
ステップS40で説明した条件(1)〜条件(3)の意義について改めて説明する。
図6は、利用日時更新の内容を示す説明図である。
図6(a)は、アプリケーション利用許可処理(
図5)のステップS40に示した条件(1)〜(3)を図示している。条件(1)は、黒塗りの三角で示したクライアント日時が、矢印tr1に示すように、切替日時以降の範囲にあるときに満たされる。条件(2)は、クライアント日時が、矢印tr2に示すように、利用日時以降の範囲にあるときに満たされる。条件(3)は、クライアント日時が、矢印tr3に示すように、有効期限までの範囲にあるときに満たされる。この結果、条件(1)〜(3)を満たす範囲は、図中のハッチングを示した範囲et1にクライアント日時が存在するときに満たされることになる。
そして、利用日時は、矢印Aで示すように、オフライン用トークンの利用に伴って、将来方向に向かってのみ更新される。
【0046】
利用日時が更新されることにより、
図6(b)に示すように、条件(1)〜(3)を満たす範囲et2は、徐々に狭くなる。この状態で、クライアント日時を図示するように、意図的に過去に遡らせて設定したとしても、利用日時に基づく条件(2)を満たさないため、アプリケーションは利用できないことになる。
【0047】
このようにスタンドアロンモードでの不正利用の防止に寄与する利用日時であるが、何らかの理由でクライアント日時が、将来の日時に設定されてしまうと、
図6(c)に示す状態となる。例えば、クライアント日時が有効期限を過ぎた日時に設定されると、認証が行われた時点で、オフライン用トークンの利用日時も、同様に有効期限以降の日時に設定されてしまい、矢印tr1〜tr3の条件を全て満たす領域は存在しなくなってしまう。この結果、アプリケーションの利用は許可されなくなる。
かかる状態を解消するためには、利用日時を正確な日時に修正する必要があるが、本実施例では、利用日時は原則として将来方向に向かってのみ更新可能としているため、たとえクライアント日時を矢印taで示すように正確な日時に修正したとしても、利用日時は遡らないため、やはり矢印tr1〜tr3の条件を全て満たす領域は得られない。
本実施例では、かかる状態を回避するため、アプリケーション利用許可処理(
図5)のステップS33において、オンラインでサーバとクライアントの時計を同期できたときに限り、例外的に利用日時も過去に遡ることを許容している。この結果、クライアントがサーバに接続されれば、利用日時が、
図6(c)中の真正の現在日時に修正されるため、条件(2)は、破線の矢印tr2に示す状態となり、全ての条件を満たす時間範囲を回復させることができる。
【0048】
以上で説明した本実施例の認証システムによれば、スタンドアロンモードを設けることにより、クライアントがオフライン状態にあるときでも、アプリケーションを利用することができる。また、スタンドアロンモードにおいて、固定的な日時情報(切替日時および有効期限)と動的な日時情報(利用日時)とを併用することにより、アプリケーションの不正利用を防止することができる。
また、オンラインで認証処理を行う際に、利用者が、クライアントを変えて認証要求をしたときは、発行済みのトークンを無効にすることにより、それまで利用していたアプリケーションを停止するまでなく、異なるクライアントでアプリケーションの利用を開始することが可能となる利点がある。
【0049】
本実施例で説明した種々の特徴は、必ずしも全てを備えている必要はなく、その一部を適宜、省略したり組み合わせたりしてもよい。