(第1の実施形態)
以下、本発明の実施の形態を図面に基づき説明する。
図1は本発明の一の実施形態にかかるネットワークシステムの全体的な構成を示す図である。
このネットワークシステムは、例えば携帯電話などの制御機器10、例えばDVR(Digital Video Recorder)などのネットワーク家電機器である被制御機器20、サービスサーバ30、ダイレクトアクセス管理サーバ40、およびルータ50を有している。この実施形態では、サービスサーバ30が第1の機器に相当し、被制御機器20は第2の機器に相当する。
制御機器10は、被制御機器を制御する機器として動作するものである。制御機器は、被制御機器を制御できるものであれば何でもよく、携帯電話の他には、例えば、PC(Personal Computer)、PDA(Personal Digital Assistance)などであってよい。
制御機器10は、プログラムなどを記憶するメインメモリ、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPU(Central Processing Unit)、ネットワークとのインタフェース部、DVR20とのインタフェース部、キー入力部や表示部などのユーザインタフェース部、不揮発性の記憶部11などを備える。この記憶部11には、この制御機器10に登録されているユーザ識別情報が記憶されている。メインメモリには、被制御機器20との間でのダイレクトアクセスに関する処理を行うプログラムなどが記憶されている。
被制御機器20は、放送番組などのコンテンツをメディアに録画したり再生したりする録画再生機能部のほか、プログラムなどを記憶するメインメモリ、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPU、ネットワークとのインタフェース部、制御機器10とのインタフェース部、不揮発性の記憶部21、リモコン受信部、TVなどを接続するためのインタフェース部などを備える。この記憶部21には、被制御機器に固定的に割り当てられた機器認証情報が予め記憶されている。メインメモリには、被制御機器20の録画再生機能部を制御するためのプログラムのほか、サービスサーバ30との間でのダイレクトアクセスに関する処理を行うためのプログラムなどが記憶されている。
サービスサーバ30は、制御機器10に対してネットワーク越しに被制御機器20にアクセスする各種のサービスを提供するサーバ装置である。このサービスサーバ30は、例えば、キーボード・マウスなどの入力部と、表示部と、プログラムなどを記憶するメインメモリと、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPUと、ネットワークとの通信部と、記憶部31とを備えた、例えば定型的なコンピュータシステムを用いて実現される。メインメモリには、コンピュータシステムを動作させるために必要な基本的なプログラムのほか、サービスを実行するために必要なプログラムなどが記憶されている。記憶部31には、サービスサーバ30が提供する個々のサービスごとにサービスサーバ及びサービスを識別するためのサービスIDが記憶されている。
ダイレクトアクセス管理サーバ40は、制御機器10と、サービスサーバ30のサービスとの組み合わせと被制御機器20との対応を管理するサーバである。このダイレクトアクセス管理サーバ40は、例えば、キーボード・マウスなどの入力部と、表示部と、プログラムなどを記憶するメインメモリと、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPUと、ネットワークとのインタフェース部と、記憶部41とを備えた、例えば定型的なコンピュータシステムを用いて実現される。メインメモリには、コンピュータシステムを動作させるために必要な基本的なプログラムのほか、コンピュータシステムをダイレクトアクセス管理サーバとして機能させるためのプログラムなどが記憶されている。
ダイレクトアクセス管理サーバ40には、SOAP(Simple Object Access Protocol)サーバ42およびXMPP(eXtensible Messaging and Presence Protocol)サーバ43が設けられている。SOAPサーバ42は、制御機器10とサービスの組み合わせの登録、被制御機器20の登録、サービスサーバ30と被制御機器20との間でのダイレクトアクセスに関する処理を行うためのサーバである。XMPPサーバ43は、被制御機器20との間で双方向の常時接続セッションを設定するためのサーバである。なお、SOAPサーバ42及びXMPPサーバ43は、一実施例を示したものであり、SOAPサーバ42は他のAPI呼び出し方式を用いたサーバに、XMPPサーバ43は他のIMの方式を用いたサーバに、それぞれ置き換え可能である。
次に、各機器のインタフェースについて説明する。図1において[IF−**]はインタフェース番号を示している。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からアクセスされるインタフェース[IF−02]と、被制御機器20からアクセスされるインタフェース[IF−00]とを有する。SOAPサーバ42にはSOAPクライアント機能も含まれており、サービスサーバ30側のインタフェース[IF−05]へのアクセスを行う。XMPPサーバ43のインタフェースは、XMPPセッションの確立を行う際にXMPPクライアントからアクセスされる。本システム構成例では、被制御機器20からアクセスされるインタフェース[IF−06]がこれに該当し、XMPPセッション確立後はこのインタフェース[IF−06]を用いて双方向にメッセージをやり取りできるため、XMPPサーバ43からも被制御機器20のインタフェース[IF−07]にアクセスすることができる。
サービスサーバ30は、制御機器10からアクセスされるインタフェース[IF−01]と、ダイレクトアクセス管理サーバ40からアクセスされるインタフェース[IF−05]と、被制御機器20からアクセスされるインタフェース[IF−31]とを有する。
なお、このシステム構成例では、サービスサーバ30はダイレクトアクセス管理サーバ40内のXMPPサーバ43と直接インタフェースしていないが、もちろん直接インタフェースするように構成してもよい。
被制御機器20は、ダイレクトアクセス管理サーバ40からアクセスされるXMPPセッション確立後のインタフェース[IF−07]と、制御機器10との間で例えば赤外線やUSB(Universal Serial Bus)などでデータを送受信するためのインタフェース[IF−03]と、サービスサーバ30もしくは制御機器10からアクセスされるダイレクトアクセス用URIに対応したインタフェース[IF−09]とを有している。
ルータ50は、被制御機器20からアクセスされる、UPnP(Universal Plug and Play)IGD(Internet Gateway Device)機能のインタフェース[IF−08]を有する。
次に、この実施形態のネットワークシステムの動作を説明する。以下の説明において<X−XX>は要求、<X−XXR>は<X−XX>に対する応答を示す。
[1.制御機器・サービス、被制御機器の登録]
最初に、制御機器10とサービスとの組み合わせ毎に発行される制御機器・サービス管理IDと、ダイレクトアクセス管理サーバ40内で個々の被制御機器20に対してユニークに発行される被制御機器管理IDとの紐付けを行う動作を説明する。
図2は制御機器10とサービスとの組み合わせの登録と被制御機器20の登録を行う際の情報の流れを示すシーケンス図である。図6はこの登録時の制御機器10のフローチャートである。図7はこの登録時のサービスサーバ30のフローチャートである。図8及び図9は登録時のダイレクトアクセス管理サーバ40のフローチャートである。図10はこの登録時の被制御機器20のフローチャートである。
[1−1.制御機器とサービスとの組み合わせの登録]
まず、制御機器10は、ユーザからの被制御機器登録の指示を受け(図6:ステップS301)、ユーザ識別情報を含む被制御機器登録要求<R−1>をサービスサーバ30に発行する(図6:ステップS302)。
サービスサーバ30は、ユーザ識別情報を含む被制御機器登録要求<R−1>を受信すると(図7:ステップS401)、そのユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されているかどうかを判断する(図7:ステップS402)。
ユーザ識別情報に対応する制御機器・サービス管理IDが記憶されていない場合、サービスサーバ30は、ユーザ識別情報を記憶部31に保存し(図7:ステップS403)、あらかじめ自身に割り当てられているサービスIDを含む制御機器・サービス管理ID取得要求<R−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に対して発行する(図7:ステップS404)。制御機器・サービス管理IDは、サービス事業者が提供する個々のサービスと制御機器との組み合わせに対してユニークに割り当てられるIDである。
SOAPサーバ42は、制御機器・サービス管理ID取得要求<R−2>を受信すると(図8:ステップS501)、これに含まれているサービスIDが、ダイレクトアクセス管理サーバ40の記憶部41にあらかじめ登録されているサービスIDと一致するかどうかを調べ(図8:ステップS502)、一致しない場合には、サービスサーバ30にサービスIDが未登録であることを示すエラーコードを制御機器・サービス管理ID取得応答<R−2R>として送信する(図8:ステップS506)。サービスIDが一致する場合には、SOAPサーバ42は、新規の制御機器・サービス管理IDを発行して(図8:ステップS503)、この制御機器・サービス管理IDとサービスIDとの対応関係を記憶部41に登録し(図8:ステップS504)、その制御機器・サービス管理IDをサービスサーバ30に制御機器・サービス管理ID取得応答<R−2R>として送信する(図8:ステップS505)。これにより、ダイレクトアクセス管理サーバ40は、ダイレクトアクセス管理サーバ40からみて制御側を、制御機器10と、制御機器10が利用するサービスサーバ30のサービスとを組み合わせで識別することができるようになる。
なお、ダイレクトアクセス管理サーバ40は、記憶部41に、制御機器・サービス管理IDおよびサービスIDに対応付けて、サービスサーバ30のURIなどの場所情報を保存して管理することとしている。
サービスサーバ30は、制御機器・サービス管理ID取得応答<R−2R>として制御機器・サービス管理IDを受信すると(図7:ステップS405)、この制御機器・サービス管理IDをユーザ識別情報と対応付けて記憶部31に登録する(図7:ステップS406)。制御機器・サービス管理IDをユーザ識別情報と対応付けて記憶することにより、サービスサーバ30は、以降、制御機器10からアクセスされた際に、制御機器10のユーザ識別情報に対応する制御機器・サービス管理IDを用いて、ダイレクトアクセス管理サーバ40に処理を要求することにより、制御機器10とサービスサーバ30のサービスとの組み合わせの制御側として、ダイレクトアクセス管理サーバ40に制御要求元を一意に識別させることが可能となる。
サービスサーバ30は、制御機器・サービス管理IDをユーザ識別情報と対応付けて記憶部31に登録した後、または、制御機器10から受信した被制御機器登録要求<R−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に登録されている場合、それら制御機器・サービス管理IDおよびサービスIDを含む被制御機器登録用パスワード取得要求<R−3>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に対して発行する(図7:ステップS407)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器登録用パスワード取得要求<R−3>を受信すると(図8:ステップS507)、これに含まれている制御機器・サービス管理IDおよびサービスIDの組み合わせが記憶部41に登録されているかどうかを判断する(図8:ステップS508)。登録されていない場合、SOAPサーバ42は、サービスサーバ30に制御機器・サービス管理IDとサービスIDの組み合わせが未登録であることを示すエラーコードを被制御機器登録用パスワード取得応答<R−3R>として送信する(図8:ステップS512)。また、被制御機器登録用パスワード取得要求<R−3>に含まれている制御機器・サービス管理IDおよびサービスIDの組み合わせが記憶部41に既に登録されている場合、SOAPサーバ42は、被制御機器登録用パスワードを新たに生成し(図8:ステップS509)、この被制御機器登録用パスワードとこの被制御機器登録用パスワードに対して決められた有効期限に関する情報を被制御機器登録用パスワード取得要求<R−3>に含まれていた制御機器・サービス管理IDおよびサービスIDと対応付けて記憶部41に登録する(図8:ステップS510)。この後、SOAPサーバ42は、被制御機器登録用パスワードと、この被制御機器登録用パスワードの有効期限の情報を被制御機器登録用パスワード取得応答<R−3R>としてサービスサーバ30に送信する(図8:ステップS511)。
サービスサーバ30は、被制御機器登録用パスワード取得応答<R−3R>を受信すると(図7:ステップS408)、この被制御機器登録用パスワード取得応答<R−3R>に含まれている被制御機器登録用パスワードとその有効期限の情報を被制御機器登録応答<R−4>として制御機器10に送信する(図7:ステップS409)。
制御機器10は、この被制御機器登録応答<R−4>を受信すると(図6:ステップS303)、これに含まれている被制御機器登録用パスワードとその有効期限の情報を記憶部11に保存する(図6:ステップS304)。
以上により、制御機器10とサービスとの組み合わせに対する制御機器・サービス管理IDの登録処理と被制御機器20を制御機器10に関連付けるために用いられる被制御機器登録用パスワードの発行処理が完了となる。
[1−2.被制御機器の登録]
次に、被制御機器20の登録時の動作を説明する。
被制御機器20は、ユーザによる利用前にダイレクトアクセス管理サーバ40において自身の機器認証を次のように行う。
まず、被制御機器20は自動接続フラグの値をチェックする(図10:ステップS601)。被制御機器のダイレクトアクセス管理サーバ40への登録前には自動接続フラグの値はオフである。この場合被制御機器20は自身に予め設定されている認証方式の情報および機器認証情報を含む機器認証要求<R−0>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図10:ステップS602)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20からの機器認証要求<R−0>を受信すると(図8:ステップS513)、この被制御機器20が正当な機器であるかどうかを、機器認証要求<R−0>に含まれる認証方式の情報および機器認証情報に基づき判定する(図8:ステップS514)。不当な機器として判定された場合、すなわち、認証方式があらかじめ決められている認証方式と異なる場合や機器認証情報があらかじめ決められている認証方式の形式と異なる場合等には、SOAPサーバ42は、ダイレクトアクセス管理サーバ40へのエラーコードを示す旨を機器認証応答<R−0R>として被制御機器20に送信する(図8:ステップS515)。正当な機器であることが判定された場合、すなわち、認証方式があらかじめ決められている認証方式と一致し、かつ機器認証情報があらかじめ決められている認証方式の形式である場合には、SOAPサーバ42は、その被制御機器20に対して割り当てる機器認証継続IDを生成して(図8:ステップS516)、この機器認証継続IDと、機器認証要求<R−0>に含まれる機器認証情報とを対応付けて記憶部41に保存する(図8:ステップS517)。この後、SOAPサーバ42は、上記の生成した機器認証継続IDとその有効期限の情報を含む機器認証応答<R−0R>を被制御機器20へ送信する(図8:ステップS518)。機器認証継続IDは、ダイレクトアクセス管理サーバ40で機器認証が完了している機器に対して割り当てられる識別情報であり、この識別情報によって、ダイレクトアクセス管理サーバ40は、被制御機器20の機器の認証状況を確認することが可能となる。
被制御機器20は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、機器認証継続IDとその有効期限の情報とを含む機器認証応答<R−0R>を受信すると(図10:ステップS603)、この機器認証応答<R−0R>に含まれる機器認証継続ID、その有効期限の情報を機器認証情報と対応付けて記憶部21に保存する(図10:ステップS604)。
この後、被制御機器20は、記憶部21に被制御機器登録用パスワードが保存されているかどうかを判断する(図10:ステップS605)。被制御機器登録用パスワードが保存されていない場合には動作を終了し、被制御機器登録用パスワードが保存されている場合にはステップS609へ移行する。機器認証継続IDを取得した直後は被制御機器登録用パスワードが保存されていないので、この場合には動作を終了することとなる。
ここまでにおいて、被制御機器20には機器認証継続ID、機器認証継続IDの有効期限の情報、機器認証情報の組み合わせが記憶部21に記憶され、ダイレクトアクセス管理サーバ40には機器認証継続IDと機器認証情報との組み合わせが記憶部41に記憶され、被制御機器20のダイレクトアクセス管理サーバ40への登録が完了したことになる。
[1−3.制御機器・サービス管理IDと被制御機器管理IDとの紐付け]
次に、制御機器・サービス管理IDと被制御機器管理IDとを関連付けてダイレクトアクセス管理サーバ40に登録する動作を行う。制御機器10において、ユーザからのワンタイムパスワード送信要求が入力される(図6:ステップS305)。制御機器10は、このユーザからのワンタイムパスワード送信要求を受けると記憶部11に記憶されている被制御機器登録用パスワードを、例えば、赤外線やUSBなどのインタフェース[IF−03]を使って、被制御機器20にワンタイムパスワード<R−5>として渡す(図6:ステップS306)。被制御機器登録用パスワードの渡し方は、他にも、非接触ICカードを介した受け渡し、Bluetooth(商標)、無線LANなどによる無線伝送など様々な方式が想定されるが、制御機器である制御機器10から被制御機器20に対して被制御機器登録用パスワードを渡すことができさえすればどのような渡し方であっても構わない。この後、制御機器10は記憶部11から被制御機器登録用パスワードを消去する(図6:ステップS307)。
被制御機器20は、制御機器10から被制御機器登録用パスワード<R−5>を受信すると(図10:ステップS607)、この被制御機器登録用パスワードを記憶部21に保存する(図10:ステップS608)。続いて、被制御機器20は、記憶部21に記憶されている機器認証継続IDと、制御機器10より受信した被制御機器登録用パスワードを含む被制御機器登録要求<R−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図10:ステップS609)。これにより被制御機器20は、ダイレクトアクセス管理サーバ40に、被制御機器登録用パスワードを送信してきた制御機器10と関連付けて登録することを要求する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20から被制御機器登録要求<R−6>を受信すると(図9:ステップS519)、この被制御機器登録要求<R−6>に含まれる機器認証継続IDが記憶部41に保存されているものと一致するかどうかのチェックと機器認証継続IDの有効期限のチェックを行う(図9:ステップS520)。これらのチェックでNGが判定された場合、すなわち機器認証継続IDが一致しないか、もしくは機器認証継続IDの有効期限が切れている場合には、機器認証が必要であることを示すエラーコードを含む被制御機器登録応答<R−6R>を被制御機器20へ送信する(図9:ステップS530)。被制御機器20は、このエラーコードを含む被制御機器登録応答<R−6R>を受信すると(図10:ステップS622)、ステップS602に戻って機器認証のための処理を繰り返す。
また、SOAPサーバ42は、ステップS520のチェック結果がOKの場合、すなわち機器認証継続IDが記憶部41に記憶されているものと一致し、かつ機器認証継続IDの有効期限が切れていない場合、被制御機器20から受信した被制御機器登録要求<R−6>に含まれる被制御機器登録用パスワードが記憶部41に保存されているものと一致するかどうかのチェックとその被制御機器登録用パスワードの有効期限のチェックを行う(図9:ステップS521)。これらのチェックでNGが判定された場合、すなわち被制御機器登録用パスワードが一致しないか、もしくは被制御機器登録用パスワードの有効期限が切れている場合、SOAPサーバ42は、被制御機器登録要求<R−6>に含まれる被制御機器登録用パスワードが無効であることを示すエラーコードを被制御機器登録応答<R−6R>として被制御機器20へ送信する(図9:ステップS529)。被制御機器20は、このエラーコードを被制御機器登録応答<R−6R>として受信すると(図10:ステップS620)、被制御機器20に接続されたTVの画面等を通して、被制御機器登録用パスワードの再取得を行うように、ユーザに対してエラーメッセージの表示を行って(図10:ステップS621)、処理を終了する。
また、SOAPサーバ42は、ステップS521のチェック結果がOKの場合、すなわち被制御機器登録用パスワードが記憶部41に記憶されているものと一致し、かつ被制御機器登録用パスワードの有効期限が切れていない場合には、記憶部41に記憶されている情報を参照して、被制御機器登録要求<R−6>に含まれている機器認証継続IDに被制御機器管理IDが割り当てられているかどうかの判断を行う(図9:ステップS522)。機器認証継続IDに対応する被制御機器管理IDがまだ割り当てられていない場合、SOAPサーバ42は、その被制御機器20に対して被制御機器管理IDを割り当て(図9:ステップS523)、この割り当てた被制御機器管理IDを、その被制御機器20の機器認証情報および機器認証継続IDと対応付けて記憶部41に保存する(図9:ステップS524)。被制御機器登録要求<R−6>に含まれている機器認証継続IDに被制御機器管理IDがすでに割り当てられている場合には、SOAPサーバ42は被制御機器管理IDを、記憶部41に該被制御機器登録用パスワードと対応付けられて保存されている制御機器・サービス管理IDと関連付けて記憶部41に保存する(図9:ステップS525)。ここで、被制御機器管理IDとは、被制御機器に対してダイレクトアクセス管理サーバ40内でユニークに割り当てられる識別情報である。これによって、制御機器とサービスとの組み合わせに対して割り当てられた制御機器・サービス管理IDと、被制御機器に対して割り当てられた被制御機器管理IDとの紐付けが行われる。この紐付けは、1つの制御機器・サービス管理IDに対して複数の被制御機器管理IDが紐付けされても、逆に複数の制御機器・サービス管理IDが1つの被制御機器管理IDに紐付けされても構わない。
次にSOAPサーバ42は、現在紐付けが完了しているサービスの数を被制御機器登録応答<R−6R>として被制御機器20へ送信する(図9:ステップS526)。次に、SOAPサーバ42は、記憶部41に保存されているサービスID、制御機器・サービス管理ID、被制御機器登録用パスワードを含む被制御機器登録完了通知<R−7>をサービスサーバ30に送信する(図9:ステップS527)。この後、SOAPサーバ42は、記憶部41の被制御機器登録用パスワードを消去し(図9:ステップS528)、処理を終了する。一方、サービスサーバ30はSOAPサーバ42より被制御機器登録完了通知<R−7>を受信すると(図7:ステップS410)、被制御機器の登録が完了したことを、制御機器10のユーザに電子メールなどによって通知する(図7:ステップS411)。
被制御機器20は、SOAPサーバ42より現在紐付けが完了しているサービスの数を被制御機器登録応答<R−6R>として受信すると(図10:ステップS610)、自動接続フラグをオンにセットし(図10:ステップS611)、被制御機器の登録が完了したことを表すメッセージを表示する(図10:ステップS612)。続いて、被制御機器20は、記憶部21に保存されている被制御機器登録用パスワードを消去する(図10:ステップS613)。その後、被制御機器20は、ダイレクトアクセス管理サーバ40内のXMPPサーバ43との間で常時接続セッションを確立するために、機器認証継続IDを含むXMPPログイン情報取得要求<D−0−1>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図10:ステップS614)。
[2.被制御機器のXMPPログイン]
このネットワークシステムでは、ダイレクトアクセス管理サーバ40に、被制御機器20との間で双方向の常時接続セッションを設定するためのXMPPサーバ43を置いている。制御機器である制御機器10から被制御機器20にネットワークを通じてアクセスするために、その前に被制御機器20がXMPPサーバ43にログインしてXMPPサーバ43の間で常時接続セッションを確立しておく。これにより、サービスサーバ30や制御機器10は、必要なときには、被制御機器20から必要な情報を取得できる。また、この際のサービスサーバ30の設計を簡単にするために、XMPPプロトコルをダイレクトアクセス管理サーバ40内に隠蔽し、SOAPインタフェースだけで、被制御機器20と双方向の常時接続セッションを設定しているXMPPサーバ43との情報のやり取りを行えるようにしている。
図3は被制御機器20のXMPPログインに関する情報の流れを示すシーケンス図である。図11は被制御機器20のXMPPログイン時のダイレクトアクセス管理サーバ40の動作を示すフローチャートである。
ダイレクトアクセス管理サーバ40は、被制御機器20より機器認証継続IDを含むXMPPログイン情報取得要求<D−0−1>を受信すると(図11:ステップS1001)、このXMPPログイン情報取得要求<D−0−1>に含まれている機器認証継続IDと機器認証継続IDの有効期限のチェックを行う(図11:ステップS1002)。このチェックでXMPPログイン情報取得要求<D−0−1>に含まれている機器認証継続IDが、ダイレクトアクセス管理サーバ40の記憶部41に記憶されているものと一致しない場合、もしくは、有効期限が切れている場合には、被制御機器20が正常にダイレクトアクセス管理サーバ40に登録されていないか、もしくは、過去に登録されていたが登録時の機器認証継続IDの有効期限が切れているのかであるため、機器認証が必要であることを示すエラーコードをXMPPログイン情報取得応答<D−0−1R>として被制御機器20に送信する(図11:ステップS1003)。機器認証継続IDが記憶部41に記憶されており、かつ機器認証継続IDの有効期限が切れていない場合、ダイレクトアクセス管理サーバ40は、記憶部41から、当該機器認証継続IDに紐付けられている被制御機器管理ID及び機器認証情報を検索し(図11:ステップS1004)、これら被制御機器管理IDと機器認証情報から、被制御機器20がXMPPサーバ43にログインするために必要なXMPPログインIDであるFull JID(D)、XMPPログインパスワードおよびXMPPログインパスワードの有効期限の情報を生成し(図11:ステップS1005)、これらを記憶部41に保存する(図11:ステップS1006)。そして、ダイレクトアクセス管理サーバ40は、生成したFull JID(D)、XMPPログインパスワードおよびその有効期限の情報に、XMPPアドレスおよびポート番号、認証方式の情報、SSL(Secure Socket Layer)オプションを加えた情報をXMPPログイン情報取得応答<D−0−1R>として被制御機器20に送信する(図11:ステップS1007)。
被制御機器20は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からFull JID(D)、XMPPログインパスワード等を含むXMPPログイン情報取得応答<D−0−1R>を受信すると(図10:ステップS615)、Full JID(D)、XMPPログインパスワードを含むXMPPログイン認証要求<D−0−2>を、ダイレクトアクセス管理サーバ40内のXMPPサーバ43に送信する(図10:ステップS616)。
ダイレクトアクセス管理サーバ40内のXMPPサーバ43は、被制御機器20よりXMPPログイン認証要求<D−0−2>を受信すると(図11:ステップS1008)、このXMPPログイン認証要求<D−0−2>に含まれているFull JID(D)、XMPPログインパスワードおよびXMPPログインパスワードの有効期限のチェックを行い(図11:ステップS1009)、Full JID(D)が記憶部41に記憶されているものと一致しない、または、XMPPログインパスワードが記憶部41に記憶されているものと一致しない、または、XMPPログインパスワードの有効期限が切れている場合には、XMPPログイン失敗を示すエラーコードをXMPPログイン認証応答<D−0−2R>として被制御機器20に送信する(図11:ステップS1010)。また、Full JID(D)。XMPPログインパスワードおよび有効期限のチェックがすべてOKならば、ダイレクトアクセス管理サーバ40内のXMPPサーバ43は、XMPPログイン許可を示すコードをXMPPログイン認証応答<D−0−2R>として被制御機器20に送信する(図11:ステップS1011)。
被制御機器20は、ダイレクトアクセス管理サーバ40よりXMPPログイン失敗を示すエラーコードをXMPPログイン認証応答<D−0−2R>として受信すると(図10:ステップS619)、ステップS614に戻って、再度XMPPログイン情報の取得要求を行う。すなわち、XMPPログインパスワードの有効期限が切れている可能性があるため、再度、XMPPログイン情報の取得要求処理を行う。また、ダイレクトアクセス管理サーバ40よりXMPPログイン許可を示すコードをXMPPログイン認証応答<D−0−2R>として受信すると(図10:ステップS618)、被制御機器20は、XMPPログイン処理が完了する。
なお、被制御機器20は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、機器認証が必要であることを示すエラーコードをXMPPログイン情報取得応答<D−0−1R>として受信した場合には(図10:ステップS617)、自機が正常にダイレクトアクセス管理サーバ40に登録されていないか、もしくは、機器認証継続IDの有効期限が切れている可能性があるため、再度、自身に予め設定されている認証方式の情報および機器認証情報を含む機器認証要求<R−0>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信して自身の機器認証をやりなおす(図10:ステップS602)。
上記のように、このネットワークシステムでは、ダイレクトアクセス管理サーバ40にて、被制御機器20がXMPPサーバ43にログインするために必要なXMPPログインID(Full JID)及びXMPPログインパスワードをそれぞれ生成し、被制御機器20へ配布している。このFull JIDは、例えば図23に示すように、Bare JID部とResource部とで構成される。Bare JID部には被制御機器に割り当てられた被制御機器管理IDが用いられ、Resource部には機器認証情報から得た製品コード及びシリアルナンバーが用いられている。また、図24に示すように、Resource部には制御機器とサービスの組み合わせを識別するための制御機器・サービス管理IDを用いてもよい。
ところで、ステップS611で自動接続フラグがオンにセットすることにより、被制御機器20は次回の接続時、例えば被制御機器20の電源が一旦オフされ、その後に再投入された時、或いはXMPPサーバ43とのセッション切断後のセッション確立の時には、ステップS601の自動接続フラグのチェックの後、ステップS614のXMPPログイン情報取得要求<D−0−1>の送信から処理を開始する。すなわち、被制御機器20は再接続時には機器認証のための処理、制御機器10からの被制御機器登録用パスワードの取得、被制御機器登録のための処理をスキップしてXMPPログインのための処理に入る。これにより、被制御機器20は再接続時には、XMPPログインのための処理を行うだけで、XMPPサーバ43の間での接続セッションを確立することができる。
以上で、制御機器である制御機器10の制御対象として、被制御機器20を関連付けるための処理が完了する。以下では、関連付けられた2つの機器の間で、制御機器10が被制御機器20からダイレクトアクセスによりコンテンツのデータを取得する際の具体的な処理に関して説明する。
[3.被制御機器からのダイレクトアクセス処理]
図4は被制御機器20からのダイレクトアクセス処理に関するシーケンス図である。被制御機器20からのダイレクトアクセスとは、被制御機器20からのダイレクトアクセスのセッション確立要求を契機に開始されるサービスサーバ30と被制御機器20との間でのダイレクトアクセスである。図5は図4の被制御機器20からのダイレクトアクセス処理時のインタフェース機能をまとめた図表である。図12は被制御機器20からのダイレクトアクセス処理時の制御機器10の動作を示すフローチャートである。図13、図14及び図18は被制御機器20からのダイレクトアクセス処理時のサービスサーバ30の動作を示すフローチャートである。図15及び図16は被制御機器20からのダイレクトアクセス処理時のダイレクトアクセス管理サーバ40の動作を示すフローチャートである。図17は被制御機器20からのダイレクトアクセス処理時の被制御機器20の動作を示すフローチャートである。
まず、制御機器10のユーザがコンテンツを視聴するためのダイレクトアクセスの利用開始の指示を制御機器10に与えると(図12:ステップS801)、制御機器10は自身に予め設定されているユーザ識別情報を含む被制御機器リスト取得要求<D−1>をサービスサーバ30に送信する(図12:ステップS802)。
サービスサーバ30は、制御機器10より被制御機器リスト取得要求<D−1>を受信すると(図13:ステップS901)、この被制御機器リスト取得要求<D−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されているかどうかを判定する(図13:ステップS902)。ユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されていない場合、被制御機器の登録が必要であることを示すエラーコードを被制御機器リスト取得応答<D−3>として制御機器10に送信する(図13:ステップS903)。
一方、被制御機器リスト取得要求<D−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されている場合、サービスサーバ30は、サービスを識別する情報であるサービスIDおよび制御機器・サービス管理IDを含む被制御機器リスト取得要求<D−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図13:ステップS904)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からの被制御機器リスト取得要求<D−2>を受信すると(図15:ステップS1012)、この被制御機器リスト取得要求<D−2>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせがダイレクトアクセス管理サーバ40の記憶部41に記憶されているかどうかを判定し(図15:ステップS1013)、記憶されていない場合には、被制御機器の登録が必要であることを示すエラーコードを被制御機器リスト取得応答<D−2R>としてサービスサーバ30に送信する(図15:ステップS1014)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、上記のエラーコードを被制御機器リスト取得応答<D−2R>として受信した場合は(図13:ステップS905)、そのエラーコードを被制御機器リスト取得応答<D−3>として制御機器10に送信する(図13:ステップS906)。制御機器10は、サービスサーバ30よりエラーコードを被制御機器リスト取得応答<D−3>として受信した場合(図12:ステップS803)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図12:ステップS804)。
また、図15のステップS1013のチェックで、ダイレクトアクセス管理サーバ40内のSOAPサーバ42が、被制御機器リスト取得要求<D−2>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせがダイレクトアクセス管理サーバ40の記憶部41に記憶されていることを判定した場合には、記憶部41に記憶されている制御機器・サービス管理IDと被制御機器管理IDとの紐付け内容に従って、制御機器10から制御可能な被制御機器の被制御機器管理IDに対して改めて振り直した番号と被制御機器の機器認証情報に含まれる機器名称等からなる一覧を被制御機器リストとして生成し、この被制御機器リストを制御機器・サービス管理IDと対応付けて記憶部41に保存するとともに、この被制御機器リストを含む被制御機器リスト取得応答<D−2R>をサービスサーバ30に送信する(図15:ステップS1015)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から被制御機器リストを含む被制御機器リスト取得応答<D−2R>を受信した場合は(図13:ステップS907)、この被制御機器リストを含む被制御機器リスト取得応答<D−3>を制御機器10に送信する(図13:ステップS908)。
制御機器10は、被制御機器リストを含む被制御機器リスト取得応答<D−3>を受信した場合(図12:ステップS805)、その被制御機器リストに複数の被制御機器の番号が存在するかどうかを判定する(図12:ステップS806)。複数の被制御機器の番号が存在する場合には、制御機器10は、その被制御機器リストの内容を表示部に表示して(図12:ステップS807)、ユーザにその中から1つの被制御機器の番号を選択させ(図12:ステップS808)、その選択された被制御機器の番号を記憶部11に保存する(図12:ステップS809,S811)。複数の被制御機器が存在しない場合には、その一つの被制御機器の番号を記憶部11に保存する(図12:ステップS810,S811)。
次に、制御機器10は、被制御機器20に保存されたコンテンツのタイトル、時間、コンテンツIDを含むコンテンツリストを取得する処理を行い(ステップS811−1)、取得したコンテンツリストを、記憶部11に記憶されているユーザ識別情報、被制御機器の番号と関連付けて記憶部11に記憶する。図26にコンテンツリストの例を示す。なお、このコンテンツリストを取得するための具体的な手順については、後で説明する。
制御機器10は、記憶部11に記憶されたコンテンツリストの中から1つのコンテンツIDをユーザに選択させた後、記憶部11に記憶されているユーザ識別情報、被制御機器の番号、 そしてユーザによって選択されたコンテンツIDを含むコンテンツ視聴要求<S−1>をサービスサーバ30に送信する(図12:ステップS812)。
サービスサーバ30は、制御機器10からコンテンツ視聴要求<S−1>を受信すると(図14:ステップS909)、サービスサーバ30が利用可能なXMPPセッションIDが記憶部31に記憶されているか否かを調べる(図14:ステップS910)。サービスサーバ30が利用可能なXMPPセッションIDが記憶されていない場合には、サービスサーバ30は、XMPPサーバ43との間でのXMPPセッションを確立するために、サービスID、制御機器・サービス管理ID、被制御機器の番号を含むXMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図14:ステップS911)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からのXMPPログイン要求<D−5>を受信すると(図11:ステップS1016)、このXMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、および被制御機器の番号の組み合わせが記憶部41に記憶されているかどうかを判定する(図11:ステップS1017)。記憶されていない場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをXMPPログイン応答<D−5R>としてサービスサーバ30に送信する(図11:ステップS1018)。この後、ダイレクトアクセス管理サーバ40の動作は終了となる。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをXMPPログイン応答<D−5R>として受信すると(図14:ステップS912)、そのエラーコードをコンテンツ視聴要求応答<S−1R>として制御機器に送信する(図14:ステップS913)。制御機器10は、このエラーコードをコンテンツ視聴要求応答<S−1R>として受信すると(図12:ステップS813)、サービス対象の被制御機器20の登録が必要であることを示すエラーメッセージを、表示部を通じてユーザに表示する(図12:ステップS814)。
一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、図11:ステップS1017の判定で、サービスサーバ30からのXMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、および被制御機器の番号の組み合わせが記憶部41に記憶されていることを判定した場合には、サービス対象の被制御機器20が登録済みであることを示すので、サービスサーバ30が利用可能なXMPPセッションIDを生成し、このXMPPセッションIDを、XMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部41に保存し(図11:ステップS1019)、このXMPPセッションIDを含むXMPPログイン応答<D−5R>をサービスサーバ30に送信する(図11:ステップS1020)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からXMPPセッションIDを含むXMPPログイン応答<D−5R>を受信すると(図14:ステップS914)、このXMPPログイン応答<D−5R>に含まれるXMPPセッションIDをサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部31に保存する(図14:ステップS915)。
XMPPセッションIDの保存後、または、ステップS910で利用可能なXMPPセッションIDが既に記憶部31に記憶されていることが判定された場合、サービスサーバ30は、ダイレクトアクセスセッションの確立に関するOTP(ワンタイムパスワード)の生成を行い(図14:ステップS916)、生成したOTPを、制御機器10から受信したコンテンツ視聴要求<S−1>と対応付けて記憶部31に保存する(図14:ステップS917)。この後、サービスサーバ30は、被制御機器20からのダイレクトアクセスのセッション受信待ちとなる<S−2>(図14:ステップS918)。
次に、サービスサーバ30は、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN(Uniform Resource Name)、サービスサーバアドレス、 サービスサーバポート番号、OTPを含むコールバック要求<S−3>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図14:ステップS919)。ここで、サービスURNとは、被制御機器20が提供可能なサービス(アプリケーション)の一つを指定する情報である。この例では、コンテンツの視聴サービスとしている。サービスサーバアドレスは、サービスサーバ30をネットワーク上で一意に識別可能なアドレス情報、つまりグローバルIPアドレスである。サービスサーバポート番号は、サービスサーバ30にアクセスするために必要なポート番号である。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からのコールバック要求<S−3>を受信すると(図15:ステップS1021)、このコールバック要求<S−3>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されているかどうかを判定し(図15:ステップS1022)、もし記憶されていない場合には、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをコールバック応答<S−3R>としてサービスサーバ30に送信する(図15:ステップS1023)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをコールバック応答<S−3R>として受信した場合には(図14:ステップS920)、記憶部31から、該当するOTPを破棄し(図14:ステップS921)、被制御機器20からのダイレクトアクセスのセッション受信待ちを終了した後(図14:ステップS921−1)、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをコンテンツ視聴要求応答<S−1R>として制御機器10に送信する(図14:ステップS922)。制御機器10が、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをコンテンツ視聴要求応答<S−1R>として受信した場合の動作は既に説明したとおりである。
また、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、図15:ステップS1022の判定で、コールバック要求<S−3>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されていることを判定した場合には、そのコールバック要求<S−3>に含まれるXMPPセッションIDのチェックを行う。このチェックは、コールバック要求<S−3>に含まれるXMPPセッションID、サービスID、制御機器・サービス管理IDの組み合わせが記憶部41に登録されているかどうかを判定することによって行われる(図15:ステップS1024)。このチェックでNGが判定された場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、不正なXMPPセッションIDが使用されたことを示すエラーコードをコールバック応答<S−3R>としてサービスサーバ30に送信し(図15:ステップS1025)、処理を終了する。
被制御機器20は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、不正なXMPPセッションIDが使用されたことを示すエラーコードをコールバック応答<S−3R>として受信した場合(図14:ステップS923)、記憶部31から、該当するOTPを破棄し(図14:ステップS924)、被制御機器20からのダイレクトアクセスのセッション受信待ちを終了する(図14:ステップS925)。この後、図14:ステップS911に戻って、XMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のXMPPサーバ43に送信する処理からやりなおす。
XMPPセッションIDのチェックでOKが判定された場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30より受信したコールバック要求<S−3>からサービスURN(コンテンツ視聴)、サービスサーバアドレス、 サービスサーバポート番号、OTPを取り出し、これらを含むコールバック要求<S−4>をダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20との間で確立されている常時接続セッションを通じて被制御機器20に送信する(図15:ステップS1026)。
被制御機器20は、コールバック要求<S−4>をダイレクトアクセス管理サーバ40内のXMPPサーバ43より受信すると(図17:ステップS1101)、このコールバック要求<S−4>に含まれるサービスURN(コンテンツ視聴)、サービスサーバアドレス、 サービスサーバポート番号、OTPを記憶部21に保存する(図17:ステップS1102)。次に、被制御機器20は、記憶部21に保存されたサービスURN(コンテンツ視聴)に対応するリクエストパスを取得する(図17:ステップS1103)。ここで、サービスURNに対応するリクエストパスとは、例えば、図25に示すように、被制御機器20がリクエストを受け付けるローカルURIの一部を成す情報であり、リクエストパスによりサービスの種別(コンテンツ視聴)が特定される。被制御機器20の記憶部21には、サービスURNとリクエストパスが対応付けて記憶されている。
続いて、被制御機器20は、取得したリクエストパスをコールバック応答<S−4R>としてダイレクトアクセス管理サーバ40内のXMPPサーバ43に常時接続セッションを通じて送信する(図17:ステップS1104)。ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、XMPPサーバ43を通じて、被制御機器20よりリクエストパスを含むコールバック応答<S−4R>を受信すると(図16:ステップS1031)、このリクエストパスを含むコールバック応答<S−3R>をサービスサーバ30に送信する(図16:ステップS1032)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42よりリクエストパスを含むコールバック応答<S−3R>を受信すると(図14:ステップS926)、このコールバック応答<S−3R>に含まれるリクエストパスをコンテンツ視聴要求<S−1>と対応付けて記憶部31に記憶する(図14:ステップS927)。この後、サービスサーバ30は、コールバック要求<S−3>に用いたサービスID、制御機器・サービス管理ID、XMPPセッションIDを含むXMPPログアウト通知<C−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信した後(図14:ステップS928)、記憶部31に記憶された当該XMPPセッションIDと、これに対応付けて記憶部31に記憶されたサービスID、制御機器・サービス管理ID、被制御機器の番号を消去する(図14:ステップS929)。一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、XMPPログアウト通知<C−5>を受けると、記憶部41に記憶されている、該当するXMPPセッションIDを破棄する(図16:ステップS1041、図16:ステップS1042)。
このように被制御機器20にて、サービスサーバ30のグローバルIPアドレス、ポート番号、OTPを取得する一方、サービスサーバ30にて、被制御機器20に保存されたコンテンツのリクエストパスを取得できたならば、一連のコールバック要求の処理は正常に完了したこととなる。
以上のように、本実施形態では、一連のコールバック要求の処理のためのサービスサーバ30と被制御機器20との間での情報のやりとりを、ダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20との間に確立された常時接続セッションを通じて行うこととしている。
次に、被制御機器20からのダイレクトアクセスの動作を説明する。
今、サービスサーバ30は、被制御機器20からのダイレクトアクセスセッション確立要求の受信待ちの状態にあることとする(図14:ステップS918)。被制御機器20は、サービスサーバ30との間でダイレクトアクセスセッションを確立するために、図17:ステップS1102にて記憶部21に保存されたサービスサーバ30のグローバルIPアドレス及びポート番号をもとに、OTPを含むダイレクトアクセスセッション確立要求<S−6>をサービスサーバ30に送信する(図17:ステップS1105)。
サービスサーバ30は、被制御機器20からOTPを含むダイレクトアクセスセッション確立要求<S−6>を受信すると(図18:ステップS1201)、記憶部31に保存されているOTPの中に受信したOTPと一致するものがあるかを判断する(図18:ステップS1202)。記憶部31に保存されているOTPの中に受信したOTPと一致するものが無いことが判定された場合、サービスサーバ30は、認証に失敗したことを示すコードを含むダイレクトアクセスセッション確立応答<S−6R>を被制御機器20に送信する(図18:ステップS1203)。この後、サービスサーバ30はダイレクトアクセスセッションを切断する(図18:ステップS1204)。
被制御機器20は、サービスサーバ30より、認証がNGであることを示すNGコードを含むダイレクトアクセスセッション確立応答<S−6R>を受信すると(図17:ステップS1106)、記憶部21に保存されているサービスサーバアドレス、サービスサーバポート、OTPを破棄して処理を終了する(図17:ステップS1107)。
一方、サービスサーバ30は、図18:ステップS1202の判定で、記憶部31に保存されているOTPの中に受信したOTPと一致するものが有ることを判定した場合には、ダイレクトアクセスセッション確立要求<S−6>と、上記の一致したOTPに対応するコンテンツ視聴要求<S−1>とを対応付ける(図18:ステップS1205)。すなわち、被制御機器20より受信したダイレクトアクセスセッション確立要求<S−6>に、上記の一致したOTPに対応するコンテンツ視聴要求<S−1>に含まれるユーザ識別情報、被制御機器の番号、コンテンツIDが対応付けられる。これにより、サービスサーバ30からの個々のコールバック要求と、被制御機器20からのダイレクトアクセスのためのセッション確立要求との対応関係をサービスサーバ30にて認識することができ、ダイレクトアクセスのためのセッションを正当な2機器の間で確実に確立することができる。
次に、サービスサーバ30は、認証に成功したことを示すコードを含むダイレクトアクセスセッション確立応答<S−6R>を被制御機器20に送信する(図18:ステップS1206)。これにより、サービスサーバ30と被制御機器20との間でのダイレクトアクセスセッションが確立し(図18:ステップS1207)、サービスサーバ30は記憶部31から上記の一致したOTPを破棄する(図18:ステップS1208)。被制御機器20は、サービスサーバ30より認証に成功したことを示すコードを含むダイレクトアクセスセッション確立応答<S−6R>を受信して、サービスサーバ30からのダイレクトアクセス要求の受信待ちとなる(図17:ステップS1108)。
サービスサーバ30は、記憶部31からのOTPの破棄後、被制御機器20に対して、図14:ステップS926で取得したリクエストパスと、ダイレクトアクセスセッション確立要求<S−6>に対応付けられたコンテンツ視聴要求<S−1>に含まれるコンテンツIDとを含むダイレクトアクセス要求<S−8>を、確立したダイレクトアクセスセッションを通じて被制御機器20に送信する(図18:ステップS1209)。
被制御機器20は、ダイレクトアクセスセッションを通じてサービスサーバ30よりダイレクトアクセス要求<S−8>を受信すると(図17:ステップS1109)、このダイレクトアクセス要求<S−8>に含まれるリクエストパスとコンテンツIDのチェックを行う(図17:ステップS1110)。すなわち、ダイレクトアクセス要求<S−8>に含まれるリクエストパスがコンテンツ視聴サービスに対応する値として記録部21に記録されていて、かつコンテンツIDが記憶部21に記憶されているかどうかをチェックし、記憶されていればOK、記憶されていなければNGを判定する。このチェックでNGが判定された場合、被制御機器20は、ダイレクトアクセスセッションを通じてサービスサーバ30にエラーコードを含むダイレクトアクセス応答<S−8R>を送信し(図17:ステップS1111)、記憶部21に保存されているサービスサーバ30のグローバルIPアドレス及びポート番号、OTPを破棄して処理を終了する(図17:ステップS1107)。
サービスサーバ30は、ダイレクトアクセスセッションを通じて被制御機器20よりエラーコードを含むダイレクトアクセス応答<S−8R>を受信すると(図18:ステップS1210)、エラーコードを含むコンテンツ視聴応答<S−1R>を制御機器10に送信し(図18:ステップS1211)、ダイレクトアクセスセッションを切断する(図18:ステップS1214)。制御機器10はエラーコードを含むコンテンツ視聴応答<S−1R>を受信すると(図12:ステップS813)、このエラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図12:ステップS814)。
また、被制御機器20における図17:ステップS1110でのチェックでOKが判定された場合、被制御機器20は、サービスサーバ30からのダイレクトアクセス要求<S−8>に含まれるリクエストパスとコンテンツIDをもとに記憶部21から該当するコンテンツデータを読み出し、このコンテンツデータをダイレクトアクセス応答<S−8R>として、ダイレクトアクセスセッションを通じてサービスサーバ30に送信する(図17:ステップS1112)。サービスサーバ30は、ダイレクトアクセスセッションを通じて被制御機器20よりコンテンツデータを含むダイレクトアクセス応答<S−8R>を受信すると(図18:ステップS1212)、この受信したコンテンツデータをコンテンツ視聴応答(S−1R)として制御機器に送信する(図18:ステップS1213)。コンテンツデータの送信終了後、サービスサーバ30は、ダイレクトアクセスセッションを切断する(図18:ステップS1214)。制御機器10はコンテンツデータをコンテンツ視聴応答<S−1R>を受信すると(図12:ステップS815)、このコンテンツデータを再生する(図12:ステップS816)。
なお、サービスサーバ30は、図14:ステップS917でのOTPの生成から一定時間が経過しても、その同じOTPを含むダイレクトアクセスセッション確立要求<S−6>が受信されなかった場合には(図18:ステップS1215)、そのOTPを記憶部31から破棄し(図18:ステップS1216)、被制御機器20からのダイレクトアクセスセッション確立要求の受信待ちを終了とする(図18:ステップS1217)。
(コンテンツIDの取得方法)
次に、前述の、制御機器10が被制御機器20に保存されたコンテンツリストを取得するときの手順の例を説明する。図27は制御機器10がコンテンツリストを取得する際のシーケンス図、図28はこのときのインタフェース機能をまとめた図表である。
以下に説明するように、この例では、制御機器10は、被制御機器20に保存されているコンテンツを取得するときと同様の手順で、被制御機器20に保存されているコンテンツリストを取得する。
制御機器10は、サービスサーバ30を通じてダイレクトアクセス管理サーバ40内のSOAPサーバ42から取得した被制御機器リストの中からユーザにより選択された1つの被制御機器の番号を記憶部11に保存した後(図12:ステップS811)、記憶部11に記憶されているユーザ識別情報、被制御機器の番号、及び検索条件を含むコンテンツリスト取得要求<S−1‘>をサービスサーバ30に送信する。ここで、検索条件とは、ユーザが視聴したいコンテンツを絞り込むためにユーザによって指定された条件である。
サービスサーバ30は、制御機器10からコンテンツリスト取得要求<S−1‘>を受信すると、XMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。サービスサーバ30は、XMPPログイン要求<D−5>に対する応答としてXMPPセッションIDを含むXMPPログイン応答<D−5R>を受信すると、ダイレクトアクセスセッションの確立に関するOTPを生成し、被制御機器20からのダイレクトアクセスのセッション受信待ちとなる<S−2>。ここで、サービスサーバ30からダイレクトアクセス管理サーバ40内のSOAPサーバ42へのXMPPログイン要求<D−5>の送信から、サービスサーバ30が被制御機器20からのダイレクトアクセスのセッション受信待ちとなる<S−2>までの動作は、コンテンツ視聴要求時のそれと同じであるので、説明は省略する。
この後、サービスサーバ30は、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN(コンテンツリスト取得)、サービスサーバアドレス、 サービスサーバポート番号、OTPを含むコールバック要求<S−3>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
このコールバック要求<S−3>を受信したダイレクトアクセス管理サーバ40内のSOAPサーバ42は、コンテンツ視聴要求時と同様に、サービスIDと制御機器・サービス管理IDとの組み合わせのチェック、XMPPセッションIDのチェックを順次行い、各チェックともOKならば、サービスサーバ30より受信したコールバック要求<S−3>からサービスURN(コンテンツリスト取得)、サービスサーバアドレス、 サービスサーバポート番号、OTPを取り出し、これらを含むコールバック要求<S−4>をダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20との間で確立されている常時接続セッションを通じて被制御機器20に送信する。なお、上記のチェックの結果としてNGが判定された場合の動作はコンテンツ視聴要求時のそれと同じであるので、説明は省略する。
被制御機器20は、ダイレクトアクセス管理サーバ40内のXMPPサーバ43よりコールバック要求<S−4>を受信すると、このコールバック要求<S−4>に含まれるサービスURN(コンテンツリスト取得)、サービスサーバアドレス、 サービスサーバポート番号、OTPを記憶部21に保存し、このサービスURN(コンテンツリスト取得)に対応するリクエストパスを取得する。
この後、被制御機器20が、取得したリクエストパスをコールバック応答<S−4R>としてダイレクトアクセス管理サーバ40内のXMPPサーバ43に常時接続セッションを通じて送信する処理から、サービスサーバ30が被制御機器20からのダイレクトアクセスセッション確立要求<S−6>を受けて被制御機器20との間でのダイレクトアクセスセッションが確立し、ダイレクトアクセスセッション確立応答<S−6R>を被制御機器20に送信する処理するまでの動作は、コンテンツ視聴要求時と同じである。
この後、サービスサーバ30は、被制御機器20に対して、取得済みのリクエストパスと、ダイレクトアクセスセッション確立要求<S−6>に対応付けられたコンテンツリスト取得要求<S−1‘>に含まれる検索条件を含むダイレクトアクセス要求<S−8>を、確立したダイレクトアクセスセッションを通じて被制御機器20に送信する。
被制御機器20は、ダイレクトアクセスセッションを通じてサービスサーバ30よりダイレクトアクセス要求<S−8>を受信すると、このダイレクトアクセス要求<S−8>に含まれるリクエストパスと検索条件をもとに記憶部21から該当するコンテンツリストを読み出し、このコンテンツリストをダイレクトアクセス応答<S−8R>として、ダイレクトアクセスセッションを通じてサービスサーバ30に送信する。
サービスサーバ30は、ダイレクトアクセスセッションを通じて被制御機器20よりコンテンツリストを含むダイレクトアクセス応答<S−8R>を受信すると、この受信したコンテンツリストをコンテンツリスト取得応答(S−1‘R)として制御機器10に送信する。コンテンツリストの送信終了後、サービスサーバ30は、ダイレクトアクセスセッションを切断する。このようにして被制御機器20はコンテンツリストを取得し、この後、前述したように、この取得したコンテンツリストをユーザ識別情報、被制御機器の番号と関連付けて記憶部11に記憶し、コンテンツ視聴要求<S−1>を送信するための処理へ移行する。
以上説明したように、本実施形態のネットワークシステム100によれば、グローバルIPアドレスが割り当てられているサービスサーバ30のグローバルIPアドレス及びポート番号を被制御機器20の側に通知し、被制御機器20の側から、そのグローバルIPアドレス及びポート番号をもとにサービスサーバ30に接続してダイレクトアクセスのためのセッション確立を要求するので、被制御機器20にグローバルIPアドレスを割り当てることができる環境の有無に関わらず、サービスサーバ30と被制御機器20との間にダイレクトアクセスのセッションを確立することができる。これにより、ダイレクトアクセス管理サーバ40を経由してトンネリングモードでサービスサーバ30と被制御機器20との間で大容量データを転送しなければならない状況が無くなり、ダイレクトアクセス管理サーバ40の負担減を図ることができる。また、本実施形態のネットワークシステム100によれば、被制御機器20にグローバルIPアドレスを割り当てる必要が無いので、ルータ50のポートフォワード設定が不要になる。
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。
第1の実施形態では、サービスサーバ30と被制御機器20とのダイレクトアクセスセッションを確立することとしたが、第2の実施形態は、制御機器10と被制御機器20とのダイレクトアクセスセッションを確立する場合を想定したものである。さらに、第2の実施形態は、制御機器10にグローバルIPアドレスが割り当てられることが保証されていない環境を前提としている。この実施形態では、制御機器10が第1の機器に相当し、被制御機器20は第2の機器に相当する。
図19乃至図21は、第2の実施形態のネットワークシステムにおいて発生し得るダイレクトアクセス処理に関する3つのパターンのシーケンス図である。
まず、図19乃至図21において、制御機器10のユーザが、コンテンツを視聴するためのダイレクトアクセスの利用開始の指示を制御機器10に与えると、制御機器10は自身に予め設定されているユーザ識別情報と、サービスサーバ30より予め取得しておいたサービスを識別する情報であるサービスIDおよび制御機器・サービス管理IDを含む被制御機器リスト取得要求<D−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、制御機器10からの被制御機器リスト取得要求<D−1>を受信すると、この被制御機器リスト取得要求<D−1>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせがダイレクトアクセス管理サーバ40の記憶部41に記憶されているかどうかを判定し、記憶部41に記憶されている制御機器・サービス管理IDと被制御機器管理IDとの紐付け内容に従って、制御機器10から制御可能な被制御機器の被制御機器管理IDに対して改めて振り直した番号と被制御機器の機器認証情報に含まれる機器名称等からなる一覧を被制御機器リストとして生成し、この被制御機器リストを制御機器・サービス管理IDと対応付けて記憶部41に保存するとともに、この被制御機器リストを含む被制御機器リスト取得応答<D−2R>を制御機器10に送信する。
制御機器10は、被制御機器リストを含む被制御機器リスト取得応答<D−2R>を受信すると、有効なダイレクトアクセス処理を判定する処理を次のように行う。
図22は、この有効なダイレクトアクセス処理の判定処理の手順を示すフローチャートである。まず、制御機器10は、グローバルIPアドレスを利用可能であるかどうかを判定する(図22:ステップS1301)。グローバルIPアドレスを利用可能ならば、制御機器10は被制御機器20からのダイレクトアクセス処理を有効とすることを判定する(図22:ステップS1302)。つまり、制御機器10が直接外部のネットワークに接続されているような場合には、グローバルIPアドレスを利用可能であり、この場合には被制御機器20からのダイレクトアクセス処理を有効とすることが判定される。グローバルIPアドレスを利用不可ならば、次に、制御機器10は、この制御機器10を外部ネットワークに接続するルータ(図示せず)にアクセスしてグローバルIPアドレスとポート番号の取得を試みる(図22:ステップS1303)。ここで、制御機器10がルータを通じて外部のネットワークに接続されている環境である場合には、制御機器10はグローバルIPアドレスとポート番号を取得することが可能であり、制御機器10は被制御機器20からのダイレクトアクセス処理を有効とすることを判定する(図22:ステップS1304)。ルータが存在しない、あるいは、ルータからのグローバルIPアドレスとポート番号の取得に失敗した場合には、制御機器10は制御機器10からのダイレクトアクセス処理を有効とすることを判定する(図22:ステップS1305)。
図19は、図22のステップ1301にて制御機器10がグローバルIPアドレスを利用可能であることが判定された場合のステップ1302での被制御機器20からのダイレクトアクセス処理に関するシーケンス図である。
制御機器10は、被制御機器20に保存されたコンテンツのタイトル、時間、コンテンツIDを含むコンテンツリストを取得する処理を行って、ユーザ識別情報、被制御機器の番号と関連付けて記憶部11に記憶する。
制御機器10は、記憶部11に記憶されたコンテンツリストの中から1つのコンテンツIDをユーザに選択させた後、記憶部11に記憶されているユーザ識別情報、被制御機器の番号、 そしてユーザによって選択されたコンテンツIDを含むコンテンツ視聴要求がユーザより入力されると、制御機器10が利用可能なXMPPセッションIDが記憶部11に記憶されているか否かを調べ、記憶されていない場合には、制御機器10とXMPPサーバ43との間でXMPPセッションが未だ確立されていないことを示すので、制御機器10は、XMPPサーバ43との間でのXMPPセッションを確立するために、サービスID、制御機器・サービス管理ID、被制御機器の番号を含むXMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、制御機器10からのXMPPログイン要求<D−5>を受信すると、このXMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、および被制御機器の番号の組み合わせが記憶部41に記憶されているかどうかを判定し、記憶されている場合には、サービス対象の被制御機器20が登録済みであることを示すので、制御機器10が利用可能なXMPPセッションIDを生成し、このXMPPセッションIDを、XMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部41に保存し、このXMPPセッションIDを含むXMPPログイン応答<D−5R>を制御機器10に送信する。
制御機器10は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からXMPPセッションIDを含むXMPPログイン応答<D−5R>を受信すると、このXMPPログイン応答<D−5R>に含まれるXMPPセッションIDをサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部11に保存する。制御機器10は、XMPPセッションIDの保存後、または、利用可能なXMPPセッションIDが既に記憶部11に記憶されている場合、ダイレクトアクセスセッションの確立に関するOTP(ワンタイムパスワード)の生成を行い、生成したOTPを、コンテンツ視聴要求<S−1>と対応付けて記憶部11に保存する。この後、制御機器10は、被制御機器20からのダイレクトアクセスのセッション受信待ちの状態となる<S−2>。
次に、制御機器10は、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN(コンテンツ視聴)、制御機器10のグローバルIPアドレス及びポート番号、OTPを含むコールバック要求<S−3>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、制御機器10からのコールバック要求<S−3>を受信すると、このコールバック要求<S−3>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されているかどうかを判定し、記憶されていることを判定した場合には、そのコールバック要求<S−3>に含まれるXMPPセッションIDのチェックを行う。このチェックは、コールバック要求<S−3>に含まれるXMPPセッションID、サービスID、制御機器・サービス管理IDの組み合わせが記憶部41に登録されているかどうかを判定することによって行われる。このチェックでOKが判定された場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、制御機器10より受信したコールバック要求<S−3>からサービスURN(コンテンツ視聴)、制御機器10のグローバルIPアドレス及びポート番号、 OTPを取り出し、これらを含むコールバック要求<S−4>をダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20との間で確立されている常時接続セッションを通じて被制御機器20に送信する。
被制御機器20は、コールバック要求<S−4>をダイレクトアクセス管理サーバ40内のXMPPサーバ43より受信すると、このコールバック要求<S−4>に含まれるサービスURN(コンテンツ視聴)、制御機器10のグローバルIPアドレス及びポート番号、OTPを記憶部21に保存する。次に、被制御機器20は、記憶部21に保存されたサービスURN(コンテンツ視聴)に対応するリクエストパスを取得する。
続いて、被制御機器20は、取得したリクエストパスをコールバック応答<S−4R>としてダイレクトアクセス管理サーバ40内のXMPPサーバ43に常時接続セッションを通じて送信する。ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、XMPPサーバ43を通じて、被制御機器20よりリクエストパスを含むコールバック応答<S−4R>を受信すると、このリクエストパスを含むコールバック応答<S−3R>を制御機器10に送信する。
制御機器10は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42よりリクエストパスを含むコールバック応答<S−3R>を受信すると、このコールバック応答<S−3R>に含まれるリクエストパスをコンテンツ視聴要求<S−1>と対応付けて記憶部11に記憶する。この後、制御機器10は、コールバック要求<S−3>に用いたサービスID、制御機器・サービス管理ID、XMPPセッションIDを含むXMPPログアウト通知<C−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信した後、記憶部31に記憶された当該XMPPセッションIDと、これに対応付けて記憶部31に記憶されたサービスID、制御機器・サービス管理ID、被制御機器の番号を消去する。一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、XMPPログアウト通知<C−5>を受けると、記憶部41に記憶されている、該当するXMPPセッションIDを破棄する。
次に、被制御機器20からのダイレクトアクセスの動作を説明する。
今、制御機器10は、被制御機器20からのダイレクトアクセスセッション確立要求の受信待ちの状態にある。被制御機器20は、前述したようにリクエストパスをコールバック応答<S−4R>としてダイレクトアクセス管理サーバ40内のSOAPサーバ42に常時接続セッションを通じて送信した後、制御機器10との間でダイレクトアクセスセッションを確立するために、記憶部21に保存された制御機器10のグローバルIPアドレスとポート番号をもとに、OTPを含むダイレクトアクセスセッション確立要求<S−6>を制御機器10に送信する。
制御機器10は、被制御機器20からOTPを含むダイレクトアクセスセッション確立要求<S−6>を受信すると、記憶部11に保存されているOTPの中に受信したOTPと一致するものがあるかを判断し、一致するものが有ることを判定した場合には、ダイレクトアクセスセッション確立要求<S−6>と、上記の一致したOTPに対応するコンテンツ視聴要求<S−1>とを対応付ける。すなわち、被制御機器20より受信したダイレクトアクセスセッション確立要求<S−6>に、上記の一致したOTPに対応するコンテンツ視聴要求<S−1>に含まれるユーザ識別情報、被制御機器の番号、コンテンツIDが対応付けられる。
次に、制御機器10は、認証に成功したことを示すコードを含むダイレクトアクセスセッション確立応答<S−6R>を被制御機器20に送信する。これにより、制御機器10と被制御機器20との間でのダイレクトアクセスセッションが確立し、制御機器10は、記憶部11から上記の一致したOTPを破棄する。この後、被制御機器20は、制御機器10より認証に成功したことを示すコードを含むダイレクトアクセスセッション確立応答<S−6R>を受信して、制御機器10からのダイレクトアクセス要求の受信待ちとなる。
制御機器10は、記憶部11からのOTPの破棄後、被制御機器20に対して、リクエストパスと、ダイレクトアクセスセッション確立要求<S−6>に対応付けられたコンテンツ視聴要求<S−1>に含まれるコンテンツIDとを含むダイレクトアクセス要求<S−8>を、ダイレクトアクセスセッションを通じて被制御機器20に送信する。
被制御機器20は、ダイレクトアクセスセッションを通じて制御機器10よりダイレクトアクセス要求<S−8>を受信すると、このダイレクトアクセス要求<S−8>に含まれるリクエストパスとコンテンツIDのチェックを行う。すなわち、ダイレクトアクセス要求<S−8>に含まれるリクエストパスとコンテンツIDとの組み合わせが記憶部21に記憶されているかどうかをチェックし、記憶されていればOK、記憶されていなければNGを判定する。このチェックでOKが判定された場合、被制御機器20は、制御機器10からのダイレクトアクセス要求<S−8>に含まれるリクエストパスとコンテンツIDをもとに記憶部21から該当するコンテンツデータを読み出し、このコンテンツデータをダイレクトアクセス応答<S−8R>として、ダイレクトアクセスセッションを通じて制御機器10に送信する。制御機器10は、ダイレクトアクセスセッションを通じて被制御機器20よりコンテンツデータを含むダイレクトアクセス応答<S−8R>を受信すると、このコンテンツデータを再生し、コンテンツデータの受信終了後、ダイレクトアクセスセッションを切断する。
図20は、図22のステップ1301にて制御機器10がグローバルIPアドレスを利用不可であることが判定され、かつ図22のステップ1303にて制御機器10がルータよりグローバルIPアドレスとポート番号の取得できた場合のステップ1304での被制御機器20からのダイレクトアクセスを含むシーケンス図である。
この場合、被制御機器20からのダイレクトアクセス処理に関する動作は、図19のそれと基本的には同じであるが、以下の点が異なる。制御機器10がコールバック要求<S−3>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する際、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN(コンテンツ視聴)に加えて、ルータより取得した制御機器10のグローバルIPアドレスとポート番号をコールバック要求<S−3>に入れて送信する。また、ステップ1304での被制御機器20からのダイレクトアクセス終了後に、制御機器10がルータにアクセスしてポートのクローズを実行させる(図22:ステップS1306)、という処理が必要になる。
図21は、図22のステップ1301にて制御機器10がグローバルIPアドレスを利用不可であることが判定され、かつ図22のステップ1303にて制御機器10がルータよりグローバルIPアドレスとポート番号の取得できない場合のステップ1305での制御機器10からのダイレクトアクセス処理に関するシーケンス図である。
なお、このシーケンス図では、被制御機器20にてルータ50よりグローバルIPアドレスとポート番号を取得できた場合の制御機器10からのダイレクトアクセスを想定している。
制御機器10にて、ユーザ識別情報、被制御機器の番号を含むコンテンツ視聴要求<S−1>が発生すると、制御機器10は、制御機器10が利用可能なXMPPセッションIDが記憶部11に記憶されているか否かを調べ、記憶されていない場合には、制御機器10とXMPPサーバ43との間でXMPPセッションが未だ確立されていないことを示すので、制御機器10は、XMPPサーバ43との間でのXMPPセッションを確立するために、サービスID、制御機器・サービス管理ID、被制御機器の番号を含むXMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、制御機器10からのXMPPログイン要求<D−5>を受信すると、このXMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、および被制御機器の番号の組み合わせが記憶部41に記憶されているかどうかを判定し、記憶されている場合には、サービス対象の被制御機器20が登録済みであることを示すので、制御機器10が利用可能なXMPPセッションIDを生成し、このXMPPセッションIDを、XMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部41に保存し、このXMPPセッションIDを含むXMPPログイン応答<D−5R>を制御機器10に送信する。
制御機器10は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からXMPPセッションIDを含むXMPPログイン応答<D−5R>を受信すると、このXMPPログイン応答<D−5R>に含まれるXMPPセッションIDをサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部11に保存する。制御機器10は、XMPPセッションIDの保存後、または、利用可能なXMPPセッションIDが既に記憶部11に記憶されている場合、被制御機器20との間にダイレクトアクセスのためのセッションを確立するために、サービスID、制御機器・サービス管理ID、サービスURN(コンテンツ視聴)、XMPPセッションIDを含むダイレクトアクセス開始要求<D−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、制御機器10よりダイレクトアクセス開始要求<D−6>を受信すると、ダイレクトアクセス用URIの取得要求<D−7>をダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20との間で確立されている常時接続セッションを通じて被制御機器20に送信する。被制御機器20は、ダイレクトアクセス管理サーバ40内のXMPPサーバ43からのダイレクトアクセス用URIの取得要求<D−7>に応じて、ダイレクトアクセス用のローカルポートの割り当てを行い、被制御機器20にあらかじめ割り当てられたローカルIPアドレスおよびダイレクトアクセス用のローカルポートのポート番号を含む、ダイレクトアクセス用ポートのNAT(Network Address Translation)設定要求をルータ50に送信して、ローカルIPアドレス及びポート番号に、インターネットからアクセス可能なグローバルIPアドレスおよびポート番号をマッピングすることをルータ50に要求する。
被制御機器20は、ルータ50より、被制御機器20のローカルIPアドレス及びポート番号に対応付けられたグローバルIPアドレスおよびポート番号をNAT設定応答として受信し、これらのグローバルIPアドレスおよびポート番号を用いてダイレクトアクセス用URIリストを作成し、このダイレクトアクセス用URIをダイレクトアクセス管理サーバ40内のXMPPサーバ43に送信する。ダイレクトアクセス用URIとは、制御機器10からネットワークを通じて被制御機器20に直接アクセスするためのURIである。ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、XMPPサーバ43を通じて、ダイレクトアクセス用URIを受信すると、これをダイレクトアクセス開始応答として制御機器10に送信する。
制御機器10は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より受信したダイレクトアクセス用URIを取得すると、そのダイレクトアクセス用URIに対してアクセスして、コンテンツIDを含むコンテンツ視聴要求をダイレクトアクセス要求<D−11>として被制御機器20に送信する。
被制御機器20は、制御機器10からコンテンツIDを含むコンテンツ視聴要求をダイレクトアクセス要求<D−11>として受信すると、ダイレクトアクセス用URI、およびコンテンツIDの正当性チェックを行い、正当な値である場合は、コンテンツIDで指定されているコンテンツのデータを制御機器10に送信する。
制御機器10は、被制御機器20からコンテンツのデータを受信すると、このコンテンツデータを再生し、コンテンツデータの受信終了後、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN(コンテンツ視聴)、ダイレクトアクセス用URIを含むダイレクトアクセス終了通知<C−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。ダイレクトアクセス管理サーバ40は、ダイレクトアクセス終了通知<C−2>を受信すると、サービスURN(コンテンツ視聴)とダイレクトアクセス用URIを含むダイレクトアクセス終了通知<C−3>を被制御機器20に送信する。被制御機器20は、ダイレクトアクセス終了通知<C−3>を受信すると、指定されたダイレクトアクセス用URIに関するグローバルIPアドレスおよびポート番号を含むダイレクトアクセス用ポートをクローズ<C−4>する。
一方、制御機器10は、ダイレクトアクセス終了通知<C−2>を送信後、サービスID、制御機器・サービス管理ID、XMPPセッションIDを含むXMPPログアウト通知<C−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。最後に制御機器10は、XMPPセッションIDのエントリを消去する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスID、制御機器・サービス管理ID、XMPPセッションIDを含むXMPPログアウト通知<C−5>を受信すると、記憶部41に記憶されている、該当するXMPPセッションIDを破棄する。
なお、コンテンツ視聴要求前のコンテンツリスト取得処理は、図19乃至図21に示したダイレクトアクセス処理の3つのパターンのそれぞれにおいて、そのパターンのコンテンツ視聴要求時と同様の手順で行われる。コンテンツ視聴要求時との主な相違点は、コンテンツリスト取得要求時には、コンテンツIDに代えて検索条件がユーザによって指定される点、サービスURNにはコンテンツ視聴のサービスURNに代えてコンテンツリスト取得のサービスURNが指定される点、被制御機器20では、受信したコンテンツリスト取得要求(ダイレクトアクセス要求)に含まれる検索条件をもとに記憶部21から該当するコンテンツリストを読み出し、このコンテンツリストをダイレクトアクセス応答として送信する点である。
以上説明したように、この第2の実施形態では、制御機器10のグローバルIPアドレスとポート番号を特定可能である場合には、この制御機器10のグローバルIPアドレス及びポート番号を含むコールバック要求を制御機器10からダイレクトアクセス管理サーバ40が提供する常時接続セッションを通じて被制御機器20に送信することによって、被制御機器20が、制御機器10のグローバルIPアドレス及びポート番号をもとに制御機器10に接続してダイレクトアクセスセッションの確立を要求することによってダイレクトアクセスセッションを確立することができる。一方、制御機器10のグローバルIPアドレス及びポート番号を特定できない場合には、制御機器10がダイレクトアクセス管理サーバ40が提供する常時接続セッションを通じて被制御機器20のグローバルIPアドレス及びポート番号を取得し、この取得したグローバルIPアドレス及びポート番号をもとに被制御機器20に接続してダイレクトアクセスを行うこととしている。したがって、制御機器10のグローバルIPアドレスとポート番号を特定できる保証がない環境においても、第1の機器と第2の機器との間でダイレクトアクセスが可能な状況を高い確率で提供することができる。すなわち、サーバ装置を経由したトンネリングモードでの通信は、第1の機器と第2の機器の双方がともにグローバルIPアドレス及びポート番号を特定できない状況にのみ発生するまでに止められる。
以上の各実施形態では、サービスURNがコンテンツの視聴である場合について説明したが、本発明はこれに限定されるものではなく、制御機器10またはサービスサーバ30と被制御機器20との間で、リアルタイムかつ大容量のデータを転送するアプリケーションに応用可能である。例えば、被制御機器20からサービスサーバ30へのデータ伝送として、記録機器(被制御機器20)にて蓄積済みの静止画や音楽等のコンテンツを、携帯電話やPC(Personal Computer)等の制御機器10に送ったり、被制御機器20のログデータをサービスサーバ30にアップロードして機器の不良解析に役立てる等の応用がある。また、制御機器10から被制御機器20へのデータ伝送にも本発明は適用可能である。例えば、携帯電話等の制御機器10で撮影した動画や写真、さらにはダウンロードした音楽等のコンテンツを記録機器(被制御機器20)に送って記録したり、携帯電話(制御機器10)に保存されたアドレス帳等の記録機器(被制御機器20)に送ってバックアップとして保存する等の応用がある。
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。