処理実行装置、アプリケーションプログラム及びダウンロードサーバ装置
【課題】認証サーバによる認証を必要とするアプリケーションプログラムは、通信エラーのために認証を受けられない場合には、実行することができない。
【解決手段】認証サーバから認証を得るための通信において通信エラーが発生した場合、メモリに記憶された認証結果履歴情報を読出して、認証サーバに認証要求を送信してその結果として認証の成功が返信されたことが有ると判断される場合には、認証処理に成功したものとして処理を実行する。
【解決手段】認証サーバから認証を得るための通信において通信エラーが発生した場合、メモリに記憶された認証結果履歴情報を読出して、認証サーバに認証要求を送信してその結果として認証の成功が返信されたことが有ると判断される場合には、認証処理に成功したものとして処理を実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバより得られる認証を得て処理を実行する処理実行装置、アプリケーションプログラム、アプリケーションプログラムをダウンロード可能に保持するダウンロードサーバに関する。
【背景技術】
【0002】
通信技術や計算機の実装技術などの発達に伴い、パーソナルコンピュータのみならず端末装置として携帯電話端末を、インターネットを介してサーバ装置に接続することが可能となってきた。また、端末装置にアプリケーションプログラムをダウンロードして安全に実行するために、仮想マシンが解釈と実行できるマシンコード(仮想マシンコード)で動作が記述されたアプリケーションプログラムを仮想マシンで動作させることが一般的に行われている(例えば、特許文献1参照。)。例えば、携帯電話端末をインターネットなどの通信網を介してウェブサーバに接続し、仮想マシンコードで動作が記述されたゲームなどを行うためのアプリケーションプログラムをそのウェブサーバよりダウンロードし、仮想マシンで動作させ、ゲームを楽しむことができる。
【0003】
このようなアプリケーションプログラムは、有料にて利用できるものと無料にて利用できるものに分類される。有料の場合には、課金処理を行うために携帯電話端末の識別情報や利用者の識別情報などを会員情報などとして認証サーバに登録を行って利用を行うことが通常である。そして、アプリケーションプログラムの実行の都度あるいは所定の期間の経過(例えば一ヶ月)ごとに会員登録がされているかどうかについて、インターネットなどを介し、認証サーバによる認証を受け、課金処理などと引き替えにアプリケーションプログラムの利用が可能となる。また、無料に利用できるアプリケーションプログラムであっても、一定の期間経過後に有料に移行するためや、パージョンアップの通知などを行うために同様の認証を受ける必要があるものが多い。
【0004】
【特許文献1】特開2003−114837号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、所定の期間の経過(例えば一ヶ月)ごとに会員登録されているかどうかについて認証サーバによる認証を受ける場合は、携帯電話端末の時計機能を使って、前回認証に成功した日時から例えば一ヶ月を経過したときに再度認証を受ける必要があるが、携帯電話端末の日時が一ヶ月経過しないように利用者が設定し続けると、次の認証を受けずに利用し続けるといった不正が可能となってしまう。
【0006】
このような不正に対処するため、アプリケーションプログラムの実行の都度認証サーバによる認証を受けさせることが考えられる。しかしながら、この場合は次のような課題がある。すなわち、アプリケーションプログラムの実行の都度、認証サーバによる認証を受ける場合は、通信を行う頻度が増大する。しかし、通信技術が発達した今日であっても、通信回線などのトラブルにより認証サーバとの通信の失敗(通信エラー)を完全に無くすことは困難である。このため、通信エラーにより、上述のようなアプリケーションプログラムを動作させることができないという課題がある。特に携帯電話端末の場合には、建物の中や地下鉄の駅の間などにおいて基地局からの電波が弱かったり電波が届かなかったりする場合には、通信ができないので、上述のようなアプリケーションプログラムを動作できない場合が多々発生するのが実情である。
【0007】
また、基地局からの電波が受信できないなどにより通信ができないときには認証を受けなくてもアプリケーションプログラムを動作可能とすると、意図的に通信ができない状態が作出されることにより、不正にアプリケーションプログラムが利用されてしまうという課題もある。
【課題を解決するための手段】
【0008】
本発明の一形態として、ネットワークを介して接続された認証サーバへ、成功となるか否かの判定が行われる認証処理の要求を送信する送信部と、認証処理の結果を受信する受信部と、認証サーバでの認証処理が成功か否かの結果によってその後に行う処理を選択する処理選択部と、認証処理の結果の履歴を示す認証結果履歴情報を記憶する記憶部と、認証要求の送信と認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出するエラー検出部と、エラー検出部による通信エラーの検出に応じて、あるいはエラー検出部による通信エラーが検出されなかった場合には受信された認証処理の結果に応じて、認証結果履歴情報を更新する認証結果履歴更新部と、通信エラーが発生したことが検出され、かつ認証結果履歴情報に認証処理に成功したことがあることを示す情報が含まれている場合には、認証処理の結果を成功とみなした処理を行う認証制御部と、を有することを特徴とする処理実行装置を提供する。
【0009】
この処理実行装置によれば、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理に成功したことが有れば、認証処理に成功したものと判断されるので、通常の処理を行うことができる。また、過去の認証処理の範囲を、例えば前回の認証処理に限定などすることにより、通信ができない状況が意図的に作出されても不正に処理実行装置が利用されることを防ぐことができる。
【0010】
また、本発明の別の形態として、ネットワークを介して接続された認証サーバへ、認証が成功となるか否かの判定が行われる認証処理の要求を送信し、認証処理の結果を受信し、認証サーバでの認証処理が成功か否かの結果によってその後に行う処理を選択することを計算機に行わせるためのアプリケーションプログラムであって、認証処理の結果の履歴を示す認証結果履歴情報を記憶し、認証要求の送信と認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出し、通信エラーの検出に応じて、あるいは通信エラーの検出がされなかった場合には受信された認証処理の結果に応じて認証結果履歴情報を更新し、通信エラーが発生したことが検出され、かつ認証結果履歴情報に認証処理に成功したことがあることを示す情報が含まれている場合には、認証処理の結果を成功とみなした処理を行うことを計算機に実行させるためのアプリケーションプログラムを提供する。
【0011】
このアプリケーションプログラムを計算機で実行する際に、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理に成功したことが有れば、認証処理に成功したものと判断されるので、通常の処理を行うことができる。また、過去の認証処理の範囲を、例えば前回の認証処理に限定などすることにより、通信ができない状況が意図的に作出されても不正にアプリケーションプログラムが利用されることを防ぐことができる。
【0012】
また、本発明の別の形態として、ネットワークを介して接続された認証サーバへ、認証が成功となるか否かの判定が行われる認証処理の要求を送信し、認証処理の結果を受信し、認証サーバでの認証処理が成功か否かの結果によってその後に行う処理を選択することを計算機に行わせるためのアプリケーションプログラムであって、認証処理の結果の履歴を示す認証結果履歴情報を記憶し、認証要求の送信と認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出し、通信エラーの検出に応じて、あるいは通信エラーの検出がされなかった場合には受信された認証処理の結果に応じて認証結果履歴情報を更新し、通信エラーが発生したことが検出され、かつ認証結果履歴情報に認証処理に成功したことがあることを示す情報が含まれている場合には、認証処理の結果を成功とみなした処理を行うことを計算機に実行させるためのアプリケーションプログラム、を携帯端末へダウンロード可能に記憶する記憶部を有するダウンロードサーバ装置を提供する。
【0013】
このダウンロードサーバ装置によれば、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理に成功したことが有れば、認証処理に成功したものと判断されるアプリケーションプログラムを携帯端末などの端末装置にダウンロードすることができる。
【発明の効果】
【0014】
本発明によれば、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理が成功したことが有れば、認証処理に成功したものと判断されるので、通常の処理を行うことができる。また、過去の認証処理の範囲を、例えば前回の認証処理に限定などすることにより、通信ができない状況が意図的に作出されても不正に処理実行装置、アプリケーションプログラムなどを利用されることを防ぐことができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明を実施するための最良の形態について、図面を参照しながら幾つかの実施形態に分けて説明を行う。なお、本発明は、これらの説明によって何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々の態様で実施することができる。
【0016】
(本発明の概要)
図1は、本発明の概要を示す図である。すなわち、本発明の一実施形態に係るシステムの構成と、そのシステムの構成要素の一例である端末装置での操作の流れを説明する図である。
【0017】
図1(a)〜(d)において、本発明の一実施形態に係るシステム100は、第1の通信網101に接続された基地局102と通信が可能な端末装置103と、第1の通信網101とゲートウェイ(GW)105を介して接続される第2の通信網106に接続されたダウンロードサーバ107と、認証サーバ110とを備える。なお、ダウンロードサーバ107と認証サーバ110とは一体となったサーバ装置により実現されていてもよい。また、第1の通信網101と第2の通信網106とが同一であってもよく、GW105は明示的に特定されなくてもよい。また、端末装置103は、図1では携帯可能な端末の一種である携帯電話として説明されるが、通信機能を有する任意の電子装置(例えばパーソナルコンピュータ、家電製品など)を用いることができ、通信機能は無線、有線を問わない。
【0018】
第1の通信網101は、例えば、携帯電話会社(キャリア)の運営する通信網である。基地局102は第1の通信網に接続され、無線通信によって端末装置103と通信が可能である。あるいは第1の通信網101は、インターネットサービスプロバイダ(ISP)がその契約者に通信サービスを提供したり、一般企業や大学などの組織がその構成員の便益などのために運営したりするための通信網であってもよく、その場合には、基地局はアクセスポイントと言い換えることができる。以下、説明の便宜上、基地局と携帯端末を用いて説明を行うが、本発明は、無線通信を行う基地局と携帯端末とを用いる場合に限定されることはない。
【0019】
第2の通信網106は、インターネットなどの広域の通信網であることが主に想定される。もちろん、インターネットのようなオープンなネットワークである必要はなく、クローズドなネットワークであってもよい。また、GW105は、第1の通信網101と第2の通信網106との通信を中継するルータなどによって構成される。
【0020】
ダウンロードサーバ107は、その記憶部108にアプリケーションプログラム(以下では「アプリケーション」や「アプリ」と略記する場合がある)109を、端末装置103にダウンロード可能に記憶している。アプリケーション109は、端末装置103のマシン(ネイティブ)コードや、端末装置103で動作可能な仮想マシンのマシンコードで記述されたプログラムであり、実行可能なものである。あるいは、再生可能な音楽データ、映像データなどのコンテンツデータであってもよい。コンテンツデータである場合には、その再生プログラムが仮想マシンに相当する。ダウンロード可能とは、ダウンロードサーバ107が、端末装置103よりダウンロード要求の情報を受信した場合に、その返信としてアプリケーション109を端末装置103へ所定のプロトコルで返信し、携帯端末がアプリケーション109を実行や再生など(以下、「利用」という。)をすることが可能な状態で格納することができることをいう。
【0021】
認証サーバ110は、データベース(DB)111を有する。システム100においては、ダウンロードサーバ107から端末装置103にダウンロードされたアプリケーションを端末装置103で実行するには、認証サーバ110による認証を受ける必要があるものとする。この認証の対象は、端末装置103または端末装置103の利用者が想定される。そして、この認証のための情報(「認証情報」と略記する)は、DB111に登録される。認証情報には、端末装置103を識別するための端末シリアル番号(あるいは、個体識別情報、サブスクライバIDなどとも称される場合がある)が含まれる。あるいは、端末装置103の利用者を識別するための利用者識別情報が含まれるようになっていてもよい。さらにパスワードが組み合わされていてもよい。また、端末装置103の耐タンパ領域などにセキュアな状態で格納された秘密鍵と対をなす公開鍵やPKI(Public Key Infrastructure)などにおける公開鍵証明書であってもよい。
【0022】
また、認証情報は、端末装置103に記憶がされてから認証サーバ110に送信されるのではなく、クッキー情報などのように認証サーバ110によって生成され、DB111に登録されるとともに、端末装置103へ送信され、端末装置103に記憶されるものであってもよい。
【0023】
認証サーバ110による認証処理は、端末装置103でのアプリケーション109の利用を開始するときや、利用の途中で行われる。また、その認証処理は、利用を行う都度行う。あるいは、その認証処理は、利用の回数が所定の回数に達する都度、前回の認証処理からの所定の時間が経過しているときや、所定の期日や時間が経過したときなど、任意のタイミングで任意の回数、行われるようになっていてもよい。
【0024】
認証サーバ110のDB111への認証情報の登録は、端末装置103においてブラウザなどを動作させ、認証サーバ110との通信により行うことが主に想定される。他の端末装置103からの通信により登録が行われてもよい。認証情報の登録は、ダウンロードサーバ107からアプリケーション109を端末装置103へダウンロードする前に行われてもよい。あるいは、認証情報の登録は、端末装置103にダウンロードしたアプリケーション109を初めて起動する際に、アプリケーション109と認証サーバ110との通信が行われて、DB111に認証情報が登録されていないことが検出された際に行われるようになっていてもよい。
【0025】
図1(a)は、端末装置103においてブラウザなどを用いてダウンロードサーバ107に対してURLなどを用いてアプリケーション109を指定し、ダウンロード要求を送信し、アプリケーション109が端末装置103の不揮発性記憶領域(例えば、フラッシュメモリ)に記憶された状況を示す。図1(a)では、端末装置103がダウンロードサーバ107よりアプリケーション109をダウンロードのために受信している間には、その旨の表示が表示部104に表示されている。また、この表示は、図14(a)に例示されるものであってもよい。ダウンロードが終了すると、端末装置103にダウンロードされて記憶されたアプリケーション109は、端末装置103のアプリケーションマネージャなどの支配下に配置するようになっていてもよい。アプリケーションマネージャとは、アプリケーションの起動や終了などの操作を行うプログラムの一種である。アプリケーションマネージャの支配下にアプリケーションを配置するとは、アプリケーションマネージャのアクセスできる記憶領域に、アプリケーション109のパスが記憶されることをいう。アプリケーション109のパスとは、端末装置103の不揮発性記憶領域を用いて実現されるファイルシステムにおけるアプリケーション109を格納するファイルやディレクトリの位置をいう。
【0026】
なお、アプリケーション109をダウンロードサーバ107よりダウンロードすることは、端末装置103にアプリケーション109を導入する一つの方法である。他の方法としては、例えば、パーソナルコンピュータなどを用いてメモリカードにアプリケーション109に書き込み、そのメモリカードを端末装置103に装着して、メモリカードよりアプリケーション109を読出してもよい。また、USB(Universal Serial Bus)のケーブルを用いて端末装置103をパーソナルコンピュータに接続して、パーソナルコンピュータよりアプリケーション109をUSBのケーブルを介して受信するようになっていてもよい。あるいは、アプリケーション109は、端末装置103の外部から導入されることは必須ではない。アプリケーション109は、工場での製造時や出荷時にすでに導入された状態になっていてもよく、端末装置103の利用者がダウンロードなどの特別な操作を行わなくても起動可能となっていてもよい。
【0027】
図1(b)は、端末装置103においてアプリケーションマネージャなどを用いてアプリケーション109を起動し、その実行を開始した状況を示す。
【0028】
図1(c)は、図1(b)において、アプリケーション109が、認証情報を認証サーバ110のDB111に登録した状況あるいは、認証情報が認証サーバ110のDB111に登録されていることが確認された状況を示す。端末装置103の不揮発性記憶領域には、アプリケーションごとに固有の情報を記憶する領域(例えば、スクラッチパッドなどと称される場合がある)が割り当てられるようになっており、アプリケーション109は、起動する都度その領域に記憶されたデータを読出し、認証情報が認証サーバ110のDB111に登録されているかどうかを判断する。あるいは、クッキー情報が通常格納されているように、共通にアクセスができる記憶領域に記憶されたデータを読出し、認証サーバ110から送信されたクッキー情報などが登録されているかどうかによって、認証情報が認証サーバ110のDB111に登録されているかどうかを判断する。
【0029】
すなわち、認証情報が認証サーバ110のDB111に登録されていることが確認される。この確認がされると、図1(d)を参照して後に説明するように、携帯端末103からの認証要求に応じて、成功か否かの結果が返信される認証処理が認証サーバ110にて実行される状態にすることができる。そして、携帯端末103は、認証情報が認証サーバ110に登録されている場合には、認証サーバ110に対して認証要求を送信し、その返信により認証処理に成功したものか否かによってその後に行う処理を選択する。
【0030】
もし、アプリケーション109が、認証情報が認証サーバ110のDB111に登録されていないと判断すれば、認証サーバ110と通信を行い、認証情報を認証サーバ110のDB111に登録する処理を行う。このとき、アプリケーション109は、端末装置103の記憶領域から端末シリアル番号を読出したり、表示部104に表示を行い、利用者に利用者識別情報などの入力を促したりする。そして、認証サーバ110と通信を行い、DB111に認証情報112が登録された旨の返信、あるいは、既に認証情報が登録されている旨の返信が得られれば、アプリケーション109の固有の情報を記憶する領域などに、認証情報が登録されている旨を表すデータを記憶する。その後、アプリケーション109は、通常の動作を行う。なお、認証情報の登録がされているかどうかの確認は、アプリケーション109の起動直後に行われる必要はなく、任意の時点において行うことができる。
【0031】
図1(d)は、アプリケーション109が、アプリケーション109の固有の情報を記憶する領域などに記憶されたデータを読出し、認証情報が認証サーバ110のDB111に登録されていると判断した場合に、認証サーバ110に認証要求を送信して認証処理の実行を求めている状況を示す。例えば、アプリケーション109は、端末シリアル番号を読出し、認証サーバ110に認証要求とともに送信を行う。認証サーバ110は、DB111に対して検索を行い、その端末シリアル番号が登録されているかどうかを返信する。登録されていれば、認証処理の結果は成功となり、登録されていなければ、認証処理の結果は失敗となり、成功あるいは失敗の旨が返信される。アプリケーション109は、端末シリアル番号がDB111に登録されている旨の返信が得られれば、認証が受けられたとして、その後の処理を継続する。もし、端末シリアル番号がDB111に登録されていない旨の返信が得られれば、認証が受けられなかったとして、認証処理を求める前に行っていた処理を中断したり、アプリケーション109の実行そのものを終了したり、認証失敗用の処理を実行したりする。
【0032】
なお、認証情報として、端末装置103の公開鍵や公開鍵証明書が認証サーバ110のDB111に登録されているのであれば、チャレンジアンドレスポンス型の認証処理を行うことができる。その一例としては、認証サーバ110は乱数などを発生させて端末装置103に送信し、端末装置103は受信した乱数などをその秘密鍵で暗号化して認証サーバ110へ送信し、認証サーバ110はDB111に登録されている公開鍵や公開鍵証明書によって復号を行い、最初の乱数などが得られるかどうかで認証処理を行い、その結果を返す。以下では、主に端末装置103から送信された情報が認証サーバ110のDB111に登録されているかどうかによって、認証サーバ110が認証処理の結果の判定を行うとして説明するが、上述のようなチャレンジアンドレスポンス型の認証処理を用いることは、本願発明の技術的範囲から除外されない。
【0033】
図2は、端末装置103、ダウンロードサーバ107、認証サーバ110との三者の通信の過程を説明するシーケンス図である。ステップS201においては、端末装置103からダウンロードサーバ107に対して、アプリケーションのダウンロード要求が送信される。ステップS202においては、ダウンロード要求に応じて、アプリケーション109がダウンロードサーバ107から端末装置103に返信される。その後、端末装置103では、アプリケーション109に対して必要に応じて解凍処理などを施し、不揮発性記憶領域に記憶し、そして、アプリケーションマネージャなどの支配下に配置する。上述したように、ステップS201とステップS202によりダウンロードサーバ107との通信は必須なものではなく、パーソナルコンピュータから受信され、アプリケーションマネージャなどの支配下に配置されていたり、あるいは端末装置103の出荷時に既に導入され、アプリケーションマネージャなどの支配下に配置されていたりしてもよい。
【0034】
その後、端末装置103においてアプリケーション109を起動し、実行を開始する。その際、アプリケーション109は、認証情報が認証サーバ110のDB111に登録されているかどうかを、アプリケーション109固有の記憶領域などのデータを読出して判断する。その判断に応じて、ステップS203において、認証情報が認証サーバ110のDB111に登録されていることが確認できなければ、認証サーバ110に認証情報を登録する要求である認証登録要求を送信し、認証情報が認証サーバ110のDB111に登録されていることが確認されれば、認証サーバ110に認証処理を行うよう認証要求を送信する。そして、ステップS204においては、認証登録要求や認証要求の結果を受信する。そして、その結果に応じて、その後の処理を選択したり、中断、停止、終了を選択したりする。もちろん、認証登録要求や認証要求は、アプリケーション109の起動の都度、毎回送信される必要はない。なお、以下では、認証処理とは主に認証サーバ110で行われる処理を意味し、単に認証と記した場合には主に端末装置103で行われる処理を意味する。
【0035】
ここで、アプリケーション109と認証サーバ110との通信がエラーとなり、認証要求に対する返信を得ることができない場合がある。例えば、端末装置103の通信機能が故障している場合、端末装置103と基地局102との通信ができない場合、第1の通信網101、GW105もしくは第2の通信網106に障害が発生している場合または認証サーバ110に障害が発生している場合などには、認証要求に対する返信を得ることができない。このような場合には、アプリケーション109の内部では、認証サーバ110と通信のためのコネクションを確立する際のエラー、認証サーバ110に端末シリアル番号を送信する際のエラー、認証サーバ110より返信が所定の時間内に得られないことによるタイムアウト、返信を受信する際のエラー、受信したデータが所定の形式でないことによるエラーなどが発生して、通信のエラーとして検出がされる。具体的には、通信を行うためのシステムコールやそれらのシステムコールを用いたライブラリ関数などの戻り値の異常や、例外が発生し、通信のエラーとして検出される。
【0036】
本発明の特徴の一つは、通信のエラーが発生した場合であっても、所定の範囲での過去において行われた認証処理の中に成功したものがあれば返信された認証の結果が成功したものとみなしてアプリケーション109の動作を継続可能とする点である。
【0037】
(実施形態1)
(端末装置の構成)
図3は、処理実行装置を実現する端末装置のハードウェア構成を示す機能ブロック図である。端末装置300は、バス307によって接続されたCPU(Central Processing Unit)301と、RAM(Random Access Memory)302と、不揮発性記憶部303と、通信I/F(Interface)304と、操作部305と、表示部306とを有する。
【0038】
CPU301は、マシンコードを実行し、プログラムを実行する回路である。また、通信I/F304、操作部305、表示部306などが発生する割り込み信号を取得して割り込み信号に応じた処理を行う。RAM302は、DRAM(Dynamic Random Access Memory)などにより構成されるメモリであり、CPU301が実行するプログラムを記憶する。また、そのプログラムが参照するデータを記憶することが可能である。不揮発性記憶部303は、携帯端末300の電源を切断しても、記憶された情報を保持可能な記憶部である。例えば、ROM(Read Only Memory)などの読み出し専用の記憶素子や、フラッシュメモリなどの書き換えが可能な記憶素子などにより構成される。通信I/F304は、携帯端末300が外部と通信を行うためのインターフェースである。通信方式に応じたネットワークアダプタなどを含む。操作部305は、携帯端末の利用者によるボタンなどの操作を検出し、その操作を示す情報を生成する部である。例えば、どのボタンが押下されたか、タッチパネルの機能を有する画面のどの部分がタッチされたかどうかを表すデータをイベント情報などとして生成する。生成されたデータは、後述のオペレーティングシステムを介して、アプリケーションプログラムが取得可能となる。表示部306は、液晶素子や有機EL素子などを用いて構成されるディスプレイに表示を行うための部である。
【0039】
携帯端末300の電源が投入されると、CPU301によるブート処理が行われ、不揮発性記憶部303に記憶されているオペレーティングシステムがRAM302に展開され、そのオペレーティングシステムが実行される。
【0040】
図4は、オペレーティングシステムが実行され、そのオペレーティングシステムの管理下でプログラムが動作している様子を示す模式図である。ハードウェア401の上の論理的なレイヤにおいてオペレーティングシステム402が動作する。これにより、オペレーティングシステムの管理下で動作するプログラムは、オペレーティングシステム402を介してハードウェア401の制御やハードウェア401からのデータの受信を行うことができる。オペレーティングシステム402の管理下で動作するプログラムには、仮想マシン403、ブラウザなどがある。仮想マシン403は、仮想マシンコードを実行するプログラムであり、仮想マシンコードで記述されたプログラムを実行する。一般的に、仮想マシンが実行する仮想マシンコードで記述されたプログラムが「アプリケーション」と称される場合が多い。仮想マシン403を動作させることにより、ハードウェア401が異なっていても同じ記述のアプリケーションを動作させることが可能となる。また、アプリケーションは、ネイティブコードで記述されてもよく、仮想マシン403を介さず、オペレーティングシステム402の管理下で動作するものであってもよい。
【0041】
(ダウンロードサーバ、認証サーバの構成)
図5は、ダウンロードサーバ107や認証サーバ110を実現するサーバ装置のハードウェア構成を示す機能ブロック図である。サーバ装置500は、バス505によって接続されたCPU501、RAM502、通信I/F503、不揮発性記憶部504を有する。なお、CPU501、RAM502、通信I/F503、不揮発性記憶部504、バス505は、携帯端末300のそれらと対応するものと同じものが用いられる必要はない。端末装置300で用いられているものよりも高性能なものがサーバ装置500で用いられるであるのが一般的である。例えば、不揮発性記憶部504は、現状ではハードディスク装置が一般的に用いられ、端末装置300の不揮発性記憶部303の記憶容量よりも大きなものが用いられることが多い。CPU501は処理スピードがCPU301よりも高く、また、RAM502もアクセススピードがRAM502よりも高いものが用いられることが多い。
【0042】
サーバ装置500の電源が投入されると、CPU501によるブート処理が行われ、不揮発性記憶部504に記憶されているオペレーティングシステムがRAM502に展開され、オペレーティングシステムが実行される。その後、このオペレーティングシステムの管理下で各種のサーバプログラムなどが実行される。
【0043】
図6は、オペレーティングシステムが実行され、そのオペレーティングシステムの管理化で各種プログラムが実行されている様子を示す模式図である。図4と同様に、ハードウェア601の上の論理的なレイヤにおいてオペレーティングシステム602が動作し、オペレーティングシステムの管理下で動作するプログラムは、オペレーティングシステム602を介してハードウェア601の制御やハードウェア601からのデータの受信を行う。オペレーティングシステム602の管理下で動作するプログラムは、外部との通信を行うサーバプログラム603や外部との通信を行わないローカルプログラム604に分類される。サーバプログラム603は、例えば、ウェブサーバの機能を実現するプログラムであり、ローカルプログラム604は、データベース管理システムである。
【0044】
(ダウンロード処理について)
図7は、端末装置103がダウンロードサーバ107よりアプリケーション109をダウンロードする処理の流れを説明するフローチャートを示す。端末装置103では、例えばブラウザ405を動作させ、ダウンロードサーバ107で動作しているWEBサーバの機能を実現するサーバプログラム603と通信を行い、アプリケーション109のダウンロード用のウェブページなどを表示部306により表示する。そして、ダウンロードのためのボタンなどが押下されたことを操作部305からの割り込みでCPU301が検出すると、図7に示されるフローチャートの処理がCPU301によりブラウザ405などの機能の一部として実行される。
【0045】
ステップS701においては、ダウンロードセッションの開始処理が行われる。例えば、サーバプログラム603と、ダウンロードのための通信セッションを確立する。ステップS702においては、ダウンロードされるアプリケーションを格納するファイルを、不揮発性記憶部303により実現されるファイルシステムに作成し、そのファイルを書き込みモードなどにてオープンする。ステップS703において、ダウンロード要求を、確立した通信セッションを用いてサーバプログラム603に送信する。後に図8に示されるように、ダウンロードサーバ107からアプリケーションの送信が行われるので、ステップS704、S705、S706により形成されるループにおいて、ダウンロードサーバ107から送信されるデータをバッファなどのRAM302の所定の記憶領域に読み込み、ステップS702にてオープンされたファイルに書き込むことを、データの読み込み時にEOF(End Of File)が検出されるまで繰り返す。EOFが検出されると、ステップS707へ移行し、ステップS702でオープンされたファイルをクローズし、ステップS708において、S701で確立された通信セッションを終了する。その後、ダウンロードで読み込まれたデータに破損がないかなどをチェックし、必要であれば、ファイルに書き込まれたデータの解凍処理などを行い、ダウンロードされたアプリケーションをアプリケーションマネージャの支配下に配置などする。
【0046】
なお、図14(a)は、ダウンロードセッションが開始され、そのセッションが終了するまでのディスプレイの表示の一例を示す。すなわち、ダウンロードサーバと通信が行われている旨の「通信中…」が表示される。
【0047】
図8は、ダウンロードサーバ107が端末装置103にアプリケーション109をダウンロードさせる処理の流れを説明する。この処理は、例えば、ウェブサーバの機能を実現するサーバプログラム603の機能の一部として、CPU501により実行される。
【0048】
ステップS801において、ダウンロード要求が受信されるまで待ち状態に入る。例えば、LISTENシステムコールを実行し、何らかのデータが受信可能になると、受信可能となったデータを取得しダウンロード要求であるかどうかを判断する。ダウンロード要求であると判断されると、ステップS802に処理を移行し、アプリケーション109が格納されたファイルを読出しモードにてオープンする。その後、ステップS803、S804、S805により形成されるループにおいて、オープンされたファイルのデータをバッファなどとして用いられるRAM502の領域に読み込み、読み込まれたデータを通信I/F503を介して送信することを、ファイルのデータが全て読み込まれてEOFが検出されるまで繰り返し行う。EOFが検出されると、ステップS806において、ファイルをクローズして、ステップS807において、セッションの終了処理を行う。
【0049】
(アプリケーションの実行について)
図9は、端末装置103にダウンロードされたアプリケーション109を実行するための処理の流れを説明するフローチャートである。端末装置103で所定のボタンなどの操作を行い、アプリケーションマネージャなどにアプリケーション109の起動を命令すると、図9に示されるフローチャートの処理がアプリケーションマネージャなどの機能としてCPU301により開始される。ステップS901において、不揮発性記憶部303に記憶されたアプリケーション109をRAM302にロードする。その後、ステップS902において、アプリケーション109の動作を開始するように、仮想マシン403に命令したり、オペレーティングシステム402を介してCPU301に命令したりする。これによりアプリケーション109が実行される。
【0050】
図10は、アプリケーション109が、端末装置103のハードウェアと一体として実行されることにより、実現され、所定の処理を実行する装置(処理実行装置)の機能ブロック図を示す。アプリケーションの実行によって実現される装置1000は、主処理部1001と、認証情報記憶部1002と、認証結果履歴更新部1003と、通信部1004と、認証制御部1005と、を有する。これらの部は、以下に説明する各部の機能を発揮するためのクラスやインスタンスのメソッドあるいは関数(function)、手続(procedure)を含むモジュールとして実現される。
【0051】
主処理部1001は、アプリケーション109の本来の処理を行う部である。「本来の処理」とは、アプリケーション109全体として実現される機能を提供するための処理である。例えば、アプリケーション109が、ゲームを行うためのプログラムであれば、端末装置103の利用者によるボタンなどの操作を検出し、その検出に応じて画面表示を変化させて、その利用者に一連のゲームをさせることが、本来の処理である。また、アプリケーション109がコンテンツ再生のソフトウェアであれば、音楽や映像などのコンテンツを表す情報を読み込み、コンテンツの再生を行うのが本来の処理である。本発明の一実施形態では、本来の処理の中には、認証制御部1005に制御を移し、認証サーバ110へ認証処理を要求し、返信された認証処理の結果が成功か否かによってその後に行う処理を選択する処理選択の処理が含まれる。例えば、認証処理の結果が成功であれば、認証制御部1005に制御を移す前の処理を続行する選択を行い、認証処理の結果が成功でなければ、認証制御部1005に制御を移す前の処理を中断などする。したがって、主処理部1001は、処理選択の処理を行う処理選択部を含むといえる。
【0052】
アプリケーション109がプログラムであれば、そのエントリポイントは通常、主処理部1001の内部に設定される。すなわち、アプリケーション109の実行の開始の際には、仮想マシン403やCPU301などの有するレジスタの一つであるプログラムカウンタには、主処理部1001内部のアドレスが設定される。もちろん、エントリポイントは、必要に応じて、任意のアドレスに設定できる。
【0053】
認証情報記憶部1002は、認証結果履歴情報1007を読出し可能に、また更新可能に記憶する。また、認証結果履歴情報1007に加えて、図10に示されるように登録済情報1006を記憶していてもよい。認証情報記憶部1002は、不揮発性記憶部303やRAM302などのメモリに一定の領域を確保し、その領域に登録済情報1006と認証結果履歴情報1007とを記憶し、そのように記憶された登録済情報1006と認証結果履歴情報1007とにアクセスを行うモジュールなどとして実現される。
【0054】
登録済情報1006とは、認証サーバ110に認証情報が登録されているかどうかを示す情報である。例えば、その値が0ならば登録されておらず、0以外の値、例えば1、であれば認証情報が登録されていることを示す。また、登録済情報1006は、認証サーバ110に認証情報の登録を要求し、返信された情報であってもよい。具体的には、登録の要求がされた認証情報や認証情報から所定の演算で得られる情報を認証サーバ110の秘密鍵で暗号化した情報であってもよい。このように、認証情報記憶部1002に登録済情報1006を記憶することにより、認証サーバ110と実際に通信を行わなくても、認証情報が認証サーバ110に既に登録されているかどうかを判断することができる。さらに、認証サーバ110の秘密鍵で暗号化した情報を登録済情報として用いれば、登録済情報1006の偽造も困難となり、不正を行うことが困難となるため、確実に認証情報が認証サーバ110に登録されているかどうかを判断することができる。
【0055】
登録済情報1006を認証情報記憶部に記憶することにより、認証サーバ110に認証情報が登録されていない場合には、認証処理の実行の要求を送信しなくても、認証処理の結果が成功とならならいことを検出できる。この結果、無駄な通信を抑制できる。また、認証情報が登録されているか否かに応じて、その後に行う処理を選択することもできる。
【0056】
認証結果履歴情報1007とは、認証サーバ110に認証情報の登録がされた後に、認証サーバ110に認証処理を要求してその認証処理が成功したことがあるかどうかを示す情報である。認証結果履歴情報1007の一例としては、認証サーバ110に認証処理を要求して得られる認証結果の履歴(例えば、ログ)を表す情報である。ここで、認証結果とは、認証サーバ110との通信がエラーになったかどうかに加え、認証ステータス情報を含む情報である。認証ステータス情報とは、認証サーバに認証要求を行い、それに応じて認証サーバで行われる判定である認証処理の結果として返信された情報であり、認証サーバでの認証処理が成功したか失敗したかを示す情報をいう。認証結果履歴情報1007は、認証サーバ110に認証情報の登録がされた後に行われた全ての認証結果を表していてもよい。あるいは認証サーバ110に認証情報の登録がされた後に行われた所定の回数だけの認証結果を表していてもよい。例えば、認証結果履歴情報1007は、最近に行われた認証要求のうち所定の回数の結果のみを示す情報であってもよい。より具体的には、前回行われた認証要求1回のみの認証結果を示す情報であってもよい。
【0057】
また、後述するように、認証結果履歴情報1007は、認証ステータス情報が得られ、認証処理が成功していれば、所定の値として認証情報記憶部1002に記憶される数値(例えば、整数値)であってもよい。この場合、認証サーバ110との通信がエラーとなったり認証処理が失敗となったりした場合には、所定の数(例えば、1)が減じられて認証情報記憶部1002に記憶されるようになっていてもよい。そして、認証情報記憶部1002から読み出された認証結果履歴情報1007が所定の値の範囲(例えば、より大)であれば、認証サーバ110に認証処理を要求してその認証処理が成功したことがあると判断されるようになっていてもよい。
【0058】
登録済情報1006が記憶される場合には、アプリケーション109が端末装置103にダウンロードされる際に、クリアされて初期化される。あるいは、アプリケーション109に初期化された状態のデータとして含まれていてもよい。また、登録済情報1006が複数のアプリケーションにより共有して読出しや更新がされる場合には、その複数のアプリケーションの中の最初に端末装置103にダウンロードされて実行されたアプリケーションによってクリアなどされて初期化される。認証結果履歴情報1007についても同様にクリアされて初期化されるようになっていてもよい。
【0059】
ここで「登録済情報1006をクリアして初期化する」とは、登録済情報1006を、認証サーバ110に認証情報が登録されていないことを示す情報とすることである。
【0060】
また、「認証結果履歴情報1007をクリアして初期化する」とは、認証結果履歴情報1007に含まれる情報の中に、認証処理の成功を示す情報が含まれないようにすることである。例えば、認証結果履歴情報1007に、過去に認証処理を要求した結果得られる認証結果が含まれる場合には、その含まれる認証結果の全てを成功していない旨を示す情報に書き換えることである。
【0061】
認証結果履歴更新部1003は、認証結果に応じて、認証情報記憶部1002に記憶されている認証結果履歴情報1007を更新する部である。すなわち、認証結果履歴更新部1003は、通信エラーの発生に応じて、また通信エラーの発生が無ければ、前記認証要求の送信に対して返信され受信された認証処理の結果に応じて、認証結果履歴情報1007を更新する。例えば、通信エラーが発生したことを表す値、認証処理の結果表す値を、認証情報記憶部1002に記憶されている認証結果履歴情報1007に上書したり、認証情報記憶部1002に記憶されている認証結果履歴情報1007に、過去に行われた所定の回数の認証結果が含まれているのであれば、その中で時間的に最も前に行われた認証結果を削除して、通信エラーが発生したことを表す値や認証処理の結果を表す値を追加したりする。あるいは、状態遷移を行うようにして更新を行ってもよい。あるいは、認証結果履歴情報1007が数値であれば、上述したように、認証処理に成功した際に所定の数値に設定し、通信がエラーとなった場合にはその数値が所定の値の範囲にあるかどうかが判断されるようになっていてもよい。
【0062】
通信部1004は、認証サーバ110に対する通信の処理を行う。通信部1004が行う通信の処理は、認証サーバ110に、必要であれば認証情報の登録要求を送信し、また認証サーバ110に対して認証要求を送信し、送信した結果を受信することに分けられる。登録要求が送信される場合、登録要求、認証要求のどちらの送信を行って結果を受信するかは、認証制御部1005により決定される。したがって、通信部1004は、少なくとも、認証サーバ110へ認証要求を、ネットワークを介して送信する送信部と、認証サーバ110が認証要求を受信すると、その受信に応じて、認証処理の結果が成功か否かの判定を行い、その結果、認証サーバ110から送信される認証ステータス情報を受信する受信部とを含むといえる。
【0063】
認証サーバ110に認証情報の登録要求をすることとは、図1(c)を参照して説明したように、認証サーバ110のDB111に認証情報を登録させることである。例えば、通信部1004は、端末シリアル番号などを読出し、その端末シリアル番号などをDB111に登録する要求とともに認証サーバ110に送信し、通信部1004がその登録結果の通知を受ける。
【0064】
認証サーバ110に認証要求を行うこととは、図1(d)を参照して説明したように、認証情報の照会などを認証サーバ110に対して行い、その認証結果の通知である認証ステータス情報を受けることである。例えば、通信部1004は、端末シリアル番号などを読み出し、その端末シリアル番号などがDB111に登録されているかどうかの確認の要求とともに認証サーバ110に送信し、通信部1004がその結果の通知を認証ステータス情報として受ける。
【0065】
なお、認証結果には、認証サーバ110からの認証ステータス情報を受信して照会した端末シリアル番号などがDB111に登録されているかどうかの確認の結果のみならず、認証サーバ110との通信セッションの確立、データの送信、データの受信を行った際に通信のエラーの発生の有無やエラーの種類の情報を含ませるようにしてもよい。したがって、通信部1004は、少なくとも、送信部による認証要求の送信と受信部による認証処理の結果の受信とが行われる際の通信エラーの発生の有無を検出するエラー検出部を含むといえる。
【0066】
認証制御部1005は、認証情報記憶部1002に記憶されている認証結果履歴情報1007、また加えて必要ならば登録済情報1006を読出す。そして、通信部1004を動作させて認証サーバ110に対して認証情報の認証要求、あるいは必要ならば登録要求を送信させ、認証結果履歴情報1007を認証結果履歴更新部1003により更新する。また、認証制御部1005は、主処理部1001からメソッド呼び出しなどによって実行の制御が渡されると、認証が成功したか否か(認証OKかどうか)を表す認証結果を主処理部1001に返す。これにより、主処理部1001は、その後の処理を選択することができる。また必要ならば、認証結果によっては、アプリケーションの実行を中断させたり終了させたりもしてもよい。認証制御部1005で行う認証制御の処理のうち、認証サーバ110に対する認証要求の送信などを、通信部1004により行い、認証情報記憶部1002に記憶されている認証に関する情報の更新は、認証結果履歴更新部1003により行う。
【0067】
ここで、認証制御部1005は、通信部1004から受け取った認証結果がエラーを示す場合には、認証結果履歴情報1007に認証処理の成功を示す情報が含まれていれば、認証結果を成功とみなして主処理部1001に認証OKを返し、含まれていなければ認証結果を失敗とみなして主処理部1001に認証NGを返す。なお、認証結果履歴情報1007に認証処理の成功を示す情報が含まれるとは、明示的に含まれる場合のみならず、実質的に含まれているのと同じであることを含む。明示的に含まれるとは、例えば、過去に行われた認証結果の履歴をそのまま保持しており、過去に行われた認証のそれぞれに対する認証結果が保持されている場合である。また、実質的に含まれているとは、過去に行われた認証のそれぞれの認証結果は導けないが、例えば、過去に行われた認証の中に成功しているものがあれば、TRUE、そうでなければ、FALSEの値を取るフラグが用いられている場合である。また、フラグのかわりにカウンターなどを用いていてもよい。
【0068】
図11は、アプリケーション109の動作が開始した後のアプリケーション109による処理のフローチャートの一例を示す。ステップS1101において、主処理部1001の動作が開始し、アプリケーション109の動作に必要なデータ、変数の初期化を行う。例えば、アプリケーション109がゲームプログラムであれば、前回の実行で達したステージの識別子や獲得したポイントなどを不揮発性記憶部303より読み込み、アプリケーション109に割り当てられたメモリ空間に配置する。ステップS1102において、主処理部1001から認証制御部1005を動作させるためのメソッドなどが呼び出されて、認証制御部1005による認証制御の処理を行う。その処理の結果は、メソッドなどの戻り値などとして返され、ステップS1103において、認証が成功したかどうかとして判断される。認証が成功したのであれば、ステップS1104に処理を移行させる。すなわち、上述したメソッド呼び出しから復帰して、その後の主処理部1001の処理が行われる。もし、認証が成功せず失敗すれば、アプリケーション109の処理を終了させる。
【0069】
図11に示すフローチャートは、アプリケーション109による処理の一例にすぎず、認証制御の処理は、初期化の後に必ず行われる必要はない。初期化の後、主処理をある程度行った後、例えば、ゲームなどの次のステージに進む際に、認証制御の処理を行うようになっていてもよい。また、認証が成功しなければ、アプリケーション109の処理を終了せずに、次のゲームなどのステージに進ませない、再生の品質を定められた品質以上にしないなど、アプリケーション109の機能を制限させるようになっていてもよい。
【0070】
なお、図14(b)は、アプリケーション109がメモリにロードされ、動作を開始するまでのディスプレイの表示の一例を示す。「起動中…」の表示の下に、メモリへのロードの進行状況や、初期化の進行状況の表示がされる。
【0071】
図12、図13は、認証制御部1005における処理の流れを説明するフローチャートを示す。すなわち、図12は、図11のステップS1102における処理を詳細に説明するフローチャートである。また、図13(a)、(b)は、図12のステップS1220における処理を詳細に説明するフローチャートである。
【0072】
認証制御部1005を動作させるためのメソッドなどが呼び出されると、図12に例示されたフローチャートの処理が開始する。ステップS1201において、通信部1004は、認証情報記憶部1002から登録済情報を読出し、認証情報が認証サーバ110に未登録であるかを判断する。もし、未登録であれば、ステップS1202へ移行し、登録済みであれば、ステップS1209へ移行する。
【0073】
ステップS1202においては、通信部1004を動作させ、認証情報を登録するための登録要求を認証サーバ110へ送信する処理を行う。続くステップS1203では、ステップS1202での送信の際に、通信エラーが発生しなかったかどうかを判断する。例えば、認証サーバ110との通信コネションが確立でき、その通信コネクションを用いて要求が送信でき、TCP(Transmission Control Protocol)が用いられているならばACKが受信されたかどうかを判断する。もし、通信エラーが発生せずに登録要求の送信ができたのであれば、ステップS1204へ移行し、通信エラーが発生して登録要求の送信ができなければ、ステップS1208へ移行する。
【0074】
ステップS1204においては、認証情報を認証サーバ110に登録させるために、認証情報を認証サーバ110へ送信する処理を行う。続くステップS1205では、認証情報の登録が完了された旨の返信が得られたかどうかを判断する。もし、登録完了されたのであれば、ステップS1206へ移行し、認証情報の登録が完了された旨の返信が得られなかった場合には、ステップS1208へ移行する。
【0075】
ステップS1206では、認証制御部1005により認証情報記憶部1002に、認証サーバ110に認証情報が登録されている旨の登録済情報1006を記憶する。続くステップS1207においては、認証OKの返答を主処理部1001に行う。
【0076】
ステップS1203において、通信エラーが発生し、認証情報の登録要求の送信できなかったと判断されたり、ステップS1205で登録が完了のされている旨の返信が得られなかったりした場合には、上述のようにステップS1208に移行する。ステップS1208においては、登録がOKでなく、したがって認証もできない旨の返答を主処理部1001に行う。あるいは、認証制御部1005でアプリケーション109の実行を中断させたり、停止させたり、終了させてもよい。また、端末装置全体をロックなどして操作できないようにしてもよい。
【0077】
なお、ステップS1207において、認証OKの返答を行うと説明したが、登録が初めて行われたことを示す別の返答(例えば、「登録OK」)を行ってもよい。これにより、登録が初めて行われたことに応じて、その後の処理として、歓迎のメッセージを表示したりすることなどを主処理部1001が選択できる。
【0078】
ステップS1201において、認証情報が認証サーバ110に登録されていると判断された場合には、上述のようにステップS1209に移行する。ステップS1209では、認証要求の送信を認証サーバ110に行う処理をする。続くステップS12010では、ステップS1209での送信の際に、通信エラーが発生しなかったかどうかを判断する。例えば、認証サーバ110との通信コネションが確立でき、その通信コネクションを用いて要求が送信でき、TCPが用いられているならばACKが受信されたかどうかを判断する。もし、通信エラーが発生せずに認証要求の送信ができたのであれば、ステップS1211へ移行し、通信エラーが発生して認証要求の送信ができなければ、ステップS1220へ移行する。
【0079】
ステップS1211においては、認証情報を認証サーバ110に送信する処理を行う。例えば、端末シリアル番号を読出して送信する。続くステップS1212においては、ステップS1211での送信の際に、通信エラーが発生しなかったかどうかをステップS1210と同様に判断する。もし、通信エラーが発生せずに認証情報の送信ができたのであれば、ステップS1213へ移行し、通信エラーが発生して認証情報の送信ができなければ、ステップS1220へ移行する。
【0080】
ステップS1213においては、認証サーバ110からの認証ステータス情報の受信処理を行う。続くステップS1214において、通信エラーが発生せずに認証ステータス情報の受信ができたかどうかの判断を行う。この判断では、データが通信エラーなしで受信できたかどうかに加えて、受信したデータが所定の形式になっているかどうかも判断する。例えば、認証ステータス情報が0または1を表す1バイトの情報で返信されると規定されている場合、0でも1でもないデータが受信されたり2バイト以上の情報が受信されたりした場合にも通信エラーが発生したと判断する。もし、通信エラーが発生せずに認証ステータス情報の受信ができたと判断されれば、ステップS1215へ移行し、そうでなければ、ステップS1220へ移行する。
【0081】
ステップS1215においては、受信されたデータを解析や予め定められた値と比較などし、認証結果を取得する。例えば、受信されたデータが0を表す1バイトと等しければ、認証が成功した旨を取得し、それ以外の値(例えば1を表す1バイト)と等しければ、認証が失敗した旨を取得する。
【0082】
ステップS1216においては、認証結果履歴更新部1003を動作させ、ステップS1215で取得された認証結果である認証ステータス情報または認証ステータス情報に対応するコード(数値または文字情報)を用いて認証結果履歴情報1007の更新を行う。認証結果履歴情報1007に記憶する情報として、認証が成功した場合には1やFFH(16進数)、認証が失敗の場合には0や00H(16進数)が例示できる。また、認証が成功の場合には「OK」、認証が失敗の場合には「NG」のように文字の表現を含む文字情報でもよい。
【0083】
ステップS1217では、ステップS1215で取得された認証結果である認証ステータス情報を判断し、認証処理が成功したのであれば、ステップS1218へ移行し、認証OKの返答を行い、認証処理が失敗したのであれば、ステップS1219へ移行し、認証NGの返答を行う。
【0084】
ステップS1210、S1212、S1214において通信エラーが発生したと判断されれば、上述のようにステップS1220へ移行して、通信エラー(認証サーバ110との送受信のエラー)が発生した場合の処理を行う。その処理のフローチャートの例を図13(a)に示す。
【0085】
ステップS1301において、認証制御部1005は、認証結果履歴情報1007を認証情報記憶部1002より読出す。続くステップS1302において、認証結果履歴情報1007を調べ、認証が成功したことがある旨が示されているかどうかを判断する。例えば、認証結果履歴情報1007が、過去に行われた認証処理のうち最新の所定の回数の認証結果が含まれているのであれば、その所定の回数の認証結果の中に、少なくとも1回以上認証が成功したことがあるかどうかを判断する。もし、1回でも認証が成功したことがあれば、ステップS1303に移行する。1回も認証が成功したことが示されていなければ、ステップS1304に移行する。
【0086】
ステップS1303においては、認証OKを返答するように準備する。例えば、変数に認証OKを表す値を格納する。一方、ステップS1304においては、認証NGを返答するように準備する。ステップS1303、S1304の後には、ステップS1305へ移行する。
【0087】
ステップS1305では、認証結果履歴情報1007を更新する。この場合には、通信エラーが発生したことを用いて認証結果履歴情報1007を更新する。例えば、過去に行われた認証処理のうち最新の2回(すなわち、直前と、その前)の認証結果が認証結果履歴情報1007により表される場合において、例えば、直前の認証が成功し、その前の認証が失敗のときに、認証結果履歴情報1007を{直前:成功、その前:失敗}と表記するので、更新後の認証結果履歴情報1007は、{直前:エラー、その前:成功}となる。その後、ステップS1306において、認証OKや認証NGの返答を行う。
【0088】
また、図13(b)は、認証結果履歴情報1007が整数値などの数値である場合のステップS1220の処理のフローチャートを示す。なお、認証結果履歴情報1007が数値である場合には、ステップS1216においては、認証が成功すれば、第1の所定の数値(例えば、2)を認証結果履歴情報1007として記憶し、認証が失敗すれば、第2の所定の数値(例えば、1)を記憶されている認証結果履歴情報1007より減じて記憶しなおしたり、さらに第3の所定の数値(例えば、0)を認証結果履歴情報1007として記憶したりすることにより、認証結果履歴情報1007の更新を行うものとする。
【0089】
ステップS1307では、ステップS1301と同様に、認証結果履歴情報1007を読み出す。ステップS1308では、読み出された認証結果履歴情報1007が定められた範囲にあるかどうか(例えば、正の数値であるかどうか)を判断する。もし、読み出された認証結果履歴情報1007が定められた範囲にあれば、ステップS1309に移行し、ステップS1303と同様に、認証OKを返答するように準備を行う。また、読み出された認証結果履歴情報1007が定められた範囲になければ(例えば、0以下の数値であれば)、ステップS1310に移行し、ステップS1304と同様に、認証NGを返答するように準備を行う。
【0090】
ステップS1309、S1310の後は、ステップS1311に移行し、認証結果履歴情報1007の更新を行う。図13(b)の場合には、ステップS1307で読み出された認証結果履歴情報1007から上述の別の数値を減算して記憶する。その後、ステップS1312において、ステップS1306と同様に、返答を行う。
【0091】
例えば、上述のように、第1の所定の数値が2であり、第2の所定の数値が1であり、定められた範囲が正の数値の範囲であるとして、時間の経過にしたがって、(1)認証処理の成功、(2)認証処理の成功、(3)通信エラー、(4)通信エラーとなったとする。(1)の認証処理の成功によって、ステップS1216により、認証結果履歴情報1007として2が記憶され、同様に、(2)の認証処理の成功により、認証結果履歴情報1007として2が記憶される。(3)の通信エラーの発生により、図13(b)のフローチャートの処理が実行されると、認証OKが返答され、認証結果履歴情報1007として1が記憶される。そして、(4)の通信エラーの発生により、図13(b)のフローチャートの処理が実行されると、再び認証OKが返答され、認証結果履歴情報1007として0が記憶される。もし、その後、再度通信エラーとなり、図13(b)のフローチャートの処理が実行されると、ステップS1307で読み出される認証結果履歴情報1007が0となり、正の数値ではないので、認証NGが返答されることになる。
【0092】
このように、第1の所定の数値が2であり、第2の所定の数値が1であり、定められた範囲が正の数値の範囲であれば、認証の成功のあと、認証サーバとの通信が2回連続してエラーとなっても認証OKとしてアプリケーションの処理が継続され、3回連続してエラーになると認証NGとなり、アプリケーションの処理が継続されないようにすることができる。第1の所定の数値、第2の所定の数値、定めれた範囲は、任意に定めることができる。
【0093】
図14(c)、(d)、(e)は、認証結果履歴情報1007が、過去に行われた認証のうち、直前の一回の認証の認証結果だけを示す場合に、ステップS1303、S1304が実行されたときのディスプレイへの表示例を示す。もし、認証結果履歴情報1007の示す直前の認証における認証結果が、認証が成功した旨のものであり、ステップS1303が実行されたのであれば、今回は認証に成功したとみなしたことを表示する。これは、今回の認証は、認証サーバと通信ができなかったので認証処理が成功したたかどうかは不明であるが、直前の一回の認証処理は成功しているからである。ただし、次回の認証処理が成功しなければアプリケーションの継続する実行ができなくなることを「1回だけコンテンツを利用することができます」という文言によって示している。
【0094】
また、認証結果履歴情報1007の示す直前の認証における認証結果が、認証が成功しなかった旨(認証処理が失敗した旨、または、通信エラーの旨)であり、ステップS1304が実行されたのであれば、今回は認証に失敗したものとみなし、図14(d)の表示を行う。これは、今回の認証では認証サーバと通信ができなかったので認証処理が成功したかどうかは不明であり、直前の認証処理は成功ではないからである。また、通信コネクションは確立できたものの、認証サーバよりACKなどが受信できず、タイムアウトによる通信エラーが発生したことが検出された場合には、図14(e)の表示を行ってもよい。
【0095】
なお、登録済情報1006が記憶されない場合には、S1201からS1207の各ステップの実行は必須ではない。
【0096】
(認証サーバのデータベース)
図15は、認証サーバ107のDB111の構造の一例を示す。図15(a)は、例えば、会員IDとそのパスワード情報を関連付けるテーブルの一例である。会員IDの列には、端末シリアル番号や利用者の識別情報などが格納され、パスワード情報には、認証処理の際に用いられるパスワードそのものやパスワードを一方向関数で処理した情報が格納される。なお、会員IDの列とパスワード情報の列の2つの列を用意する必要はなく、会員IDが充分に長いビット長の情報であり、異なる携帯端末や利用者が同じ会員IDを使用する虞がないのであれば、会員IDだけを格納するようにしてもよい。また、会員IDの列に公開鍵や公開鍵証明書が格納される場合もパスワード情報の列は必須ではない。
【0097】
図15(b)は、会員IDに登録日と退会日とを関連付けるテーブルの一例である。登録日は、認証サーバ107に認証情報が登録された日であり、退会日は、認証情報を抹消する旨の要求が携帯端末や利用者から送信などされた日である。認証情報を抹消する旨の要求があれば、会員IDをテーブルから削除すればよいかもしれないが、登録日と退会日とを記録することにより、課金の基準となる日の前後だけ認証情報を抹消した状態にして課金を逃れることができないようにすることができる。なお、退会日に「NULL」が格納されているのは、認証情報を抹消する旨の要求が送信などされていないことを意味する。
【0098】
図15(c)は、会員IDに課金の方法を関連付けるテーブルの一例である。例えば、クレジットカード、銀行口座引落などが支払方法の列に格納され、別のテーブルにクレジットカード番号や銀行口座の番号などが格納される。
【0099】
(認証サーバの処理)
図16は、認証サーバ110の処理の流れを説明するフローチャートを示す。認証サーバ110に対する要求が、認証要求と認証情報の登録要求の2種類であれば、ステップS1601において、認証要求が受信されたかどうかを判断する。もし、認証要求が受信されれば、ステップS1602へ移行し、認証要求ではなく、認証情報の登録要求であれば、ステップS1606へ移行する。なお、一台の認証サーバが認証要求と登録要求との両方を受信する必要はなく、認証要求を受信する認証サーバと登録要求を受信する認証サーバとが異なっていてもよい。同様に、認証要求を送信する端末装置と登録要求を送信する端末装置とが異なっていてもよい。
【0100】
ステップS1602においては、認証情報を受信し、認証処理を行う。例えば、認証情報に含まれる端末シリアル番号や利用者の識別情報が図15(a)のテーブルに登録されているかどうかで認証処理が成功したかどうかを判定する。続くステップS1603においては、認証処理が成功した場合には、ステップS1604へ移行し認証処理が成功した旨の認証ステータス情報を返信し、認証処理が成功しなかった場合には、ステップS1605へ移行し認証処理が失敗した旨の認証ステータス情報を返信する。
【0101】
認証情報の登録要求が受信されたのであれば、ステップS1606において、登録するべき認証情報を受信する。続くステップS1607においては、DB111への登録処理を行う。例えば、図15(a)に示すテーブルに会員IDなどを登録する。そして、ステップS1608においては、登録完了を返信する。
【0102】
(実施形態2)
本発明の実施形態2として、認証情報記憶部1002に記憶される認証結果履歴情報1007のデータ構造の別の例を説明する。
【0103】
図17は、認証結果履歴情報1007が、直前の一回だけの認証結果を表す場合の一例を示す。認証情報記憶部1002の記憶領域1701には、直前の一回の認証が行われた日時(2008/08/01−18:52)と、そのときの認証結果として「成功」が記憶されている。図13のステップS1301においては、記憶領域1701に記憶されているデータが読出され、ステップS1302において、認証結果として成功が記憶されているかどうかを判断する。また、図12のステップS1216においては、ステップS1215で取得された認証結果とその日時を記憶領域1701に格納する。また、図13のステップS1305においては、通信エラーとなった旨とその日時を記憶領域1701に記憶する。
【0104】
このように、直前の一回だけの認証結果を記憶することにより、記憶領域を節約することが可能である。また、認証が行われた日時を記憶することにより、例えば、携帯端末のタイマなどに設定された日時を不正に操作されたことを検出することもできる。例えば、記憶領域1701に格納された日時が、携帯端末のタイマなどに設定された日時よりも後であれば、不正が行われたと判断して、アプリケーション109の実行を終了させるように選択をすることができる。なお、このような不正の検出などを行わないのであれば、認証が行われた日時を記憶領域1701などに記憶する必要はない。
【0105】
なお、本実施形態では、記憶領域1701には、認証処理の成功、認証処理の失敗、通信エラーのいずれかが認証結果として記憶されてもよい。この場合には、図13(b)のフローチャートの処理が用いられる場合において、例えば、上述の第1の所定の数値が1であり、第2の所定の数値が1であり、定められた範囲が正の数値の範囲である場合と同じ認証結果が返答される。
【0106】
(実施形態3)
本発明の実施形態3として、認証サーバ110との通信ができなかった場合に、通信が可能となれば、認証サーバ110と通信を行い、認証要求を送信して認証処理が行われる形態について説明する。
【0107】
図18は、本実施形態に係るアプリケーション109が、端末装置103のハードウェアと一体となって実行されることにより、実現される装置の機能ブロック図を示し、実施形態1、2の装置の機能ブロック図にさらに、コールバック処理部1801が備えられている。
【0108】
コールバック処理部1801は、所定の条件が満たされる状況になったときに、指定された処理を行う部である。本実施形態においては、所定の条件が満たされる状況には、通信状況が良好となったことや、メールの着信などがあり、実際に通信が可能となったことを含むものとする。
【0109】
オペレーティングシステムや仮想マシンは、所定の条件のどれが満たされるようになったかを監視している。そして、ある条件が満たされると、イベントを発生させて、オペレーティングシステムや仮想マシンの管理化で動作しているアプリケーションに通知する機能を備えることができる。そこで、本実施形態では、コールバック処理部1801は、そのように通知されるイベントを取得して、そのイベントの種類に応じて設定されたコールバックを実行する。
【0110】
図19は、コールバック処理部1801が処理するデータ構造を示す。図19において、「イベント1」、「イベント2」、「イベント3」がイベントの種類を示し、それにリスト構造として連なっているノード1902、1903、1904がイベント1に関連付けられたコールバックを表している。
【0111】
図20は、コールバック処理部1801の処理を説明するフローチャートである。ステップS2001において、イベントが発生し、その通知がされるまで待つ。イベントが発生すると、ステップS2002に移行し、通知されたイベントに対応したコールバックリストの取得を行う。そして、ステップS2003において、コールバックリストのコールバックを順に実行する。
【0112】
本実施形態においては、認証サーバ110との通信ができないことが検出された図12のステップS1220を行う際に図21に示す処理を行うコールバックを、通信状況が良好となったことや実際に通信が可能となったことが検出されると通知されるイベントのリストに追加する。すなわち、ステップS2101において、認証要求の送信を行う。続くステップS2102において、送信が行えたかどうかを判断し、送信ができたのであればステップS2103へ移行し、送信がエラーとなればステップS2110へ移行する。
【0113】
ステップS2103においては、認証情報の送信を行い、ステップS2104において、送信ができたかどうかを判断し、送信が行えたのであればステップS2105へ移行し、送信がエラーとなればステップS2110へ移行する。
【0114】
ステップS2105においては、認証ステータスの受信を行い、ステップS2106において、受信ができたかどうかを判断し、できたのであれば、ステップS2107へ移行し、受信エラーとなればステップS2110へ移行する。
【0115】
ステップS2107においては、認証結果の取得を行う。そして、ステップS2108において、認証に成功すればステップS2109へ移行し、認証が失敗すればステップS2110へ移行する。
【0116】
ステップS2109においては、認証が成功したとの認証結果の履歴を追加する認証結果履歴情報の更新を行う。
【0117】
ステップS2110においては、送受信のエラーが発生し認証が成功しなかったので、再度コールバックの設定を行う。
【0118】
本実施形態のように、送受信のエラーが発生し認証が成功しなかった場合に、コールバックを設定して再度、認証を行うことにより、送受信のエラーが発生し認証処理が成功したとみなして、利用者にアプリケーションの使用やコンテンツの利用をさせている間に認証処理に成功すると、その後においては、送受信のエラーが無かったのと同じ状態でアプリケーションの使用やコンテンツの利用をさせることができる。
【図面の簡単な説明】
【0119】
【図1】本発明の一実施形態の概要を示す図である。
【図2】本発明の一実施形態における通信の過程を説明するシーケンス図である。
【図3】本発明の一実施形態に係る携帯端末のハードウェア構成を示す機能ブロック図である。
【図4】本発明の一実施形態に係る携帯端末において、オペレーティングシステムの管理下でプログラムが動作している様子を示す模式図である。
【図5】本発明の一実施形態に係るサーバ装置の機能ブロック図である。
【図6】本発明の一実施形態に係るサーバ装置において、オペレーティングシステムの管理下でプログラムが動作している様子を示す模式図である。
【図7】本発明の一実施形態に係る端末装置がダウンロードサーバ装置よりアプリケーションをダウンロードする処理のフローチャートである。
【図8】本発明の一実施形態に係るダウンロードサーバ装置が端末装置にアプリケーションをダウンロードさせる処理のフローチャートである。
【図9】本発明の一実施形態に係る携帯端末にダウンロードされたアプリケーションの実行の処理のフローチャートである。
【図10】本発明の一実施形態に係る処理実行装置の機能ブロック図である。
【図11】本発明の一実施形態に係るアプリケーションの処理のフローチャートである。
【図12】本発明の一実施形態に係る認証制御部における処理の流れを説明するフローチャートである。
【図13】本発明の一実施形態に係る認証制御部における処理の流れを説明するフローチャートである。
【図14】本発明の一実施形態に係る携帯端末のディスプレイの表示の一例図である。
【図15】本発明の一実施形態に係る認証サーバのデータベースの構造の一例図である。
【図16】本発明の一実施形態に係る認証サーバの処理の流れを説明するフローチャートである。
【図17】本発明の一実施形態に係る認証結果履歴情報を格納するデータ構造の一例図である。
【図18】本発明の一実施形態に係る処理実行装置の機能ブロック図である。
【図19】本発明の一実施形態に係るコールバック処理部が処理するデータ構造の一例図である。
【図20】本発明の一実施形態に係るコールバック処理部の処理を説明するフローチャートである。
【図21】本発明の一実施形態に係るコールバック処理のフローチャートである。
【符号の説明】
【0120】
1000 実行中アプリケーション
1001 主処理部
1002 認証情報記憶部
1003 認証結果履歴更新部
1004 通信部
1005 認証制御部
【技術分野】
【0001】
本発明は、サーバより得られる認証を得て処理を実行する処理実行装置、アプリケーションプログラム、アプリケーションプログラムをダウンロード可能に保持するダウンロードサーバに関する。
【背景技術】
【0002】
通信技術や計算機の実装技術などの発達に伴い、パーソナルコンピュータのみならず端末装置として携帯電話端末を、インターネットを介してサーバ装置に接続することが可能となってきた。また、端末装置にアプリケーションプログラムをダウンロードして安全に実行するために、仮想マシンが解釈と実行できるマシンコード(仮想マシンコード)で動作が記述されたアプリケーションプログラムを仮想マシンで動作させることが一般的に行われている(例えば、特許文献1参照。)。例えば、携帯電話端末をインターネットなどの通信網を介してウェブサーバに接続し、仮想マシンコードで動作が記述されたゲームなどを行うためのアプリケーションプログラムをそのウェブサーバよりダウンロードし、仮想マシンで動作させ、ゲームを楽しむことができる。
【0003】
このようなアプリケーションプログラムは、有料にて利用できるものと無料にて利用できるものに分類される。有料の場合には、課金処理を行うために携帯電話端末の識別情報や利用者の識別情報などを会員情報などとして認証サーバに登録を行って利用を行うことが通常である。そして、アプリケーションプログラムの実行の都度あるいは所定の期間の経過(例えば一ヶ月)ごとに会員登録がされているかどうかについて、インターネットなどを介し、認証サーバによる認証を受け、課金処理などと引き替えにアプリケーションプログラムの利用が可能となる。また、無料に利用できるアプリケーションプログラムであっても、一定の期間経過後に有料に移行するためや、パージョンアップの通知などを行うために同様の認証を受ける必要があるものが多い。
【0004】
【特許文献1】特開2003−114837号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、所定の期間の経過(例えば一ヶ月)ごとに会員登録されているかどうかについて認証サーバによる認証を受ける場合は、携帯電話端末の時計機能を使って、前回認証に成功した日時から例えば一ヶ月を経過したときに再度認証を受ける必要があるが、携帯電話端末の日時が一ヶ月経過しないように利用者が設定し続けると、次の認証を受けずに利用し続けるといった不正が可能となってしまう。
【0006】
このような不正に対処するため、アプリケーションプログラムの実行の都度認証サーバによる認証を受けさせることが考えられる。しかしながら、この場合は次のような課題がある。すなわち、アプリケーションプログラムの実行の都度、認証サーバによる認証を受ける場合は、通信を行う頻度が増大する。しかし、通信技術が発達した今日であっても、通信回線などのトラブルにより認証サーバとの通信の失敗(通信エラー)を完全に無くすことは困難である。このため、通信エラーにより、上述のようなアプリケーションプログラムを動作させることができないという課題がある。特に携帯電話端末の場合には、建物の中や地下鉄の駅の間などにおいて基地局からの電波が弱かったり電波が届かなかったりする場合には、通信ができないので、上述のようなアプリケーションプログラムを動作できない場合が多々発生するのが実情である。
【0007】
また、基地局からの電波が受信できないなどにより通信ができないときには認証を受けなくてもアプリケーションプログラムを動作可能とすると、意図的に通信ができない状態が作出されることにより、不正にアプリケーションプログラムが利用されてしまうという課題もある。
【課題を解決するための手段】
【0008】
本発明の一形態として、ネットワークを介して接続された認証サーバへ、成功となるか否かの判定が行われる認証処理の要求を送信する送信部と、認証処理の結果を受信する受信部と、認証サーバでの認証処理が成功か否かの結果によってその後に行う処理を選択する処理選択部と、認証処理の結果の履歴を示す認証結果履歴情報を記憶する記憶部と、認証要求の送信と認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出するエラー検出部と、エラー検出部による通信エラーの検出に応じて、あるいはエラー検出部による通信エラーが検出されなかった場合には受信された認証処理の結果に応じて、認証結果履歴情報を更新する認証結果履歴更新部と、通信エラーが発生したことが検出され、かつ認証結果履歴情報に認証処理に成功したことがあることを示す情報が含まれている場合には、認証処理の結果を成功とみなした処理を行う認証制御部と、を有することを特徴とする処理実行装置を提供する。
【0009】
この処理実行装置によれば、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理に成功したことが有れば、認証処理に成功したものと判断されるので、通常の処理を行うことができる。また、過去の認証処理の範囲を、例えば前回の認証処理に限定などすることにより、通信ができない状況が意図的に作出されても不正に処理実行装置が利用されることを防ぐことができる。
【0010】
また、本発明の別の形態として、ネットワークを介して接続された認証サーバへ、認証が成功となるか否かの判定が行われる認証処理の要求を送信し、認証処理の結果を受信し、認証サーバでの認証処理が成功か否かの結果によってその後に行う処理を選択することを計算機に行わせるためのアプリケーションプログラムであって、認証処理の結果の履歴を示す認証結果履歴情報を記憶し、認証要求の送信と認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出し、通信エラーの検出に応じて、あるいは通信エラーの検出がされなかった場合には受信された認証処理の結果に応じて認証結果履歴情報を更新し、通信エラーが発生したことが検出され、かつ認証結果履歴情報に認証処理に成功したことがあることを示す情報が含まれている場合には、認証処理の結果を成功とみなした処理を行うことを計算機に実行させるためのアプリケーションプログラムを提供する。
【0011】
このアプリケーションプログラムを計算機で実行する際に、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理に成功したことが有れば、認証処理に成功したものと判断されるので、通常の処理を行うことができる。また、過去の認証処理の範囲を、例えば前回の認証処理に限定などすることにより、通信ができない状況が意図的に作出されても不正にアプリケーションプログラムが利用されることを防ぐことができる。
【0012】
また、本発明の別の形態として、ネットワークを介して接続された認証サーバへ、認証が成功となるか否かの判定が行われる認証処理の要求を送信し、認証処理の結果を受信し、認証サーバでの認証処理が成功か否かの結果によってその後に行う処理を選択することを計算機に行わせるためのアプリケーションプログラムであって、認証処理の結果の履歴を示す認証結果履歴情報を記憶し、認証要求の送信と認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出し、通信エラーの検出に応じて、あるいは通信エラーの検出がされなかった場合には受信された認証処理の結果に応じて認証結果履歴情報を更新し、通信エラーが発生したことが検出され、かつ認証結果履歴情報に認証処理に成功したことがあることを示す情報が含まれている場合には、認証処理の結果を成功とみなした処理を行うことを計算機に実行させるためのアプリケーションプログラム、を携帯端末へダウンロード可能に記憶する記憶部を有するダウンロードサーバ装置を提供する。
【0013】
このダウンロードサーバ装置によれば、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理に成功したことが有れば、認証処理に成功したものと判断されるアプリケーションプログラムを携帯端末などの端末装置にダウンロードすることができる。
【発明の効果】
【0014】
本発明によれば、認証サーバとの通信時にエラーが生じ、通信ができないために、実際に認証処理を受けることができなくても、過去の認証処理が成功したことが有れば、認証処理に成功したものと判断されるので、通常の処理を行うことができる。また、過去の認証処理の範囲を、例えば前回の認証処理に限定などすることにより、通信ができない状況が意図的に作出されても不正に処理実行装置、アプリケーションプログラムなどを利用されることを防ぐことができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明を実施するための最良の形態について、図面を参照しながら幾つかの実施形態に分けて説明を行う。なお、本発明は、これらの説明によって何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々の態様で実施することができる。
【0016】
(本発明の概要)
図1は、本発明の概要を示す図である。すなわち、本発明の一実施形態に係るシステムの構成と、そのシステムの構成要素の一例である端末装置での操作の流れを説明する図である。
【0017】
図1(a)〜(d)において、本発明の一実施形態に係るシステム100は、第1の通信網101に接続された基地局102と通信が可能な端末装置103と、第1の通信網101とゲートウェイ(GW)105を介して接続される第2の通信網106に接続されたダウンロードサーバ107と、認証サーバ110とを備える。なお、ダウンロードサーバ107と認証サーバ110とは一体となったサーバ装置により実現されていてもよい。また、第1の通信網101と第2の通信網106とが同一であってもよく、GW105は明示的に特定されなくてもよい。また、端末装置103は、図1では携帯可能な端末の一種である携帯電話として説明されるが、通信機能を有する任意の電子装置(例えばパーソナルコンピュータ、家電製品など)を用いることができ、通信機能は無線、有線を問わない。
【0018】
第1の通信網101は、例えば、携帯電話会社(キャリア)の運営する通信網である。基地局102は第1の通信網に接続され、無線通信によって端末装置103と通信が可能である。あるいは第1の通信網101は、インターネットサービスプロバイダ(ISP)がその契約者に通信サービスを提供したり、一般企業や大学などの組織がその構成員の便益などのために運営したりするための通信網であってもよく、その場合には、基地局はアクセスポイントと言い換えることができる。以下、説明の便宜上、基地局と携帯端末を用いて説明を行うが、本発明は、無線通信を行う基地局と携帯端末とを用いる場合に限定されることはない。
【0019】
第2の通信網106は、インターネットなどの広域の通信網であることが主に想定される。もちろん、インターネットのようなオープンなネットワークである必要はなく、クローズドなネットワークであってもよい。また、GW105は、第1の通信網101と第2の通信網106との通信を中継するルータなどによって構成される。
【0020】
ダウンロードサーバ107は、その記憶部108にアプリケーションプログラム(以下では「アプリケーション」や「アプリ」と略記する場合がある)109を、端末装置103にダウンロード可能に記憶している。アプリケーション109は、端末装置103のマシン(ネイティブ)コードや、端末装置103で動作可能な仮想マシンのマシンコードで記述されたプログラムであり、実行可能なものである。あるいは、再生可能な音楽データ、映像データなどのコンテンツデータであってもよい。コンテンツデータである場合には、その再生プログラムが仮想マシンに相当する。ダウンロード可能とは、ダウンロードサーバ107が、端末装置103よりダウンロード要求の情報を受信した場合に、その返信としてアプリケーション109を端末装置103へ所定のプロトコルで返信し、携帯端末がアプリケーション109を実行や再生など(以下、「利用」という。)をすることが可能な状態で格納することができることをいう。
【0021】
認証サーバ110は、データベース(DB)111を有する。システム100においては、ダウンロードサーバ107から端末装置103にダウンロードされたアプリケーションを端末装置103で実行するには、認証サーバ110による認証を受ける必要があるものとする。この認証の対象は、端末装置103または端末装置103の利用者が想定される。そして、この認証のための情報(「認証情報」と略記する)は、DB111に登録される。認証情報には、端末装置103を識別するための端末シリアル番号(あるいは、個体識別情報、サブスクライバIDなどとも称される場合がある)が含まれる。あるいは、端末装置103の利用者を識別するための利用者識別情報が含まれるようになっていてもよい。さらにパスワードが組み合わされていてもよい。また、端末装置103の耐タンパ領域などにセキュアな状態で格納された秘密鍵と対をなす公開鍵やPKI(Public Key Infrastructure)などにおける公開鍵証明書であってもよい。
【0022】
また、認証情報は、端末装置103に記憶がされてから認証サーバ110に送信されるのではなく、クッキー情報などのように認証サーバ110によって生成され、DB111に登録されるとともに、端末装置103へ送信され、端末装置103に記憶されるものであってもよい。
【0023】
認証サーバ110による認証処理は、端末装置103でのアプリケーション109の利用を開始するときや、利用の途中で行われる。また、その認証処理は、利用を行う都度行う。あるいは、その認証処理は、利用の回数が所定の回数に達する都度、前回の認証処理からの所定の時間が経過しているときや、所定の期日や時間が経過したときなど、任意のタイミングで任意の回数、行われるようになっていてもよい。
【0024】
認証サーバ110のDB111への認証情報の登録は、端末装置103においてブラウザなどを動作させ、認証サーバ110との通信により行うことが主に想定される。他の端末装置103からの通信により登録が行われてもよい。認証情報の登録は、ダウンロードサーバ107からアプリケーション109を端末装置103へダウンロードする前に行われてもよい。あるいは、認証情報の登録は、端末装置103にダウンロードしたアプリケーション109を初めて起動する際に、アプリケーション109と認証サーバ110との通信が行われて、DB111に認証情報が登録されていないことが検出された際に行われるようになっていてもよい。
【0025】
図1(a)は、端末装置103においてブラウザなどを用いてダウンロードサーバ107に対してURLなどを用いてアプリケーション109を指定し、ダウンロード要求を送信し、アプリケーション109が端末装置103の不揮発性記憶領域(例えば、フラッシュメモリ)に記憶された状況を示す。図1(a)では、端末装置103がダウンロードサーバ107よりアプリケーション109をダウンロードのために受信している間には、その旨の表示が表示部104に表示されている。また、この表示は、図14(a)に例示されるものであってもよい。ダウンロードが終了すると、端末装置103にダウンロードされて記憶されたアプリケーション109は、端末装置103のアプリケーションマネージャなどの支配下に配置するようになっていてもよい。アプリケーションマネージャとは、アプリケーションの起動や終了などの操作を行うプログラムの一種である。アプリケーションマネージャの支配下にアプリケーションを配置するとは、アプリケーションマネージャのアクセスできる記憶領域に、アプリケーション109のパスが記憶されることをいう。アプリケーション109のパスとは、端末装置103の不揮発性記憶領域を用いて実現されるファイルシステムにおけるアプリケーション109を格納するファイルやディレクトリの位置をいう。
【0026】
なお、アプリケーション109をダウンロードサーバ107よりダウンロードすることは、端末装置103にアプリケーション109を導入する一つの方法である。他の方法としては、例えば、パーソナルコンピュータなどを用いてメモリカードにアプリケーション109に書き込み、そのメモリカードを端末装置103に装着して、メモリカードよりアプリケーション109を読出してもよい。また、USB(Universal Serial Bus)のケーブルを用いて端末装置103をパーソナルコンピュータに接続して、パーソナルコンピュータよりアプリケーション109をUSBのケーブルを介して受信するようになっていてもよい。あるいは、アプリケーション109は、端末装置103の外部から導入されることは必須ではない。アプリケーション109は、工場での製造時や出荷時にすでに導入された状態になっていてもよく、端末装置103の利用者がダウンロードなどの特別な操作を行わなくても起動可能となっていてもよい。
【0027】
図1(b)は、端末装置103においてアプリケーションマネージャなどを用いてアプリケーション109を起動し、その実行を開始した状況を示す。
【0028】
図1(c)は、図1(b)において、アプリケーション109が、認証情報を認証サーバ110のDB111に登録した状況あるいは、認証情報が認証サーバ110のDB111に登録されていることが確認された状況を示す。端末装置103の不揮発性記憶領域には、アプリケーションごとに固有の情報を記憶する領域(例えば、スクラッチパッドなどと称される場合がある)が割り当てられるようになっており、アプリケーション109は、起動する都度その領域に記憶されたデータを読出し、認証情報が認証サーバ110のDB111に登録されているかどうかを判断する。あるいは、クッキー情報が通常格納されているように、共通にアクセスができる記憶領域に記憶されたデータを読出し、認証サーバ110から送信されたクッキー情報などが登録されているかどうかによって、認証情報が認証サーバ110のDB111に登録されているかどうかを判断する。
【0029】
すなわち、認証情報が認証サーバ110のDB111に登録されていることが確認される。この確認がされると、図1(d)を参照して後に説明するように、携帯端末103からの認証要求に応じて、成功か否かの結果が返信される認証処理が認証サーバ110にて実行される状態にすることができる。そして、携帯端末103は、認証情報が認証サーバ110に登録されている場合には、認証サーバ110に対して認証要求を送信し、その返信により認証処理に成功したものか否かによってその後に行う処理を選択する。
【0030】
もし、アプリケーション109が、認証情報が認証サーバ110のDB111に登録されていないと判断すれば、認証サーバ110と通信を行い、認証情報を認証サーバ110のDB111に登録する処理を行う。このとき、アプリケーション109は、端末装置103の記憶領域から端末シリアル番号を読出したり、表示部104に表示を行い、利用者に利用者識別情報などの入力を促したりする。そして、認証サーバ110と通信を行い、DB111に認証情報112が登録された旨の返信、あるいは、既に認証情報が登録されている旨の返信が得られれば、アプリケーション109の固有の情報を記憶する領域などに、認証情報が登録されている旨を表すデータを記憶する。その後、アプリケーション109は、通常の動作を行う。なお、認証情報の登録がされているかどうかの確認は、アプリケーション109の起動直後に行われる必要はなく、任意の時点において行うことができる。
【0031】
図1(d)は、アプリケーション109が、アプリケーション109の固有の情報を記憶する領域などに記憶されたデータを読出し、認証情報が認証サーバ110のDB111に登録されていると判断した場合に、認証サーバ110に認証要求を送信して認証処理の実行を求めている状況を示す。例えば、アプリケーション109は、端末シリアル番号を読出し、認証サーバ110に認証要求とともに送信を行う。認証サーバ110は、DB111に対して検索を行い、その端末シリアル番号が登録されているかどうかを返信する。登録されていれば、認証処理の結果は成功となり、登録されていなければ、認証処理の結果は失敗となり、成功あるいは失敗の旨が返信される。アプリケーション109は、端末シリアル番号がDB111に登録されている旨の返信が得られれば、認証が受けられたとして、その後の処理を継続する。もし、端末シリアル番号がDB111に登録されていない旨の返信が得られれば、認証が受けられなかったとして、認証処理を求める前に行っていた処理を中断したり、アプリケーション109の実行そのものを終了したり、認証失敗用の処理を実行したりする。
【0032】
なお、認証情報として、端末装置103の公開鍵や公開鍵証明書が認証サーバ110のDB111に登録されているのであれば、チャレンジアンドレスポンス型の認証処理を行うことができる。その一例としては、認証サーバ110は乱数などを発生させて端末装置103に送信し、端末装置103は受信した乱数などをその秘密鍵で暗号化して認証サーバ110へ送信し、認証サーバ110はDB111に登録されている公開鍵や公開鍵証明書によって復号を行い、最初の乱数などが得られるかどうかで認証処理を行い、その結果を返す。以下では、主に端末装置103から送信された情報が認証サーバ110のDB111に登録されているかどうかによって、認証サーバ110が認証処理の結果の判定を行うとして説明するが、上述のようなチャレンジアンドレスポンス型の認証処理を用いることは、本願発明の技術的範囲から除外されない。
【0033】
図2は、端末装置103、ダウンロードサーバ107、認証サーバ110との三者の通信の過程を説明するシーケンス図である。ステップS201においては、端末装置103からダウンロードサーバ107に対して、アプリケーションのダウンロード要求が送信される。ステップS202においては、ダウンロード要求に応じて、アプリケーション109がダウンロードサーバ107から端末装置103に返信される。その後、端末装置103では、アプリケーション109に対して必要に応じて解凍処理などを施し、不揮発性記憶領域に記憶し、そして、アプリケーションマネージャなどの支配下に配置する。上述したように、ステップS201とステップS202によりダウンロードサーバ107との通信は必須なものではなく、パーソナルコンピュータから受信され、アプリケーションマネージャなどの支配下に配置されていたり、あるいは端末装置103の出荷時に既に導入され、アプリケーションマネージャなどの支配下に配置されていたりしてもよい。
【0034】
その後、端末装置103においてアプリケーション109を起動し、実行を開始する。その際、アプリケーション109は、認証情報が認証サーバ110のDB111に登録されているかどうかを、アプリケーション109固有の記憶領域などのデータを読出して判断する。その判断に応じて、ステップS203において、認証情報が認証サーバ110のDB111に登録されていることが確認できなければ、認証サーバ110に認証情報を登録する要求である認証登録要求を送信し、認証情報が認証サーバ110のDB111に登録されていることが確認されれば、認証サーバ110に認証処理を行うよう認証要求を送信する。そして、ステップS204においては、認証登録要求や認証要求の結果を受信する。そして、その結果に応じて、その後の処理を選択したり、中断、停止、終了を選択したりする。もちろん、認証登録要求や認証要求は、アプリケーション109の起動の都度、毎回送信される必要はない。なお、以下では、認証処理とは主に認証サーバ110で行われる処理を意味し、単に認証と記した場合には主に端末装置103で行われる処理を意味する。
【0035】
ここで、アプリケーション109と認証サーバ110との通信がエラーとなり、認証要求に対する返信を得ることができない場合がある。例えば、端末装置103の通信機能が故障している場合、端末装置103と基地局102との通信ができない場合、第1の通信網101、GW105もしくは第2の通信網106に障害が発生している場合または認証サーバ110に障害が発生している場合などには、認証要求に対する返信を得ることができない。このような場合には、アプリケーション109の内部では、認証サーバ110と通信のためのコネクションを確立する際のエラー、認証サーバ110に端末シリアル番号を送信する際のエラー、認証サーバ110より返信が所定の時間内に得られないことによるタイムアウト、返信を受信する際のエラー、受信したデータが所定の形式でないことによるエラーなどが発生して、通信のエラーとして検出がされる。具体的には、通信を行うためのシステムコールやそれらのシステムコールを用いたライブラリ関数などの戻り値の異常や、例外が発生し、通信のエラーとして検出される。
【0036】
本発明の特徴の一つは、通信のエラーが発生した場合であっても、所定の範囲での過去において行われた認証処理の中に成功したものがあれば返信された認証の結果が成功したものとみなしてアプリケーション109の動作を継続可能とする点である。
【0037】
(実施形態1)
(端末装置の構成)
図3は、処理実行装置を実現する端末装置のハードウェア構成を示す機能ブロック図である。端末装置300は、バス307によって接続されたCPU(Central Processing Unit)301と、RAM(Random Access Memory)302と、不揮発性記憶部303と、通信I/F(Interface)304と、操作部305と、表示部306とを有する。
【0038】
CPU301は、マシンコードを実行し、プログラムを実行する回路である。また、通信I/F304、操作部305、表示部306などが発生する割り込み信号を取得して割り込み信号に応じた処理を行う。RAM302は、DRAM(Dynamic Random Access Memory)などにより構成されるメモリであり、CPU301が実行するプログラムを記憶する。また、そのプログラムが参照するデータを記憶することが可能である。不揮発性記憶部303は、携帯端末300の電源を切断しても、記憶された情報を保持可能な記憶部である。例えば、ROM(Read Only Memory)などの読み出し専用の記憶素子や、フラッシュメモリなどの書き換えが可能な記憶素子などにより構成される。通信I/F304は、携帯端末300が外部と通信を行うためのインターフェースである。通信方式に応じたネットワークアダプタなどを含む。操作部305は、携帯端末の利用者によるボタンなどの操作を検出し、その操作を示す情報を生成する部である。例えば、どのボタンが押下されたか、タッチパネルの機能を有する画面のどの部分がタッチされたかどうかを表すデータをイベント情報などとして生成する。生成されたデータは、後述のオペレーティングシステムを介して、アプリケーションプログラムが取得可能となる。表示部306は、液晶素子や有機EL素子などを用いて構成されるディスプレイに表示を行うための部である。
【0039】
携帯端末300の電源が投入されると、CPU301によるブート処理が行われ、不揮発性記憶部303に記憶されているオペレーティングシステムがRAM302に展開され、そのオペレーティングシステムが実行される。
【0040】
図4は、オペレーティングシステムが実行され、そのオペレーティングシステムの管理下でプログラムが動作している様子を示す模式図である。ハードウェア401の上の論理的なレイヤにおいてオペレーティングシステム402が動作する。これにより、オペレーティングシステムの管理下で動作するプログラムは、オペレーティングシステム402を介してハードウェア401の制御やハードウェア401からのデータの受信を行うことができる。オペレーティングシステム402の管理下で動作するプログラムには、仮想マシン403、ブラウザなどがある。仮想マシン403は、仮想マシンコードを実行するプログラムであり、仮想マシンコードで記述されたプログラムを実行する。一般的に、仮想マシンが実行する仮想マシンコードで記述されたプログラムが「アプリケーション」と称される場合が多い。仮想マシン403を動作させることにより、ハードウェア401が異なっていても同じ記述のアプリケーションを動作させることが可能となる。また、アプリケーションは、ネイティブコードで記述されてもよく、仮想マシン403を介さず、オペレーティングシステム402の管理下で動作するものであってもよい。
【0041】
(ダウンロードサーバ、認証サーバの構成)
図5は、ダウンロードサーバ107や認証サーバ110を実現するサーバ装置のハードウェア構成を示す機能ブロック図である。サーバ装置500は、バス505によって接続されたCPU501、RAM502、通信I/F503、不揮発性記憶部504を有する。なお、CPU501、RAM502、通信I/F503、不揮発性記憶部504、バス505は、携帯端末300のそれらと対応するものと同じものが用いられる必要はない。端末装置300で用いられているものよりも高性能なものがサーバ装置500で用いられるであるのが一般的である。例えば、不揮発性記憶部504は、現状ではハードディスク装置が一般的に用いられ、端末装置300の不揮発性記憶部303の記憶容量よりも大きなものが用いられることが多い。CPU501は処理スピードがCPU301よりも高く、また、RAM502もアクセススピードがRAM502よりも高いものが用いられることが多い。
【0042】
サーバ装置500の電源が投入されると、CPU501によるブート処理が行われ、不揮発性記憶部504に記憶されているオペレーティングシステムがRAM502に展開され、オペレーティングシステムが実行される。その後、このオペレーティングシステムの管理下で各種のサーバプログラムなどが実行される。
【0043】
図6は、オペレーティングシステムが実行され、そのオペレーティングシステムの管理化で各種プログラムが実行されている様子を示す模式図である。図4と同様に、ハードウェア601の上の論理的なレイヤにおいてオペレーティングシステム602が動作し、オペレーティングシステムの管理下で動作するプログラムは、オペレーティングシステム602を介してハードウェア601の制御やハードウェア601からのデータの受信を行う。オペレーティングシステム602の管理下で動作するプログラムは、外部との通信を行うサーバプログラム603や外部との通信を行わないローカルプログラム604に分類される。サーバプログラム603は、例えば、ウェブサーバの機能を実現するプログラムであり、ローカルプログラム604は、データベース管理システムである。
【0044】
(ダウンロード処理について)
図7は、端末装置103がダウンロードサーバ107よりアプリケーション109をダウンロードする処理の流れを説明するフローチャートを示す。端末装置103では、例えばブラウザ405を動作させ、ダウンロードサーバ107で動作しているWEBサーバの機能を実現するサーバプログラム603と通信を行い、アプリケーション109のダウンロード用のウェブページなどを表示部306により表示する。そして、ダウンロードのためのボタンなどが押下されたことを操作部305からの割り込みでCPU301が検出すると、図7に示されるフローチャートの処理がCPU301によりブラウザ405などの機能の一部として実行される。
【0045】
ステップS701においては、ダウンロードセッションの開始処理が行われる。例えば、サーバプログラム603と、ダウンロードのための通信セッションを確立する。ステップS702においては、ダウンロードされるアプリケーションを格納するファイルを、不揮発性記憶部303により実現されるファイルシステムに作成し、そのファイルを書き込みモードなどにてオープンする。ステップS703において、ダウンロード要求を、確立した通信セッションを用いてサーバプログラム603に送信する。後に図8に示されるように、ダウンロードサーバ107からアプリケーションの送信が行われるので、ステップS704、S705、S706により形成されるループにおいて、ダウンロードサーバ107から送信されるデータをバッファなどのRAM302の所定の記憶領域に読み込み、ステップS702にてオープンされたファイルに書き込むことを、データの読み込み時にEOF(End Of File)が検出されるまで繰り返す。EOFが検出されると、ステップS707へ移行し、ステップS702でオープンされたファイルをクローズし、ステップS708において、S701で確立された通信セッションを終了する。その後、ダウンロードで読み込まれたデータに破損がないかなどをチェックし、必要であれば、ファイルに書き込まれたデータの解凍処理などを行い、ダウンロードされたアプリケーションをアプリケーションマネージャの支配下に配置などする。
【0046】
なお、図14(a)は、ダウンロードセッションが開始され、そのセッションが終了するまでのディスプレイの表示の一例を示す。すなわち、ダウンロードサーバと通信が行われている旨の「通信中…」が表示される。
【0047】
図8は、ダウンロードサーバ107が端末装置103にアプリケーション109をダウンロードさせる処理の流れを説明する。この処理は、例えば、ウェブサーバの機能を実現するサーバプログラム603の機能の一部として、CPU501により実行される。
【0048】
ステップS801において、ダウンロード要求が受信されるまで待ち状態に入る。例えば、LISTENシステムコールを実行し、何らかのデータが受信可能になると、受信可能となったデータを取得しダウンロード要求であるかどうかを判断する。ダウンロード要求であると判断されると、ステップS802に処理を移行し、アプリケーション109が格納されたファイルを読出しモードにてオープンする。その後、ステップS803、S804、S805により形成されるループにおいて、オープンされたファイルのデータをバッファなどとして用いられるRAM502の領域に読み込み、読み込まれたデータを通信I/F503を介して送信することを、ファイルのデータが全て読み込まれてEOFが検出されるまで繰り返し行う。EOFが検出されると、ステップS806において、ファイルをクローズして、ステップS807において、セッションの終了処理を行う。
【0049】
(アプリケーションの実行について)
図9は、端末装置103にダウンロードされたアプリケーション109を実行するための処理の流れを説明するフローチャートである。端末装置103で所定のボタンなどの操作を行い、アプリケーションマネージャなどにアプリケーション109の起動を命令すると、図9に示されるフローチャートの処理がアプリケーションマネージャなどの機能としてCPU301により開始される。ステップS901において、不揮発性記憶部303に記憶されたアプリケーション109をRAM302にロードする。その後、ステップS902において、アプリケーション109の動作を開始するように、仮想マシン403に命令したり、オペレーティングシステム402を介してCPU301に命令したりする。これによりアプリケーション109が実行される。
【0050】
図10は、アプリケーション109が、端末装置103のハードウェアと一体として実行されることにより、実現され、所定の処理を実行する装置(処理実行装置)の機能ブロック図を示す。アプリケーションの実行によって実現される装置1000は、主処理部1001と、認証情報記憶部1002と、認証結果履歴更新部1003と、通信部1004と、認証制御部1005と、を有する。これらの部は、以下に説明する各部の機能を発揮するためのクラスやインスタンスのメソッドあるいは関数(function)、手続(procedure)を含むモジュールとして実現される。
【0051】
主処理部1001は、アプリケーション109の本来の処理を行う部である。「本来の処理」とは、アプリケーション109全体として実現される機能を提供するための処理である。例えば、アプリケーション109が、ゲームを行うためのプログラムであれば、端末装置103の利用者によるボタンなどの操作を検出し、その検出に応じて画面表示を変化させて、その利用者に一連のゲームをさせることが、本来の処理である。また、アプリケーション109がコンテンツ再生のソフトウェアであれば、音楽や映像などのコンテンツを表す情報を読み込み、コンテンツの再生を行うのが本来の処理である。本発明の一実施形態では、本来の処理の中には、認証制御部1005に制御を移し、認証サーバ110へ認証処理を要求し、返信された認証処理の結果が成功か否かによってその後に行う処理を選択する処理選択の処理が含まれる。例えば、認証処理の結果が成功であれば、認証制御部1005に制御を移す前の処理を続行する選択を行い、認証処理の結果が成功でなければ、認証制御部1005に制御を移す前の処理を中断などする。したがって、主処理部1001は、処理選択の処理を行う処理選択部を含むといえる。
【0052】
アプリケーション109がプログラムであれば、そのエントリポイントは通常、主処理部1001の内部に設定される。すなわち、アプリケーション109の実行の開始の際には、仮想マシン403やCPU301などの有するレジスタの一つであるプログラムカウンタには、主処理部1001内部のアドレスが設定される。もちろん、エントリポイントは、必要に応じて、任意のアドレスに設定できる。
【0053】
認証情報記憶部1002は、認証結果履歴情報1007を読出し可能に、また更新可能に記憶する。また、認証結果履歴情報1007に加えて、図10に示されるように登録済情報1006を記憶していてもよい。認証情報記憶部1002は、不揮発性記憶部303やRAM302などのメモリに一定の領域を確保し、その領域に登録済情報1006と認証結果履歴情報1007とを記憶し、そのように記憶された登録済情報1006と認証結果履歴情報1007とにアクセスを行うモジュールなどとして実現される。
【0054】
登録済情報1006とは、認証サーバ110に認証情報が登録されているかどうかを示す情報である。例えば、その値が0ならば登録されておらず、0以外の値、例えば1、であれば認証情報が登録されていることを示す。また、登録済情報1006は、認証サーバ110に認証情報の登録を要求し、返信された情報であってもよい。具体的には、登録の要求がされた認証情報や認証情報から所定の演算で得られる情報を認証サーバ110の秘密鍵で暗号化した情報であってもよい。このように、認証情報記憶部1002に登録済情報1006を記憶することにより、認証サーバ110と実際に通信を行わなくても、認証情報が認証サーバ110に既に登録されているかどうかを判断することができる。さらに、認証サーバ110の秘密鍵で暗号化した情報を登録済情報として用いれば、登録済情報1006の偽造も困難となり、不正を行うことが困難となるため、確実に認証情報が認証サーバ110に登録されているかどうかを判断することができる。
【0055】
登録済情報1006を認証情報記憶部に記憶することにより、認証サーバ110に認証情報が登録されていない場合には、認証処理の実行の要求を送信しなくても、認証処理の結果が成功とならならいことを検出できる。この結果、無駄な通信を抑制できる。また、認証情報が登録されているか否かに応じて、その後に行う処理を選択することもできる。
【0056】
認証結果履歴情報1007とは、認証サーバ110に認証情報の登録がされた後に、認証サーバ110に認証処理を要求してその認証処理が成功したことがあるかどうかを示す情報である。認証結果履歴情報1007の一例としては、認証サーバ110に認証処理を要求して得られる認証結果の履歴(例えば、ログ)を表す情報である。ここで、認証結果とは、認証サーバ110との通信がエラーになったかどうかに加え、認証ステータス情報を含む情報である。認証ステータス情報とは、認証サーバに認証要求を行い、それに応じて認証サーバで行われる判定である認証処理の結果として返信された情報であり、認証サーバでの認証処理が成功したか失敗したかを示す情報をいう。認証結果履歴情報1007は、認証サーバ110に認証情報の登録がされた後に行われた全ての認証結果を表していてもよい。あるいは認証サーバ110に認証情報の登録がされた後に行われた所定の回数だけの認証結果を表していてもよい。例えば、認証結果履歴情報1007は、最近に行われた認証要求のうち所定の回数の結果のみを示す情報であってもよい。より具体的には、前回行われた認証要求1回のみの認証結果を示す情報であってもよい。
【0057】
また、後述するように、認証結果履歴情報1007は、認証ステータス情報が得られ、認証処理が成功していれば、所定の値として認証情報記憶部1002に記憶される数値(例えば、整数値)であってもよい。この場合、認証サーバ110との通信がエラーとなったり認証処理が失敗となったりした場合には、所定の数(例えば、1)が減じられて認証情報記憶部1002に記憶されるようになっていてもよい。そして、認証情報記憶部1002から読み出された認証結果履歴情報1007が所定の値の範囲(例えば、より大)であれば、認証サーバ110に認証処理を要求してその認証処理が成功したことがあると判断されるようになっていてもよい。
【0058】
登録済情報1006が記憶される場合には、アプリケーション109が端末装置103にダウンロードされる際に、クリアされて初期化される。あるいは、アプリケーション109に初期化された状態のデータとして含まれていてもよい。また、登録済情報1006が複数のアプリケーションにより共有して読出しや更新がされる場合には、その複数のアプリケーションの中の最初に端末装置103にダウンロードされて実行されたアプリケーションによってクリアなどされて初期化される。認証結果履歴情報1007についても同様にクリアされて初期化されるようになっていてもよい。
【0059】
ここで「登録済情報1006をクリアして初期化する」とは、登録済情報1006を、認証サーバ110に認証情報が登録されていないことを示す情報とすることである。
【0060】
また、「認証結果履歴情報1007をクリアして初期化する」とは、認証結果履歴情報1007に含まれる情報の中に、認証処理の成功を示す情報が含まれないようにすることである。例えば、認証結果履歴情報1007に、過去に認証処理を要求した結果得られる認証結果が含まれる場合には、その含まれる認証結果の全てを成功していない旨を示す情報に書き換えることである。
【0061】
認証結果履歴更新部1003は、認証結果に応じて、認証情報記憶部1002に記憶されている認証結果履歴情報1007を更新する部である。すなわち、認証結果履歴更新部1003は、通信エラーの発生に応じて、また通信エラーの発生が無ければ、前記認証要求の送信に対して返信され受信された認証処理の結果に応じて、認証結果履歴情報1007を更新する。例えば、通信エラーが発生したことを表す値、認証処理の結果表す値を、認証情報記憶部1002に記憶されている認証結果履歴情報1007に上書したり、認証情報記憶部1002に記憶されている認証結果履歴情報1007に、過去に行われた所定の回数の認証結果が含まれているのであれば、その中で時間的に最も前に行われた認証結果を削除して、通信エラーが発生したことを表す値や認証処理の結果を表す値を追加したりする。あるいは、状態遷移を行うようにして更新を行ってもよい。あるいは、認証結果履歴情報1007が数値であれば、上述したように、認証処理に成功した際に所定の数値に設定し、通信がエラーとなった場合にはその数値が所定の値の範囲にあるかどうかが判断されるようになっていてもよい。
【0062】
通信部1004は、認証サーバ110に対する通信の処理を行う。通信部1004が行う通信の処理は、認証サーバ110に、必要であれば認証情報の登録要求を送信し、また認証サーバ110に対して認証要求を送信し、送信した結果を受信することに分けられる。登録要求が送信される場合、登録要求、認証要求のどちらの送信を行って結果を受信するかは、認証制御部1005により決定される。したがって、通信部1004は、少なくとも、認証サーバ110へ認証要求を、ネットワークを介して送信する送信部と、認証サーバ110が認証要求を受信すると、その受信に応じて、認証処理の結果が成功か否かの判定を行い、その結果、認証サーバ110から送信される認証ステータス情報を受信する受信部とを含むといえる。
【0063】
認証サーバ110に認証情報の登録要求をすることとは、図1(c)を参照して説明したように、認証サーバ110のDB111に認証情報を登録させることである。例えば、通信部1004は、端末シリアル番号などを読出し、その端末シリアル番号などをDB111に登録する要求とともに認証サーバ110に送信し、通信部1004がその登録結果の通知を受ける。
【0064】
認証サーバ110に認証要求を行うこととは、図1(d)を参照して説明したように、認証情報の照会などを認証サーバ110に対して行い、その認証結果の通知である認証ステータス情報を受けることである。例えば、通信部1004は、端末シリアル番号などを読み出し、その端末シリアル番号などがDB111に登録されているかどうかの確認の要求とともに認証サーバ110に送信し、通信部1004がその結果の通知を認証ステータス情報として受ける。
【0065】
なお、認証結果には、認証サーバ110からの認証ステータス情報を受信して照会した端末シリアル番号などがDB111に登録されているかどうかの確認の結果のみならず、認証サーバ110との通信セッションの確立、データの送信、データの受信を行った際に通信のエラーの発生の有無やエラーの種類の情報を含ませるようにしてもよい。したがって、通信部1004は、少なくとも、送信部による認証要求の送信と受信部による認証処理の結果の受信とが行われる際の通信エラーの発生の有無を検出するエラー検出部を含むといえる。
【0066】
認証制御部1005は、認証情報記憶部1002に記憶されている認証結果履歴情報1007、また加えて必要ならば登録済情報1006を読出す。そして、通信部1004を動作させて認証サーバ110に対して認証情報の認証要求、あるいは必要ならば登録要求を送信させ、認証結果履歴情報1007を認証結果履歴更新部1003により更新する。また、認証制御部1005は、主処理部1001からメソッド呼び出しなどによって実行の制御が渡されると、認証が成功したか否か(認証OKかどうか)を表す認証結果を主処理部1001に返す。これにより、主処理部1001は、その後の処理を選択することができる。また必要ならば、認証結果によっては、アプリケーションの実行を中断させたり終了させたりもしてもよい。認証制御部1005で行う認証制御の処理のうち、認証サーバ110に対する認証要求の送信などを、通信部1004により行い、認証情報記憶部1002に記憶されている認証に関する情報の更新は、認証結果履歴更新部1003により行う。
【0067】
ここで、認証制御部1005は、通信部1004から受け取った認証結果がエラーを示す場合には、認証結果履歴情報1007に認証処理の成功を示す情報が含まれていれば、認証結果を成功とみなして主処理部1001に認証OKを返し、含まれていなければ認証結果を失敗とみなして主処理部1001に認証NGを返す。なお、認証結果履歴情報1007に認証処理の成功を示す情報が含まれるとは、明示的に含まれる場合のみならず、実質的に含まれているのと同じであることを含む。明示的に含まれるとは、例えば、過去に行われた認証結果の履歴をそのまま保持しており、過去に行われた認証のそれぞれに対する認証結果が保持されている場合である。また、実質的に含まれているとは、過去に行われた認証のそれぞれの認証結果は導けないが、例えば、過去に行われた認証の中に成功しているものがあれば、TRUE、そうでなければ、FALSEの値を取るフラグが用いられている場合である。また、フラグのかわりにカウンターなどを用いていてもよい。
【0068】
図11は、アプリケーション109の動作が開始した後のアプリケーション109による処理のフローチャートの一例を示す。ステップS1101において、主処理部1001の動作が開始し、アプリケーション109の動作に必要なデータ、変数の初期化を行う。例えば、アプリケーション109がゲームプログラムであれば、前回の実行で達したステージの識別子や獲得したポイントなどを不揮発性記憶部303より読み込み、アプリケーション109に割り当てられたメモリ空間に配置する。ステップS1102において、主処理部1001から認証制御部1005を動作させるためのメソッドなどが呼び出されて、認証制御部1005による認証制御の処理を行う。その処理の結果は、メソッドなどの戻り値などとして返され、ステップS1103において、認証が成功したかどうかとして判断される。認証が成功したのであれば、ステップS1104に処理を移行させる。すなわち、上述したメソッド呼び出しから復帰して、その後の主処理部1001の処理が行われる。もし、認証が成功せず失敗すれば、アプリケーション109の処理を終了させる。
【0069】
図11に示すフローチャートは、アプリケーション109による処理の一例にすぎず、認証制御の処理は、初期化の後に必ず行われる必要はない。初期化の後、主処理をある程度行った後、例えば、ゲームなどの次のステージに進む際に、認証制御の処理を行うようになっていてもよい。また、認証が成功しなければ、アプリケーション109の処理を終了せずに、次のゲームなどのステージに進ませない、再生の品質を定められた品質以上にしないなど、アプリケーション109の機能を制限させるようになっていてもよい。
【0070】
なお、図14(b)は、アプリケーション109がメモリにロードされ、動作を開始するまでのディスプレイの表示の一例を示す。「起動中…」の表示の下に、メモリへのロードの進行状況や、初期化の進行状況の表示がされる。
【0071】
図12、図13は、認証制御部1005における処理の流れを説明するフローチャートを示す。すなわち、図12は、図11のステップS1102における処理を詳細に説明するフローチャートである。また、図13(a)、(b)は、図12のステップS1220における処理を詳細に説明するフローチャートである。
【0072】
認証制御部1005を動作させるためのメソッドなどが呼び出されると、図12に例示されたフローチャートの処理が開始する。ステップS1201において、通信部1004は、認証情報記憶部1002から登録済情報を読出し、認証情報が認証サーバ110に未登録であるかを判断する。もし、未登録であれば、ステップS1202へ移行し、登録済みであれば、ステップS1209へ移行する。
【0073】
ステップS1202においては、通信部1004を動作させ、認証情報を登録するための登録要求を認証サーバ110へ送信する処理を行う。続くステップS1203では、ステップS1202での送信の際に、通信エラーが発生しなかったかどうかを判断する。例えば、認証サーバ110との通信コネションが確立でき、その通信コネクションを用いて要求が送信でき、TCP(Transmission Control Protocol)が用いられているならばACKが受信されたかどうかを判断する。もし、通信エラーが発生せずに登録要求の送信ができたのであれば、ステップS1204へ移行し、通信エラーが発生して登録要求の送信ができなければ、ステップS1208へ移行する。
【0074】
ステップS1204においては、認証情報を認証サーバ110に登録させるために、認証情報を認証サーバ110へ送信する処理を行う。続くステップS1205では、認証情報の登録が完了された旨の返信が得られたかどうかを判断する。もし、登録完了されたのであれば、ステップS1206へ移行し、認証情報の登録が完了された旨の返信が得られなかった場合には、ステップS1208へ移行する。
【0075】
ステップS1206では、認証制御部1005により認証情報記憶部1002に、認証サーバ110に認証情報が登録されている旨の登録済情報1006を記憶する。続くステップS1207においては、認証OKの返答を主処理部1001に行う。
【0076】
ステップS1203において、通信エラーが発生し、認証情報の登録要求の送信できなかったと判断されたり、ステップS1205で登録が完了のされている旨の返信が得られなかったりした場合には、上述のようにステップS1208に移行する。ステップS1208においては、登録がOKでなく、したがって認証もできない旨の返答を主処理部1001に行う。あるいは、認証制御部1005でアプリケーション109の実行を中断させたり、停止させたり、終了させてもよい。また、端末装置全体をロックなどして操作できないようにしてもよい。
【0077】
なお、ステップS1207において、認証OKの返答を行うと説明したが、登録が初めて行われたことを示す別の返答(例えば、「登録OK」)を行ってもよい。これにより、登録が初めて行われたことに応じて、その後の処理として、歓迎のメッセージを表示したりすることなどを主処理部1001が選択できる。
【0078】
ステップS1201において、認証情報が認証サーバ110に登録されていると判断された場合には、上述のようにステップS1209に移行する。ステップS1209では、認証要求の送信を認証サーバ110に行う処理をする。続くステップS12010では、ステップS1209での送信の際に、通信エラーが発生しなかったかどうかを判断する。例えば、認証サーバ110との通信コネションが確立でき、その通信コネクションを用いて要求が送信でき、TCPが用いられているならばACKが受信されたかどうかを判断する。もし、通信エラーが発生せずに認証要求の送信ができたのであれば、ステップS1211へ移行し、通信エラーが発生して認証要求の送信ができなければ、ステップS1220へ移行する。
【0079】
ステップS1211においては、認証情報を認証サーバ110に送信する処理を行う。例えば、端末シリアル番号を読出して送信する。続くステップS1212においては、ステップS1211での送信の際に、通信エラーが発生しなかったかどうかをステップS1210と同様に判断する。もし、通信エラーが発生せずに認証情報の送信ができたのであれば、ステップS1213へ移行し、通信エラーが発生して認証情報の送信ができなければ、ステップS1220へ移行する。
【0080】
ステップS1213においては、認証サーバ110からの認証ステータス情報の受信処理を行う。続くステップS1214において、通信エラーが発生せずに認証ステータス情報の受信ができたかどうかの判断を行う。この判断では、データが通信エラーなしで受信できたかどうかに加えて、受信したデータが所定の形式になっているかどうかも判断する。例えば、認証ステータス情報が0または1を表す1バイトの情報で返信されると規定されている場合、0でも1でもないデータが受信されたり2バイト以上の情報が受信されたりした場合にも通信エラーが発生したと判断する。もし、通信エラーが発生せずに認証ステータス情報の受信ができたと判断されれば、ステップS1215へ移行し、そうでなければ、ステップS1220へ移行する。
【0081】
ステップS1215においては、受信されたデータを解析や予め定められた値と比較などし、認証結果を取得する。例えば、受信されたデータが0を表す1バイトと等しければ、認証が成功した旨を取得し、それ以外の値(例えば1を表す1バイト)と等しければ、認証が失敗した旨を取得する。
【0082】
ステップS1216においては、認証結果履歴更新部1003を動作させ、ステップS1215で取得された認証結果である認証ステータス情報または認証ステータス情報に対応するコード(数値または文字情報)を用いて認証結果履歴情報1007の更新を行う。認証結果履歴情報1007に記憶する情報として、認証が成功した場合には1やFFH(16進数)、認証が失敗の場合には0や00H(16進数)が例示できる。また、認証が成功の場合には「OK」、認証が失敗の場合には「NG」のように文字の表現を含む文字情報でもよい。
【0083】
ステップS1217では、ステップS1215で取得された認証結果である認証ステータス情報を判断し、認証処理が成功したのであれば、ステップS1218へ移行し、認証OKの返答を行い、認証処理が失敗したのであれば、ステップS1219へ移行し、認証NGの返答を行う。
【0084】
ステップS1210、S1212、S1214において通信エラーが発生したと判断されれば、上述のようにステップS1220へ移行して、通信エラー(認証サーバ110との送受信のエラー)が発生した場合の処理を行う。その処理のフローチャートの例を図13(a)に示す。
【0085】
ステップS1301において、認証制御部1005は、認証結果履歴情報1007を認証情報記憶部1002より読出す。続くステップS1302において、認証結果履歴情報1007を調べ、認証が成功したことがある旨が示されているかどうかを判断する。例えば、認証結果履歴情報1007が、過去に行われた認証処理のうち最新の所定の回数の認証結果が含まれているのであれば、その所定の回数の認証結果の中に、少なくとも1回以上認証が成功したことがあるかどうかを判断する。もし、1回でも認証が成功したことがあれば、ステップS1303に移行する。1回も認証が成功したことが示されていなければ、ステップS1304に移行する。
【0086】
ステップS1303においては、認証OKを返答するように準備する。例えば、変数に認証OKを表す値を格納する。一方、ステップS1304においては、認証NGを返答するように準備する。ステップS1303、S1304の後には、ステップS1305へ移行する。
【0087】
ステップS1305では、認証結果履歴情報1007を更新する。この場合には、通信エラーが発生したことを用いて認証結果履歴情報1007を更新する。例えば、過去に行われた認証処理のうち最新の2回(すなわち、直前と、その前)の認証結果が認証結果履歴情報1007により表される場合において、例えば、直前の認証が成功し、その前の認証が失敗のときに、認証結果履歴情報1007を{直前:成功、その前:失敗}と表記するので、更新後の認証結果履歴情報1007は、{直前:エラー、その前:成功}となる。その後、ステップS1306において、認証OKや認証NGの返答を行う。
【0088】
また、図13(b)は、認証結果履歴情報1007が整数値などの数値である場合のステップS1220の処理のフローチャートを示す。なお、認証結果履歴情報1007が数値である場合には、ステップS1216においては、認証が成功すれば、第1の所定の数値(例えば、2)を認証結果履歴情報1007として記憶し、認証が失敗すれば、第2の所定の数値(例えば、1)を記憶されている認証結果履歴情報1007より減じて記憶しなおしたり、さらに第3の所定の数値(例えば、0)を認証結果履歴情報1007として記憶したりすることにより、認証結果履歴情報1007の更新を行うものとする。
【0089】
ステップS1307では、ステップS1301と同様に、認証結果履歴情報1007を読み出す。ステップS1308では、読み出された認証結果履歴情報1007が定められた範囲にあるかどうか(例えば、正の数値であるかどうか)を判断する。もし、読み出された認証結果履歴情報1007が定められた範囲にあれば、ステップS1309に移行し、ステップS1303と同様に、認証OKを返答するように準備を行う。また、読み出された認証結果履歴情報1007が定められた範囲になければ(例えば、0以下の数値であれば)、ステップS1310に移行し、ステップS1304と同様に、認証NGを返答するように準備を行う。
【0090】
ステップS1309、S1310の後は、ステップS1311に移行し、認証結果履歴情報1007の更新を行う。図13(b)の場合には、ステップS1307で読み出された認証結果履歴情報1007から上述の別の数値を減算して記憶する。その後、ステップS1312において、ステップS1306と同様に、返答を行う。
【0091】
例えば、上述のように、第1の所定の数値が2であり、第2の所定の数値が1であり、定められた範囲が正の数値の範囲であるとして、時間の経過にしたがって、(1)認証処理の成功、(2)認証処理の成功、(3)通信エラー、(4)通信エラーとなったとする。(1)の認証処理の成功によって、ステップS1216により、認証結果履歴情報1007として2が記憶され、同様に、(2)の認証処理の成功により、認証結果履歴情報1007として2が記憶される。(3)の通信エラーの発生により、図13(b)のフローチャートの処理が実行されると、認証OKが返答され、認証結果履歴情報1007として1が記憶される。そして、(4)の通信エラーの発生により、図13(b)のフローチャートの処理が実行されると、再び認証OKが返答され、認証結果履歴情報1007として0が記憶される。もし、その後、再度通信エラーとなり、図13(b)のフローチャートの処理が実行されると、ステップS1307で読み出される認証結果履歴情報1007が0となり、正の数値ではないので、認証NGが返答されることになる。
【0092】
このように、第1の所定の数値が2であり、第2の所定の数値が1であり、定められた範囲が正の数値の範囲であれば、認証の成功のあと、認証サーバとの通信が2回連続してエラーとなっても認証OKとしてアプリケーションの処理が継続され、3回連続してエラーになると認証NGとなり、アプリケーションの処理が継続されないようにすることができる。第1の所定の数値、第2の所定の数値、定めれた範囲は、任意に定めることができる。
【0093】
図14(c)、(d)、(e)は、認証結果履歴情報1007が、過去に行われた認証のうち、直前の一回の認証の認証結果だけを示す場合に、ステップS1303、S1304が実行されたときのディスプレイへの表示例を示す。もし、認証結果履歴情報1007の示す直前の認証における認証結果が、認証が成功した旨のものであり、ステップS1303が実行されたのであれば、今回は認証に成功したとみなしたことを表示する。これは、今回の認証は、認証サーバと通信ができなかったので認証処理が成功したたかどうかは不明であるが、直前の一回の認証処理は成功しているからである。ただし、次回の認証処理が成功しなければアプリケーションの継続する実行ができなくなることを「1回だけコンテンツを利用することができます」という文言によって示している。
【0094】
また、認証結果履歴情報1007の示す直前の認証における認証結果が、認証が成功しなかった旨(認証処理が失敗した旨、または、通信エラーの旨)であり、ステップS1304が実行されたのであれば、今回は認証に失敗したものとみなし、図14(d)の表示を行う。これは、今回の認証では認証サーバと通信ができなかったので認証処理が成功したかどうかは不明であり、直前の認証処理は成功ではないからである。また、通信コネクションは確立できたものの、認証サーバよりACKなどが受信できず、タイムアウトによる通信エラーが発生したことが検出された場合には、図14(e)の表示を行ってもよい。
【0095】
なお、登録済情報1006が記憶されない場合には、S1201からS1207の各ステップの実行は必須ではない。
【0096】
(認証サーバのデータベース)
図15は、認証サーバ107のDB111の構造の一例を示す。図15(a)は、例えば、会員IDとそのパスワード情報を関連付けるテーブルの一例である。会員IDの列には、端末シリアル番号や利用者の識別情報などが格納され、パスワード情報には、認証処理の際に用いられるパスワードそのものやパスワードを一方向関数で処理した情報が格納される。なお、会員IDの列とパスワード情報の列の2つの列を用意する必要はなく、会員IDが充分に長いビット長の情報であり、異なる携帯端末や利用者が同じ会員IDを使用する虞がないのであれば、会員IDだけを格納するようにしてもよい。また、会員IDの列に公開鍵や公開鍵証明書が格納される場合もパスワード情報の列は必須ではない。
【0097】
図15(b)は、会員IDに登録日と退会日とを関連付けるテーブルの一例である。登録日は、認証サーバ107に認証情報が登録された日であり、退会日は、認証情報を抹消する旨の要求が携帯端末や利用者から送信などされた日である。認証情報を抹消する旨の要求があれば、会員IDをテーブルから削除すればよいかもしれないが、登録日と退会日とを記録することにより、課金の基準となる日の前後だけ認証情報を抹消した状態にして課金を逃れることができないようにすることができる。なお、退会日に「NULL」が格納されているのは、認証情報を抹消する旨の要求が送信などされていないことを意味する。
【0098】
図15(c)は、会員IDに課金の方法を関連付けるテーブルの一例である。例えば、クレジットカード、銀行口座引落などが支払方法の列に格納され、別のテーブルにクレジットカード番号や銀行口座の番号などが格納される。
【0099】
(認証サーバの処理)
図16は、認証サーバ110の処理の流れを説明するフローチャートを示す。認証サーバ110に対する要求が、認証要求と認証情報の登録要求の2種類であれば、ステップS1601において、認証要求が受信されたかどうかを判断する。もし、認証要求が受信されれば、ステップS1602へ移行し、認証要求ではなく、認証情報の登録要求であれば、ステップS1606へ移行する。なお、一台の認証サーバが認証要求と登録要求との両方を受信する必要はなく、認証要求を受信する認証サーバと登録要求を受信する認証サーバとが異なっていてもよい。同様に、認証要求を送信する端末装置と登録要求を送信する端末装置とが異なっていてもよい。
【0100】
ステップS1602においては、認証情報を受信し、認証処理を行う。例えば、認証情報に含まれる端末シリアル番号や利用者の識別情報が図15(a)のテーブルに登録されているかどうかで認証処理が成功したかどうかを判定する。続くステップS1603においては、認証処理が成功した場合には、ステップS1604へ移行し認証処理が成功した旨の認証ステータス情報を返信し、認証処理が成功しなかった場合には、ステップS1605へ移行し認証処理が失敗した旨の認証ステータス情報を返信する。
【0101】
認証情報の登録要求が受信されたのであれば、ステップS1606において、登録するべき認証情報を受信する。続くステップS1607においては、DB111への登録処理を行う。例えば、図15(a)に示すテーブルに会員IDなどを登録する。そして、ステップS1608においては、登録完了を返信する。
【0102】
(実施形態2)
本発明の実施形態2として、認証情報記憶部1002に記憶される認証結果履歴情報1007のデータ構造の別の例を説明する。
【0103】
図17は、認証結果履歴情報1007が、直前の一回だけの認証結果を表す場合の一例を示す。認証情報記憶部1002の記憶領域1701には、直前の一回の認証が行われた日時(2008/08/01−18:52)と、そのときの認証結果として「成功」が記憶されている。図13のステップS1301においては、記憶領域1701に記憶されているデータが読出され、ステップS1302において、認証結果として成功が記憶されているかどうかを判断する。また、図12のステップS1216においては、ステップS1215で取得された認証結果とその日時を記憶領域1701に格納する。また、図13のステップS1305においては、通信エラーとなった旨とその日時を記憶領域1701に記憶する。
【0104】
このように、直前の一回だけの認証結果を記憶することにより、記憶領域を節約することが可能である。また、認証が行われた日時を記憶することにより、例えば、携帯端末のタイマなどに設定された日時を不正に操作されたことを検出することもできる。例えば、記憶領域1701に格納された日時が、携帯端末のタイマなどに設定された日時よりも後であれば、不正が行われたと判断して、アプリケーション109の実行を終了させるように選択をすることができる。なお、このような不正の検出などを行わないのであれば、認証が行われた日時を記憶領域1701などに記憶する必要はない。
【0105】
なお、本実施形態では、記憶領域1701には、認証処理の成功、認証処理の失敗、通信エラーのいずれかが認証結果として記憶されてもよい。この場合には、図13(b)のフローチャートの処理が用いられる場合において、例えば、上述の第1の所定の数値が1であり、第2の所定の数値が1であり、定められた範囲が正の数値の範囲である場合と同じ認証結果が返答される。
【0106】
(実施形態3)
本発明の実施形態3として、認証サーバ110との通信ができなかった場合に、通信が可能となれば、認証サーバ110と通信を行い、認証要求を送信して認証処理が行われる形態について説明する。
【0107】
図18は、本実施形態に係るアプリケーション109が、端末装置103のハードウェアと一体となって実行されることにより、実現される装置の機能ブロック図を示し、実施形態1、2の装置の機能ブロック図にさらに、コールバック処理部1801が備えられている。
【0108】
コールバック処理部1801は、所定の条件が満たされる状況になったときに、指定された処理を行う部である。本実施形態においては、所定の条件が満たされる状況には、通信状況が良好となったことや、メールの着信などがあり、実際に通信が可能となったことを含むものとする。
【0109】
オペレーティングシステムや仮想マシンは、所定の条件のどれが満たされるようになったかを監視している。そして、ある条件が満たされると、イベントを発生させて、オペレーティングシステムや仮想マシンの管理化で動作しているアプリケーションに通知する機能を備えることができる。そこで、本実施形態では、コールバック処理部1801は、そのように通知されるイベントを取得して、そのイベントの種類に応じて設定されたコールバックを実行する。
【0110】
図19は、コールバック処理部1801が処理するデータ構造を示す。図19において、「イベント1」、「イベント2」、「イベント3」がイベントの種類を示し、それにリスト構造として連なっているノード1902、1903、1904がイベント1に関連付けられたコールバックを表している。
【0111】
図20は、コールバック処理部1801の処理を説明するフローチャートである。ステップS2001において、イベントが発生し、その通知がされるまで待つ。イベントが発生すると、ステップS2002に移行し、通知されたイベントに対応したコールバックリストの取得を行う。そして、ステップS2003において、コールバックリストのコールバックを順に実行する。
【0112】
本実施形態においては、認証サーバ110との通信ができないことが検出された図12のステップS1220を行う際に図21に示す処理を行うコールバックを、通信状況が良好となったことや実際に通信が可能となったことが検出されると通知されるイベントのリストに追加する。すなわち、ステップS2101において、認証要求の送信を行う。続くステップS2102において、送信が行えたかどうかを判断し、送信ができたのであればステップS2103へ移行し、送信がエラーとなればステップS2110へ移行する。
【0113】
ステップS2103においては、認証情報の送信を行い、ステップS2104において、送信ができたかどうかを判断し、送信が行えたのであればステップS2105へ移行し、送信がエラーとなればステップS2110へ移行する。
【0114】
ステップS2105においては、認証ステータスの受信を行い、ステップS2106において、受信ができたかどうかを判断し、できたのであれば、ステップS2107へ移行し、受信エラーとなればステップS2110へ移行する。
【0115】
ステップS2107においては、認証結果の取得を行う。そして、ステップS2108において、認証に成功すればステップS2109へ移行し、認証が失敗すればステップS2110へ移行する。
【0116】
ステップS2109においては、認証が成功したとの認証結果の履歴を追加する認証結果履歴情報の更新を行う。
【0117】
ステップS2110においては、送受信のエラーが発生し認証が成功しなかったので、再度コールバックの設定を行う。
【0118】
本実施形態のように、送受信のエラーが発生し認証が成功しなかった場合に、コールバックを設定して再度、認証を行うことにより、送受信のエラーが発生し認証処理が成功したとみなして、利用者にアプリケーションの使用やコンテンツの利用をさせている間に認証処理に成功すると、その後においては、送受信のエラーが無かったのと同じ状態でアプリケーションの使用やコンテンツの利用をさせることができる。
【図面の簡単な説明】
【0119】
【図1】本発明の一実施形態の概要を示す図である。
【図2】本発明の一実施形態における通信の過程を説明するシーケンス図である。
【図3】本発明の一実施形態に係る携帯端末のハードウェア構成を示す機能ブロック図である。
【図4】本発明の一実施形態に係る携帯端末において、オペレーティングシステムの管理下でプログラムが動作している様子を示す模式図である。
【図5】本発明の一実施形態に係るサーバ装置の機能ブロック図である。
【図6】本発明の一実施形態に係るサーバ装置において、オペレーティングシステムの管理下でプログラムが動作している様子を示す模式図である。
【図7】本発明の一実施形態に係る端末装置がダウンロードサーバ装置よりアプリケーションをダウンロードする処理のフローチャートである。
【図8】本発明の一実施形態に係るダウンロードサーバ装置が端末装置にアプリケーションをダウンロードさせる処理のフローチャートである。
【図9】本発明の一実施形態に係る携帯端末にダウンロードされたアプリケーションの実行の処理のフローチャートである。
【図10】本発明の一実施形態に係る処理実行装置の機能ブロック図である。
【図11】本発明の一実施形態に係るアプリケーションの処理のフローチャートである。
【図12】本発明の一実施形態に係る認証制御部における処理の流れを説明するフローチャートである。
【図13】本発明の一実施形態に係る認証制御部における処理の流れを説明するフローチャートである。
【図14】本発明の一実施形態に係る携帯端末のディスプレイの表示の一例図である。
【図15】本発明の一実施形態に係る認証サーバのデータベースの構造の一例図である。
【図16】本発明の一実施形態に係る認証サーバの処理の流れを説明するフローチャートである。
【図17】本発明の一実施形態に係る認証結果履歴情報を格納するデータ構造の一例図である。
【図18】本発明の一実施形態に係る処理実行装置の機能ブロック図である。
【図19】本発明の一実施形態に係るコールバック処理部が処理するデータ構造の一例図である。
【図20】本発明の一実施形態に係るコールバック処理部の処理を説明するフローチャートである。
【図21】本発明の一実施形態に係るコールバック処理のフローチャートである。
【符号の説明】
【0120】
1000 実行中アプリケーション
1001 主処理部
1002 認証情報記憶部
1003 認証結果履歴更新部
1004 通信部
1005 認証制御部
【特許請求の範囲】
【請求項1】
ネットワークを介して受信した認証要求に応じ成功か否かの判定がされる認証処理を実行する認証サーバへ、前記認証要求を送信する送信部と、
前記認証サーバから、前記認証処理の結果を受信する受信部と、
前記受信部が受信した前記認証処理の結果が、成功か否かによってその後に行う処理を選択する処理選択部と、
前記受信部が受信した前記認証処理の結果の履歴を示す認証結果履歴情報を記憶する記憶部と、
前記送信部による前記認証要求の送信と前記受信部による前記認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出するエラー検出部と、
前記エラー検出部により前記通信エラーの検出がされた場合は前記通信エラーの検出に応じて、前記エラー検出部により前記通信エラーの検出がされなかった場合は前記受信部が受信した前記認証処理の結果に応じて、前記認証結果履歴情報を更新する認証結果履歴更新部と、
前記エラー検出部により前記通信エラーの発生したことが検出され、前記認証結果履歴情報に前記認証処理の成功を示す情報が既に含まれる場合には、前記受信部が受信した前記認証処理の結果を成功とみなす処理を行う認証制御部と、
を有することを特徴とする処理実行装置。
【請求項2】
ネットワークを介して受信した認証要求に応じ成功か否かの判定がされる認証処理を実行する認証サーバへ、前記認証要求を送信し、
前記認証サーバから、前記認証処理の結果を受信し、
受信した前記認証処理の結果が、成功か否かによってその後に行う処理を選択することを計算機に実行させるためのアプリケーションプログラムであって、
受信した前記認証処理の結果の履歴を示す認証結果履歴情報を記憶し、
前記認証要求の送信と前記認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出し、
前記通信エラーの検出がされた場合は前記通信エラーの検出に応じて、前記通信エラーの検出がされなかった場合は受信した前記認証処理の結果に応じて、前記認証結果履歴情報を更新し、
前記通信エラーの発生したことが検出され、前記認証結果履歴情報に前記認証処理の成功を示す情報が既に含まれる場合には、受信した前記認証処理の結果を成功とみなす処理を行うことを計算機に実行させるためのアプリケーションプログラム。
【請求項3】
請求項2に記載のアプリケーションプログラムを携帯端末へダウンロード可能に記憶する記憶部を有するダウンロードサーバ装置。
【請求項1】
ネットワークを介して受信した認証要求に応じ成功か否かの判定がされる認証処理を実行する認証サーバへ、前記認証要求を送信する送信部と、
前記認証サーバから、前記認証処理の結果を受信する受信部と、
前記受信部が受信した前記認証処理の結果が、成功か否かによってその後に行う処理を選択する処理選択部と、
前記受信部が受信した前記認証処理の結果の履歴を示す認証結果履歴情報を記憶する記憶部と、
前記送信部による前記認証要求の送信と前記受信部による前記認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出するエラー検出部と、
前記エラー検出部により前記通信エラーの検出がされた場合は前記通信エラーの検出に応じて、前記エラー検出部により前記通信エラーの検出がされなかった場合は前記受信部が受信した前記認証処理の結果に応じて、前記認証結果履歴情報を更新する認証結果履歴更新部と、
前記エラー検出部により前記通信エラーの発生したことが検出され、前記認証結果履歴情報に前記認証処理の成功を示す情報が既に含まれる場合には、前記受信部が受信した前記認証処理の結果を成功とみなす処理を行う認証制御部と、
を有することを特徴とする処理実行装置。
【請求項2】
ネットワークを介して受信した認証要求に応じ成功か否かの判定がされる認証処理を実行する認証サーバへ、前記認証要求を送信し、
前記認証サーバから、前記認証処理の結果を受信し、
受信した前記認証処理の結果が、成功か否かによってその後に行う処理を選択することを計算機に実行させるためのアプリケーションプログラムであって、
受信した前記認証処理の結果の履歴を示す認証結果履歴情報を記憶し、
前記認証要求の送信と前記認証処理の結果の受信とを行う際の通信エラーの発生の有無を検出し、
前記通信エラーの検出がされた場合は前記通信エラーの検出に応じて、前記通信エラーの検出がされなかった場合は受信した前記認証処理の結果に応じて、前記認証結果履歴情報を更新し、
前記通信エラーの発生したことが検出され、前記認証結果履歴情報に前記認証処理の成功を示す情報が既に含まれる場合には、受信した前記認証処理の結果を成功とみなす処理を行うことを計算機に実行させるためのアプリケーションプログラム。
【請求項3】
請求項2に記載のアプリケーションプログラムを携帯端末へダウンロード可能に記憶する記憶部を有するダウンロードサーバ装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図14】
【公開番号】特開2010−49568(P2010−49568A)
【公開日】平成22年3月4日(2010.3.4)
【国際特許分類】
【出願番号】特願2008−214384(P2008−214384)
【出願日】平成20年8月22日(2008.8.22)
【特許番号】特許第4313425号(P4313425)
【特許公報発行日】平成21年8月12日(2009.8.12)
【出願人】(501016847)KPE株式会社 (145)
【Fターム(参考)】
【公開日】平成22年3月4日(2010.3.4)
【国際特許分類】
【出願日】平成20年8月22日(2008.8.22)
【特許番号】特許第4313425号(P4313425)
【特許公報発行日】平成21年8月12日(2009.8.12)
【出願人】(501016847)KPE株式会社 (145)
【Fターム(参考)】
[ Back to top ]