(57)【要約】【課題】  仲介者であるＷｅｂサービス用ノード装置（Ｗｅｂサービスクライアント）が、ＷＳＤＬで記述された定義にかかわらず、ＸＭＬ署名・暗号を含むデータを仲介できるようにする。【解決手段】  Ｗｅｂサービスサーバ１２０のインタフェース定義情報１０１と、署名・暗号定義１０２とを格納する記憶装置１００から、Ｗｅｂサービスクライアント２２０を対象とするインタフェース定義情報および署名暗号定義情報を取得するステップと、取得したインタフェース定義情報および署名暗号定義情報を満たすクライアント側インタフェース部２２２を設定するステップと、取得した署名・暗号定義情報を満たすサービス側署名・暗号処理部１２３を設定するステップとをコンピュータに実行させ、Ｗｅｂサービス用ノード装置のプログラミングを行う構成とした。【選択図】  図２
2006164018.tif 000002
【特許請求の範囲】
【請求項１】
ＸＭＬ署名・暗号の処理を行うＷｅｂサービス用ノード装置が、
他のＷｅｂサービス用ノード装置から、１以上の前記ＸＭＬ署名および１以上のＸＭＬ暗号の少なくとも一方を含むＸＭＬ署名・暗号データと、前記ＸＭＬ署名・暗号データの署名または暗号の対象となるノード装置名とを含むＸＭＬ文書を受信するステップと、
前記受信したＸＭＬ文書のＸＭＬ署名・暗号データのうち、自身のノード装置を対象とするＸＭＬ署名・暗号データの署名検証および暗号復号を行うステップとを実行し、
前記受信したＸＭＬ文書のＸＭＬ署名・暗号データのうち、自身のノード装置を対象としないＸＭＬ署名・暗号データは、署名検証および暗号復号は行わないことを特徴とするＸＭＬ署名・暗号の処理方法。
【請求項２】
コンピュータに、請求項１に記載のＸＭＬ署名・暗号の処理方法を実行させることを特徴とするＸＭＬ署名・暗号処理用プログラム。
【請求項３】
他のＷｅｂサービス用ノード装置から送信されるＸＭＬ文書を受信し、このＸＭＬ文書に含まれるＸＭＬ署名・暗号処理を行うＷｅｂサービス用ノード装置であって、
前記他のＷｅｂサービス用ノード装置から、１以上の前記ＸＭＬ署名および１以上のＸＭＬ暗号の少なくとも一方を含むＸＭＬ署名・暗号データと、前記ＸＭＬ署名・暗号データの署名または暗号の対象となるノード装置名とを含むＸＭＬ文書を受信するとともに、前記受信したＸＭＬ文書のＸＭＬ署名・暗号データのうち、自身のノード装置を対象とするＸＭＬ署名・暗号データの署名検証および暗号復号を行う署名暗号処理部を含むことを特徴とするＷｅｂサービス用ノード装置。
【請求項４】
コンピュータを、他のＷｅｂサービス用ノード装置から１以上の前記ＸＭＬ署名および１以上のＸＭＬ暗号の少なくとも一方を含むＸＭＬ署名・暗号データと、前記ＸＭＬ署名・暗号データの署名または暗号の対象となるノード装置名を含むＸＭＬ文書を受信するとともに、前記受信したＸＭＬ文書のＸＭＬ署名・暗号データのうち、自身のノード装置を対象とするＸＭＬ署名・暗号データの署名検証および暗号復号を行うＷｅｂサービス用ノード装置として機能させるコンピュータプログラムの生成方法であって、
前記プログラムを生成するコンピュータが、
ネットワーク経由で、前記他のＷｅｂサービス用ノード装置のインタフェース定義情報と、ＸＭＬ署名およびＸＭＬ暗号処理の定義情報である署名暗号定義情報とを格納する記憶装置から、自身のノード装置を対象とするインタフェース定義情報および署名暗号定義情報を取得するステップと、
前記取得したインタフェース定義情報および署名暗号定義情報を満たす前記Ｗｅｂサービス用ノード装置のインタフェースを生成するステップと、
前記取得した署名暗号定義情報を満たす前記Ｗｅｂサービス用ノード装置の署名暗号処理モジュールを生成するステップと、
を実行することを特徴とするコンピュータプログラムの生成方法。
【請求項５】
前記取得したインタフェース定義情報および署名暗号定義情報を満たす前記Ｗｅｂサービス用ノード装置のインタフェースを生成するステップは、
前記取得したインタフェース定義情報を、前記Ｗｅｂサービス用ノード装置以外を対象とした署名の付された暗号データは、前記暗号データと署名とを一緒に扱い、前記Ｗｅｂサービス用ノード装置以外を対象とした暗号データは、前記暗号データをそのまま扱うためのインタフェースに書き換えた前記Ｗｅｂサービス用ノード装置用のインタフェース定義情報を生成するステップと、
前記Ｗｅｂサービス用ノード装置用のインタフェース定義情報を、記憶装置に記憶するステップと、
前記記憶装置のＷｅｂサービス用ノード装置用のインタフェース定義情報を読み出し、このＷｅｂサービス用ノード装置用のインタフェース定義情報に基づくインタフェースを生成するステップと、
を含むことを特徴とする請求項４に記載のコンピュータプログラムの生成方法。
【請求項６】
コンピュータに、請求項４または請求項５に記載のコンピュータプログラムの生成方法を実行させることを特徴とするプログラム。
【請求項７】
他のＷｅｂサービス用ノード装置から送信されるＸＭＬ文書のＸＭＬ署名・暗号処理を行うＷｅｂサービス用ノード装置のプログラミング装置であって、
ネットワーク経由で、前記他のＷｅｂサービス用ノード装置のインタフェース定義情報およびＸＭＬ署名・暗号処理の定義情報である署名暗号定義情報を格納する記憶装置から、前記インタフェース定義情報および署名暗号定義情報を取得するとともに、前記取得したインタフェース定義情報を、前記Ｗｅｂサービス用ノード装置以外を対象として署名の付された暗号データは、前記暗号データと署名とを一緒に扱い、前記Ｗｅｂサービス用ノード装置以外を対象とした暗号データは、前記暗号データをそのまま扱う前記Ｗｅｂサービス用ノード装置用のインタフェース定義情報に変換するインタフェース定義変換部と、
前記変換したインタフェース定義情報に基づき、前記Ｗｅｂサービス用ノード装置用のインタフェースを生成するインタフェース生成部と、
前記記憶装置から、前記署名暗号定義情報を取得し、前記署名暗号定義情報を前記Ｗｅｂサービス用ノード装置用の署名暗号定義情報に変換する署名暗号定義変換部と、
前記変換した署名暗号定義情報に基づき、前記Ｗｅｂサービス用ノード装置用の署名暗号処理部のプログラムを生成する署名暗号処理部生成部と、
を備えることを特徴とするＷｅｂサービス用ノード装置のプログラミング装置。
【請求項８】
請求項３に記載のＷｅｂサービス用ノード装置および請求項７に記載のプログラミング装置を含むことを特徴とするＸＭＬ署名・暗号処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ署名・暗号の処理方法、ＸＭＬ署名・暗号処理用プログラム、Ｗｅｂサービス用ノード装置、コンピュータプログラムの生成方法、プログラム、プログラミング装置、ＸＭＬ署名・暗号処理システムに関する。
【背景技術】
【０００２】
ネットワーク上で提供されるＷｅｂサービスは、サービスの提供するインタフェースをＷＳＤＬ（Web Services Description Language）と呼ばれるインタフェース記述言語を使って記述する。
【０００３】
このＷＳＤＬとは、Ｗｅｂサービスを記述するための、ＸＭＬ（Extensible Markup Language）をベースとした言語仕様であり、Ｗｅｂサービスは、Ｗｅｂサービスのインタフェース、つまりクライアントがＷｅｂサービスを正しく呼び出すために、それがどのようなコマンドを持っており、そのコマンドを実行するために、どのようなパラメータをどのような形式で与えるかを定義している。Ｗｅｂサービスのユーザは、サービスの提供者（またはＷｅｂサーバ）からＷＳＤＬで記述された定義情報を入手して、サービスのインタフェースを知ることができる。
【０００４】
また、ＷＳＤＬで記述された定義情報から、Ｊａｖａ（登録商標）等のプログラム言語とのインタフェースマッピングを生成することも可能である。Ｗｅｂサービスにおいてデータの送信をする側は、ＷＳＤＬで記述された定義情報を参照して、送信するメッセージを作成する。また、Ｗｅｂサービスにおいてデータを受信する側は、ＷＳＤＬで記述された定義情報を参照して、受信したメッセージを解釈する。
【０００５】
ここで、Ｗｅｂサービスのメッセージに用いられるＸＭＬ文書に対する署名および暗号化の方法として、ＸＭＬ署名およびＸＭＬ暗号（ＸＭＬ署名・暗号）と呼ばれる技術が、Ｗ３Ｃ（World Wide Web Consortium）という標準化団体により標準化されている。
【０００６】
これらの技術では、ＸＭＬの部分文書に対する署名および暗号化が可能であり、同じＸＭＬ文書内で複数の署名および暗号を扱うことも可能である。ここで、Ｗｅｂサービスにおいて署名および暗号を利用する場合、ＸＭＬ署名・暗号を利用するＷＳ−Ｓｅｃｕｒｉｔｙ２００４という仕様が、ＯＡＳＩＳ（Organization for Advancement of Structured Information Standards）という標準化団体により標準化されている。このＷＳ−Ｓｅｃｕｒｉｔｙ２００４では、ＳＯＡＰ（Simple Object Access Protocol）ヘッダを使うことにより、メッセージに対して署名および暗号処理の順番や対象を明確に定義することができる。
【０００７】
前記したとおり、Ｗｅｂサービスのデータ送信者は、ＷＳＤＬによるインタフェース定義に従い、ＸＭＬ文書のメッセージを作成する。その後、作成したＸＭＬ文書に対し、署名および暗号を適用するが、このときＸＭＬ文書の文書構造が変化し、ＷＳＤＬで記述されたインタフェースの定義と、実際に送受信されるメッセージの形式は、異なったものになる可能性がある。
【０００８】
ここで、ＷｅｂサービスサーバとＷｅｂサービスクライアントとが１対１で通信する場合は、送信者がメッセージに付与するＸＭＬ署名・暗号の対象者は、メッセージの受信者と同じである。
【０００９】
すなわち、例えば、Ｗｅｂサービスクライアントが送信するメッセージのＸＭＬ署名・暗号の対象者は、受信者であるＷｅｂサービスサーバとすればよい。そして、受信者であるＷｅｂサービスサーバは、受信したメッセージのＸＭＬ署名を検証し、ＸＭＬ暗号を復号してから、ＷＳＤＬで記述された定義情報を参照して受信メッセージを解釈する。つまり、ＷＳＤＬで記述されたインタフェースの定義と、実際に送受信されるメッセージの形式が異なっていても、問題にはならない。Ｗｅｂサービスのインタフェースは、ＷＳ−Ｓｅｃｕｒｉｔｙ２００４で使われている署名および暗号の状態について、意識する必要がない（非特許文献１参照）。
【非特許文献１】David Chappell,"Java Web Services",O'Reilly & Associates,Inc.,"2002.3
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、Ｗｅｂサービスの提供は、ＷｅｂサービスサーバとＷｅｂサービスクライアントとが１対１で通信するものに限定されない。その間に仲介Ｗｅｂサービスサーバが入る場合がある。
【００１１】
例えば、仲介ＷｅｂサービスサーバであるＷｅｂサーバＢが、ＷｅｂサービスクライントＡからメッセージを受け取ると、このメッセージの一部（または全部）を、他のＷｅｂサービスサーバであるＷｅｂサーバＣに転送し、このＷｅｂサーバＣからの応答データに基づき、ＷｅｂサービスクライアントＡへサービスを提供する場合もある。
【００１２】
この場合、ＷｅｂサービスクライアントＡから送信されるＸＭＬ文書が、それぞれ異なる相手（ＷｅｂサーバＢおよびＷｅｂサーバＣ）を対象とした複数の署名および暗号を含む場合がある。つまり、メッセージの受信者と、ＸＭＬ署名およびＸＭＬ暗号の対象者とが異なる可能性がある。このようなメッセージが、複数のＷｅｂサービスサーバを仲介する場合、メッセージを仲介するＷｅｂサービスサーバは、メッセージ中の自分を対象としていない署名を破壊することなく仲介をしなくてはならない。
【００１３】
具体例を用いて説明すると、ユーザ（ＷｅｂサービスクライアントＡ）がクレジットカード決済でのＷｅｂサーバＢから商品を購入する場合、ユーザが発注した商品名はＷｅｂサーバＢで読み取れるようにするが、クレジットカード番号はＷｅｂサーバＢで読み取れないようにしたい場合がある。
【００１４】
そのような場合、ユーザ（ＷｅｂサービスクライアントＡ）からのＷｅｂサーバＢへ送信するＸＭＬ文書には、発注した商品名にはＷｅｂサーバＢを対象者とした署名および暗号化をして、クレジットカード番号にはクレジットカード会社のＷｅｂサーバＣを対象者とした署名および暗号化をする可能性がある。このとき、ＷｅｂサーバＢは、発注した商品名の署名の検証および暗号の復号は行うが、クレジットカード番号の署名および暗号化の対象者が自分ではないので、そのままＷｅｂサーバＣへ受け渡す必要がある。また、このクレジットカード番号を受け渡す際には、仲介するＷｅｂサーバＢのインタフェースについて、文書中の署名および暗号を意識する必要がある。
【００１５】
例えば、ＷｅｂサーバＢが仲介するデータのうち、整数型のデータＸが暗号化されていた場合、暗号化されたデータｃ（Ｘ）は、整数ではなく、ＸＭＬ要素となる。つまり、仲介者であるＷｅｂサーバＢは、ＷＳＤＬで記述された定義にかかわらず、データｃ（Ｘ）を仲介しなくてはならない。
【００１６】
本発明は、それぞれのＷｅｂサービスが要求するデータを表現したＷＳＤＬ定義と、それぞれのサービスが要求する署名および暗号の内容を表現した定義から、仲介Ｗｅｂサービスのインタフェースを決定する仲介Ｗｅｂサービス（Ｗｅｂサービス用ノード装置）のプログラミング装置等を提供することを課題とする。
【課題を解決するための手段】
【００１７】
前記した課題を解決するため、本発明は、コンピュータを、他のＷｅｂサービス用ノード装置から１以上の前記ＸＭＬ署名および１以上のＸＭＬ暗号の少なくとも一方を含むＸＭＬ署名・暗号データと、前記各ＸＭＬ署名・暗号データの暗号の対象となるノード装置名を含むＸＭＬ文書を受信するとともに、前記受信したＸＭＬ文書のＸＭＬ署名・暗号データのうち、自身のノード装置を対象とするＸＭＬ署名・暗号データの署名検証および暗号復号を行うＷｅｂサービス用ノード装置として機能させるコンピュータプログラムの生成方法であって、前記プログラムを生成するコンピュータが、ネットワーク経由で、前記他のＷｅｂサービス用ノード装置のインタフェース定義情報と、ＸＭＬ署名およびＸＭＬ暗号処理の定義情報である署名暗号定義情報とを格納する記憶装置から、自身のノード装置を対象とするインタフェース定義情報および署名暗号定義情報を取得するステップと、前記取得したインタフェース定義情報および署名暗号定義情報を満たす前記Ｗｅｂサービス用ノード装置のインタフェースを生成するステップと、前記取得した署名暗号定義情報を満たす前記Ｗｅｂサービス用ノード装置の署名暗号処理モジュールを生成するステップとを実行するプログラムとした。その他の手段については、実施の形態で後記する。
【発明の効果】
【００１８】
本発明によれば、仲介者であるＷｅｂサービス用ノード装置のプログラムの作成を容易なものとすることができる。つまり、Ｗｅｂサービス開発者の負担を軽減することができる。
【発明を実施するための最良の形態】
【００１９】
本発明を実施するための最良の形態（以下、実施の形態とする）について、図面を参照して詳細に説明する。まず、図１を用いて、本実施の形態によるＷｅｂサービスでの署名および暗号データを取り扱う場合の概要について説明する。図１は、本システムの概要を示すブロック図である。
【００２０】
ここでは、Ｗｅｂサービスの提供者（Ｗｅｂサービスサーバ）が、Ｗｅｂサービスのインタフェースと署名および暗号の使用方法の定義（署名暗号定義情報）とを提供し、Ｗｅｂサービスの利用者が、Ｗｅｂサービスクライアント設定装置を用いて前記した定義情報を入手して、Ｗｅｂサービスクライアントのプログラミングを行う場合を例として説明する。
【００２１】
なお、本実施の形態における、Ｗｅｂサービスの提供とは、Ｗｅｂサービスクライアントからのデータ送信要求に応じてＷｅｂサービスサーバが各種データの送信を行うことをいう。また、請求項におけるＷｅｂサービス用ノード装置は、本実施の形態のＷｅｂサービスサーバおよびＷｅｂサービスクライアントに相当する。また、請求項におけるＷｅｂサービス用ノード装置のプログラミング装置は、本実施の形態のＷｅｂサービスクライアント設定装置に相当する。
【００２２】
まず、本システムの全体構成について説明する。本システムは、Ｗｅｂサービスを提供するサービス側システムと、このサービス側システムからＷｅｂサービスの提供を受けるクライアント側システムと、これらのシステムを接続するネットワーク３００とを含んで構成される。
【００２３】
なお、ここでは説明のため、サービス側システムおよびクライアント側システムの数はそれぞれ１つずつとしたが、これに限定されるものではない。また、ネットワーク３００は、例えばＬＡＮ（Local Area Network）やインターネット網等である。例えば、クライアント側システムはインターネット上で書籍の販売をする書籍販売システムであり、サービス側システムは購入者からの代金徴収代行を行うクレジットカード会社のシステムである。あるいは、サービス側システムを書籍販売システムとし、クライアント側システムをこの書籍販売システムを利用して書籍を販売するユーザのシステムとしてもよい。
【００２４】
サービス側システムは、Ｗｅｂサービスサーバ１２０のインタフェースの定義および署名・暗号の定義情報を格納する記憶装置１００と、この記憶装置１００から定義情報を読み出し、Ｗｅｂサービスサーバ１２０に格納される各種プログラムを設定するＷｅｂサービスサーバ設定装置１１０と、ネットワーク３００経由でＷｅｂサービスを提供するＷｅｂサービスサーバ１２０とを含んで構成される。
【００２５】
記憶装置１００は、サービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２を格納する。このサービス側インタフェース定義１０１は、Ｗｅｂサービスサーバ１２０のサービス（プログラム）を利用するためには、それがどのようなコマンドを持っており、そのコマンドを実行するためにはどのようなパラメータをどのような形式で与えるかを定義した情報である。また、サービス側署名・暗号定義１０２は、Ｗｅｂサービスサーバ１２０のサービス（プログラム）を利用するとき、やりとりされるデータの暗号化する部分、暗号化のアルゴリズム、暗号の対象等を示した情報である。これらの定義情報は、Ｗｅｂサービスの提供者がＷｅｂサービスサーバ設定装置１１０等を用いて作成し、記憶装置１００に格納しておく。この定義情報は、例えば、前記したＷＳＤＬにより記述される。
【００２６】
Ｗｅｂサービスサーバ設定装置１１０は、前記したサービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２を読み出し、これらの情報に基づき、Ｗｅｂサービスサーバ１２０用のインタフェースおよび署名・暗号処理の設定を行う。
そして、Ｗｅｂサービスサーバ１２０は、Ｗｅｂサービスサーバ設定装置１１０が設定した情報に基づき、ネットワーク３００経由でＷｅｂサービスクライアント２２０へサービスを提供する。
【００２７】
クライアント側システムは、Ｗｅｂサービスクライアント２２０のインタフェースの定義（クライアント側インタフェース定義２０１）および署名・暗号の定義（クライアント側署名・暗号定義２０２）を格納する記憶装置２００と、Ｗｅｂサービスクライアント２２０と、この記憶装置２００から各種定義情報を読み出して、Ｗｅｂサービスクライアント２２０がＷｅｂサービスサーバ１２０との間でデータ送受信をする際に必要な署名・暗号処理モジュールおよびインタフェースを生成（プログラミング）するＷｅｂサービスクライアント設定装置２１０とを含んで構成される。
【００２８】
Ｗｅｂサービスクライアント設定装置２１０は、ネットワーク３００経由で、記憶装置１００からサービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２を取得し、この定義情報に基づき、クライアント側インタフェース定義２０１およびクライアント側署名・暗号定義２０２を設定し、記憶装置２００に格納しておく。
【００２９】
このクライアント側インタフェース定義２０１は、サービス側署名・暗号定義１０２を利用して、サービス側インタフェース定義１０１をＷｅｂサービスクライアント２２０用に書き換えたものである。また、クライアント側署名・暗号定義２０２は、サービス側署名・暗号定義１０２をＷｅｂサービスクライアント２２０用に書き換えたものである。これらの定義情報の詳細は、図面を用いて後記する。
【００３０】
Ｗｅｂサービスクライアント設定装置２１０は、このクライアント側インタフェース定義２０１およびクライアント側署名・暗号定義２０２を読み出し、これらの情報に基づき、Ｗｅｂサービスクライアント２２０用のインタフェースおよび署名・暗号処理を生成する。具体的には、インタフェースの生成および署名・暗号処理モジュールの生成を行い、これをいったんメモリに記憶し、入出力インタフェース経由で、Ｗｅｂサービスクライアント２２０へ出力する。
【００３１】
なお、前記したＷｅｂサービスサーバ１２０、Ｗｅｂサービスサーバ設定装置１１０、Ｗｅｂサービスクライアント２２０およびＷｅｂサービスクライアント設定装置２１０は演算処理部（ＣＰＵ、Central Processing Unit）、所定のプログラムを格納する記憶部（メモリ）、入出力部、通信インタフェース等（図示せず）を備えるコンピュータにより実現される。また、Ｗｅｂサービスサーバ設定装置１１０およびＷｅｂサービスクライアント設定装置２１０は、それぞれＷｅｂサービスサーバ１２０およびＷｅｂサービスクライアント２２０の一部として組み込むようにしてもよい。
【００３２】
次に、システムの各構成要素について、図２を用いて詳細に説明する。図２は、図１のシステムを機能展開して示したブロック図である。ここでは、図１のネットワーク３００は省略している。
【００３３】
記憶装置１００は、前記した通り、サービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２を格納する。このサービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２について、図３を用いて説明する。図３（ａ）は、図１のサービス側インタフェース定義を例示した図であり、（ｂ）は、図１のサービス側署名・暗号定義を例示した図である。
【００３４】
図３（ａ）のサービス側インタフェース定義１０１において領域３０１は、Ｗｅｂサービスサーバ１２０における「取引」の「購入」という処理を「注文要求」メッセージ（コマンド）で呼び出すと、「注文結果」メッセージが返ってくることを示している。また、領域３０３は、「注文要求」というメッセージは、「書名」、「金額」および「カード番号」をそれぞれ文字列（string）で与えるものであることを示している。領域３０２にも同様に、「注文結果」というメッセージに関する情報が記載される。
【００３５】
また、図３（ｂ）のサービス側署名・暗号定義１０２において、領域３０４は「注文要求」メッセージの「書名」については「書店」を対象とした署名・暗号化を行うことを示し、領域３０５は、「注文要求」メッセージの「カード番号」については「カード会社（カード会社のＷｅｂサーバ）」を対象とした署名・暗号化を行っていることを示している。
【００３６】
なお、図３（ｂ）において説明を省略しているが、サービス側署名・暗号定義１０２には各メッセージの署名・暗号化のアルゴリズムや、署名値に関する情報も含まれている。
【００３７】
（Ｗｅｂサービスサーバ設定装置）
図２の説明に戻る。Ｗｅｂサービスサーバ設定装置１１０は、サービス側インタフェース生成部１１１とサービス側署名・暗号処理部生成部１１２とを備える。
【００３８】
このサービス側インタフェース生成部１１１は、サービス側インタフェース定義１０１の定義情報を読み出し、Ｗｅｂサービスサーバ１２０のサービス側インタフェース部１２２（後記）を生成する。また、サービス側署名・暗号処理部生成部１１２は、サービス側署名・暗号定義１０２を読み出し、Ｗｅｂサービスサーバ１２０のサービス側署名・暗号処理部１２３（後記）を生成する。ここでの生成とは、それぞれ、サービス側インタフェース部１２２およびサービス側署名・暗号処理部１２３の機能を実現するプログラムを作成する（プログラミングする）ことをいう。
【００３９】
なお、サービス側インタフェース生成部１１１およびサービス側署名・暗号処理部生成部１１２は、Ｗｅｂサービスサーバ設定装置１１０の演算処理部が、記憶部に格納されたプログラムを実行することにより実現される。
【００４０】
（Ｗｅｂサービスサーバ）
Ｗｅｂサービスサーバ１２０は、Ｗｅｂサービスクライアント２２０にサービスを提供する（Ｗｅｂサービスクライアント２２０からの要求に応じて各種データを送信する）ユーザプログラム１２１と、サービス側インタフェース生成部１１１が設定したサービス側インタフェース部１２２と、サービス側署名・暗号処理部生成部１１２が設定したサービス側署名・暗号処理部１２３とを備える。
【００４１】
サービス側インタフェース部１２２は、ユーザプログラム１２１がサービス提供を行う際のインタフェースを司る。このサービス側インタフェース部１２２は、例えば、Ｗｅｂサービスクライアント２２０から受け取る要求メッセージのＸＭＬ文書を分解したり、Ｗｅｂサービスクライアント２２０へ送信する応答メッセージのＸＭＬ文書を設定したりする。
【００４２】
サービス側署名・暗号処理部１２３は、ＳＯＡＰヘッダ等を用いて、メッセージに対して署名および暗号処理の順番や対象を記述するとともに、その記述に従った署名および暗号に関する各種処理を行う。具体的には、サービス側インタフェース部１２２によって設定されたユーザプログラム１２１のメッセージであるＸＭＬ文書に、サービス側署名・暗号定義１０２に従った署名付与および暗号化を行う。また、Ｗｅｂサービスクライアント２２０からメッセージを受信したときには、このメッセージの署名検証および暗号の復号を行う。
【００４３】
このＷｅｂサービスサーバ１２０の動作の詳細については、フローチャートを用いて後記する。
【００４４】
なお、前記したユーザプログラム１２１、サービス側インタフェース部１２２およびサービス側署名・暗号処理部１２３も、Ｗｅｂサービスサーバ１２０の演算処理部が記憶部に格納されたプログラムを実行することにより実現される。
【００４５】
（Ｗｅｂサービスクライアント設定装置）
Ｗｅｂサービスクライアント設定装置２１０は、インタフェース定義変換部２１２と、署名・暗号定義変換部２１３と、クライアント側署名・暗号処理部生成部２１４と、クライアント側インタフェース生成部２１５とを備える。
【００４６】
インタフェース定義変換部２１２は、ネットワーク３００（図１参照）経由で、サービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２を取得し、このうちＷｅｂサービスクライアント２２０を対象とするインタフェース定義情報と、署名暗号定義情報とを満たすクライアント側インタフェース定義２０１を作成する。
【００４７】
具体的には、インタフェース定義変換部２１２は、サービス側インタフェース定義１０１に記述されたインタフェースを、Ｗｅｂサービスクライアント２２０以外を対象とした署名の付されたデータは、データと署名とを一緒に扱い、Ｗｅｂサービスクライアント２２０以外を対象とした暗号データは、暗号化されたデータをそのまま扱うためのインタフェースに書き換えた定義情報を作成する。そして、この作成したクライアント側インタフェース定義２０１をいったん記憶装置２００へ格納する。
【００４８】
なお、このクライアント側インタフェース定義２０１も前記したＷＳＤＬにより記述される。
【００４９】
図４は、図１のクライアント側インタフェース定義を例示した図である。ここでは、インタフェース定義変換部２１２が、図２に例示したサービス側インタフェース定義１０１およびサービス側署名・暗号定義１０２に基づいてクライアント側インタフェース定義２０１を作成した場合を例に説明する。
【００５０】
図４の領域４０１は、Ｗｅｂサービスクライアント２２０がＷｅｂサービスサーバ１２０に「取引」の「購入」という処理を「注文要求」メッセージ（コマンド）で呼び出せば、「注文結果」メッセージが返ってくることを示している。
【００５１】
この領域４０１の情報は、インタフェース定義変換部２１２が、図３の領域３０１の情報に基づき作成する。また、領域４０３の情報は、「金額」は文字列（string）として扱い、「書名」および「カード番号」は暗号化データとして扱うことを示している。そして、領域４０４の情報は、この「暗号化カード番号」を扱うためのデータ構造を示している。また、説明を省略しているが、領域４０４には「暗号化書名（書名の暗号化データ）」を扱うためのデータ構造も含まれる。この領域４０３および領域４０４の情報は、インタフェース定義変換部２１２が、サービス側署名・暗号定義１０２の情報（図３（ｂ）の「注文要求」メッセージの「書名」は「書店」を対象とした署名・暗号であり、「カード番号」は「カード会社」を対象とした署名・暗号である旨の情報）および自身が署名・暗号の対象であるか否かに基づき記述する。図４の領域４０２の情報も、図３（ａ）の領域３０２の情報に基づき、同じ要領で作成される。
【００５２】
署名・暗号定義変換部２１３は、ネットワーク３００（図１参照）経由で、サービス側署名・暗号定義１０２を取得し、クライアント側署名・暗号定義２０２を作成する。具体的には、署名・暗号定義変換部２１３は、サービス側署名・暗号定義１０２のうち、Ｗｅｂサービスクライアント２２０を対象とした署名の検証および暗号を復号するための情報を作成する。そして、作成したクライアント側署名・暗号定義２０２を記憶装置２００へ格納する。
【００５３】
クライアント側署名・暗号処理部生成部２１４は、クライアント側署名・暗号定義２０２の定義情報を読み出し、Ｗｅｂサービスクライアント２２０のクライアント側署名・暗号処理部２２１（後記）のプログラムを生成する。つまり、Ｗｅｂサービスクライアント２２０の署名・暗号処理モジュールを生成する。生成した署名・暗号処理モジュールは、例えば、いったんＷｅｂサービスクライアント設定装置２１０の記憶部等に格納しておき、後でＷｅｂサービスクライアント２２０の記憶部に出力する。
【００５４】
クライアント側インタフェース生成部２１５は、クライアント側インタフェース定義２０１を読み出し、Ｗｅｂサービスクライアント２２０のクライアント側インタフェース部２２２（後記）のプログラムを生成する。
【００５５】
なお、所定のインタフェース定義情報を読み出し、この定義情報に基づき、Ｗｅｂサービスクライアント２２０のインタフェースをプログラミングすることは、公知の技術を用いることで可能である。
【００５６】
また、前記したインタフェース定義変換部２１２、署名・暗号定義変換部２１３、クライアント側署名・暗号処理部生成部２１４およびクライアント側インタフェース生成部２１５は、Ｗｅｂサービスクライアント設定装置２１０の演算処理部が、記憶部に格納されたＷｅｂサービスクライアントの設定用プログラムを実行することにより実現される。
【００５７】
（Ｗｅｂサービスクライアント）
Ｗｅｂサービスクライアント２２０は、Ｗｅｂサービスサーバ１２０からサービスの提供を受ける（Ｗｅｂサービスサーバ１２０とのデータ送受信を行う）ユーザプログラム２２３と、クライアント側インタフェース生成部２１５が設定したクライアント側インタフェース部２２２と、クライアント側署名・暗号処理部生成部２１４が設定したクライアント側署名・暗号処理部２２１とを備える。
【００５８】
クライアント側インタフェース部２２２は、ユーザプログラム２２３がサービス提供を受ける際のインタフェースである。また、クライアント側署名・暗号処理部２２１はユーザプログラム２２３がＷｅｂサービスサーバ１２０へメッセージを送信する際の署名および暗号に関する各種処理を行う。具体的には、クライアント側署名・暗号処理部２２１がクライアント側署名・暗号定義２０２に従った署名検証および復号化を行い、クライアント側インタフェース部２２２に受け渡す。また、Ｗｅｂサービスサーバ１２０からメッセージを受信したときには、このメッセージの署名検証および暗号の復号を行う。
【００５９】
なお、前記した各構成要素も、Ｗｅｂサービスクライアント２２０の演算処理部が記憶部に格納されたプログラムを実行することにより実現される。
【００６０】
次に、前記したＷｅｂサービスサーバ設定装置１１０により設定（プログラミング）されたＷｅｂサービスサーバ１２０および前記したＷｅｂサービスクライアント設定装置２１０により設定（プログラミング）されたＷｅｂサービスクライアント２２０の動作を、図２を参照して説明する。
【００６１】
ここでは、Ｗｅｂサービスクライアント２２０が、Ｗｅｂサービスサーバ１２０からのサービス提供を受けるため、Ｗｅｂサービスサーバ１２０へサービス要求メッセージを送信する場合を例として説明する。
【００６２】
Ｗｅｂサービスクライアント２２０のユーザプログラム２２３は、Ｗｅｂサービスクライアント２２０に接続されたキーボードやマウス等からの入力情報をパラメータとしてクライアント側インタフェース部２２２を呼び出す。次に、クライアント側インタフェース部２２２は、Ｗｅｂサービスサーバ１２０へのサービス要求メッセージとなるＸＭＬ文書を生成し、クライアント側署名・暗号処理部２２１が、生成されたＸＭＬ文書に必要な署名・暗号処理を施す。そして、Ｗｅｂサービスクライアント２２０は署名・暗号の処理を施されたＸＭＬ文書をネットワーク３００経由で送信する。
【００６３】
このＸＭＬ文書（サービス要求メッセージ）には、署名が付され暗号化されたデータと、そのデータの暗号情報が含まれる。図５は、図２のＷｅｂサービスクライアントがＷｅｂサービスサーバへ送信するＸＭＬ文書（サービス要求メッセージ）を例示した図である。図５を用いて、Ｗｅｂサービスクライアント２２０がＷｅｂサービスサーバ１２０へ送信するＸＭＬ文書（サービス要求メッセージ）を説明する。
【００６４】
図５のＸＭＬ文書の領域６０３には「暗号化データ（１）」が格納され、領域６０４には「暗号化データ（２）」が格納されている。そして、領域６０１には、「暗号化されたデータ（１）」の暗号情報が示され、領域６０２には、「暗号化されたデータ（２）」の暗号情報が示されている。
【００６５】
この暗号情報は、このＸＭＬ文書中における暗号データの位置、この暗号の暗号アルゴリズムおよびこの暗号の対象（誰に対する暗号か）等を示したものである。例えば、領域６０１の暗号情報は、この暗号情報は、「Ｐ１」の箇所の暗号データの暗号情報であり、暗号アルゴリズムは「Ａ１」であり、暗号の対象（暗号対象のノード名）は「Ｎ１」であることを示している。また、領域６０２の暗号情報は、この暗号情報は、「Ｐ２」の箇所の暗号データの暗号情報であり、暗号アルゴリズムは「Ａ２」であり、暗号の対象は「Ｎ２」であることを示している。
【００６６】
なお、この暗号対象の情報とは、例えば暗号対象のノードのＵＲＩ（Uniform Resource Identifier）である。
【００６７】
次に、ネットワーク３００（図１参照）経由で、Ｗｅｂサービスクライアント２２０からサービス要求メッセージ（ＸＭＬ文書）を受信したＷｅｂサービスサーバ１２０の動作を説明する。ここでは、図５に示したメッセージを、Ｗｅｂサービスサーバ１２０（「Ｎ１」）で受信した場合を例に説明する。
【００６８】
Ｗｅｂサービスサーバ１２０が、図５に示されるメッセージを受け取ると、サービス側署名・暗号処理部１２３がこのメッセージの署名検証および暗号の復号処理をする。このときのサービス側署名・暗号処理部１２３の処理手順を、図６および図７を用いて説明する（適宜図１から図５参照）。図６は、図２のサービス側署名・暗号処理部の動作を示すフローチャートである。図７は、図２のサービス側署名・暗号処理部が処理したＸＭＬ文書を例示した図である。
【００６９】
まず、サービス側署名・暗号処理部１２３は、メッセージの暗号情報が未処理の暗号情報であるか否かを判断する（ステップＳ７０１）。未処理の暗号情報のときには（ステップＳ７０１のＹｅｓ）、ステップＳ７０２へ進み、この暗号情報を読み取る。一方、未処理の暗号情報でないときには（ステップＳ７０２のＮｏ）、ステップＳ７０６へ進む。
【００７０】
ステップＳ７０２で読み取った暗号情報において、暗号対象が自分であるときには（ステップＳ７０３のＹｅｓ）、この暗号情報に従い暗号化データを復号する（ステップＳ７０４）。
【００７１】
例えば、ステップＳ７０２で読み取った暗号情報が、図５の領域６０１の暗号情報（１）で、自身が「Ｎ１」のとき、この暗号情報の対象は自分であるので、暗号箇所「Ｐ１」の暗号データを、暗号アルゴリズム「Ａ１」で復号する。一方、暗号対象が自分でないときは（ステップＳ７０３のＮｏ）、ステップＳ７０６へ進む。
【００７２】
そして、暗号データの復号後、ＸＭＬ文書中の処理済暗号情報を削除する（ステップＳ７０５）。つまり、図５のＸＭＬ文書から、復号を行った暗号化データの暗号情報である「暗号情報（１）」を削除し（領域８０３参照）、図５の領域６０３の暗号化データの復号データ（図７の領域８０１）を書き込んだＸＭＬ文書を作成する。そして、次の暗号情報があるときは（ステップＳ７０６のＹｅｓ）、次の暗号処理情報へ進み（ステップＳ７０７）、ステップＳ７０１以降の処理を再び行う。一方、次の暗号情報がないときは（ステップＳ７０６のＮｏ）、そのまま処理を終了する。
【００７３】
例えば、ステップＳ７０６において、次の暗号情報として図５の領域６０２の「暗号情報（２）」があると判断し、かつステップＳ７０１でこの暗号情報が未処理であるときは、ステップＳ７０２で「暗号情報（２）」を読み取る。そして、ステップＳ７０３で暗号の対象が自分か否かを判断する。ここで、図５に示す「暗号情報（２）」の暗号対象は、「Ｎ１」ではなく（ステップＳ７０３のＮｏ）、また「暗号情報（２）」の次に暗号情報はないので（ステップＳ７０６のＮｏ）、そのまま処理を終了する。
【００７４】
以上のようにして、Ｗｅｂサービスサーバ１２０は、自分を対象とした暗号のみ復号し自分が対象となっていない暗号データについては暗号データのままとしたＸＭＬ文書を作成することができる。例えば、図７に示すように、図５の「暗号情報（１）」を削除し（領域８０３参照）、領域６０３の暗号化データの復号化データ（領域８０１参照）および暗号データ（領域８０２参照）を含むＸＭＬ文書を作成することができる。この後、必要に応じて、Ｗｅｂサービスサーバ１２０は作成したＸＭＬ文書をさらに別のＷｅｂサービスサーバへ送信するようにしてもよい。
【００７５】
このようなＷｅｂサービスクライアント２２０を設定するＷｅｂサービスクライアント設定装置２１０によれば、署名・暗号処理を伴う２以上のＷｅｂサービスを仲介するＷｅｂサービスクライアント２２０の設定を容易なものとすることができる。
【００７６】
また、前記した実施の形態では、インタフェース定義変換部２１２および署名・暗号定義変換部２１３は、Ｗｅｂサービスクライアント設定装置２１０に組み込まれるものとして説明したが、これをＷｅｂサービスサーバ設定装置１１０に組み込むようにしてもよい。
【００７７】
さらに、Ｗｅｂサービスサーバ設定装置１１０の機能を、Ｗｅｂサービスサーバ１２０の一部として組み込むようにしてもよいし、Ｗｅｂサービスクライアント設定装置２１０をＷｅｂサービスクライアント２２０の一部として組み込むようにしてもよい（請求項のＸＭＬ署名・暗号処理システムに相当）。また、Ｗｅｂサービスサーバ設定装置１１０は、前記したインタフェース定義変換部および署名・暗号定義変換部をさらに備えるようにして、他のＷｅｂサービスサーバのインタフェース定義および署名・暗号定義に基づきＷｅｂサービスサーバ１２０のインタフェース定義および署名・暗号定義を作成するようにしてもよい。
【００７８】
本実施の形態に係るＷｅｂサービスクライアント設定装置２１０は、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記憶媒体に記憶して提供することが可能である。また、そのプログラムを、ネットワークを通して提供することも可能である。
【図面の簡単な説明】
【００７９】
【図１】本システムの概要を示すブロック図である。
【図２】図１のシステムを機能展開して示したブロック図である。
【図３】（ａ）は、図１のサービス側インタフェース定義を例示した図であり、（ｂ）は、図１のサービス側署名・暗号定義を例示した図である。
【図４】図１のクライアント側インタフェース定義を例示した図である。
【図５】図２のＷｅｂサーバが生成するＸＭＬ文書を例示した図である。
【図６】図２のサービス側署名・暗号処理部の動作を示すフローチャートである。
【図７】図２のサービス側署名・暗号処理部が処理したＸＭＬ文書を例示した図である。
【符号の説明】
【００８０】
１００,２００  記憶装置
１０１  サービス側インタフェース定義（インタフェース定義情報）
１０２  サービス側署名・暗号定義（署名暗号定義情報）
１１０  Ｗｅｂサービスサーバ設定装置
１１１  サービス側インタフェース生成部
１１２  サービス側署名・暗号処理部生成部
１２０  Ｗｅｂサービスサーバ（Ｗｅｂサービス用ノード装置）
１２１  ユーザプログラム
１２２  サービス側インタフェース部（インタフェース）
１２３  サービス側署名・暗号処理部
２０１  クライアント側インタフェース定義（インタフェース定義情報）
２０２  クライアント側署名・暗号定義（署名暗号定義情報）
２１０  Ｗｅｂサービスクライアント設定装置（プログラミング装置）
２１２  インタフェース定義変換部
２１３  署名・暗号定義変換部
２１４  クライアント側署名・暗号処理部生成部（署名暗号処理部生成部）
２１５  クライアント側インタフェース生成部（インタフェース生成部）
２２０  Ｗｅｂサービスクライアント（Ｗｅｂサービス用ノード装置）
２２１  クライアント側署名・暗号処理部（署名暗号処理部）
２２２  クライアント側インタフェース部（インタフェース）
２２３  ユーザプログラム
３００  ネットワーク
【図１】
2006164018.tif 000003
【図２】
2006164018.tif 000004
【図３】
2006164018.tif 000005
【図４】
2006164018.tif 000006
【図５】
2006164018.tif 000007
【図６】
2006164018.tif 000008
【図７】
2006164018.tif 000009