説明

XML署名・暗号の処理方法、XML署名・暗号処理用プログラム、Webサービス用ノード装置、コンピュータプログラムの生成方法、プログラム、プログラミング装置、XML署名・暗号処理システム

【課題】 仲介者であるWebサービス用ノード装置(Webサービスクライアント)が、WSDLで記述された定義にかかわらず、XML署名・暗号を含むデータを仲介できるようにする。
【解決手段】 Webサービスサーバ120のインタフェース定義情報101と、署名・暗号定義102とを格納する記憶装置100から、Webサービスクライアント220を対象とするインタフェース定義情報および署名暗号定義情報を取得するステップと、取得したインタフェース定義情報および署名暗号定義情報を満たすクライアント側インタフェース部222を設定するステップと、取得した署名・暗号定義情報を満たすサービス側署名・暗号処理部123を設定するステップとをコンピュータに実行させ、Webサービス用ノード装置のプログラミングを行う構成とした。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、XML署名・暗号の処理方法、XML署名・暗号処理用プログラム、Webサービス用ノード装置、コンピュータプログラムの生成方法、プログラム、プログラミング装置、XML署名・暗号処理システムに関する。
【背景技術】
【0002】
ネットワーク上で提供されるWebサービスは、サービスの提供するインタフェースをWSDL(Web Services Description Language)と呼ばれるインタフェース記述言語を使って記述する。
【0003】
このWSDLとは、Webサービスを記述するための、XML(Extensible Markup Language)をベースとした言語仕様であり、Webサービスは、Webサービスのインタフェース、つまりクライアントがWebサービスを正しく呼び出すために、それがどのようなコマンドを持っており、そのコマンドを実行するために、どのようなパラメータをどのような形式で与えるかを定義している。Webサービスのユーザは、サービスの提供者(またはWebサーバ)からWSDLで記述された定義情報を入手して、サービスのインタフェースを知ることができる。
【0004】
また、WSDLで記述された定義情報から、Java(登録商標)等のプログラム言語とのインタフェースマッピングを生成することも可能である。Webサービスにおいてデータの送信をする側は、WSDLで記述された定義情報を参照して、送信するメッセージを作成する。また、Webサービスにおいてデータを受信する側は、WSDLで記述された定義情報を参照して、受信したメッセージを解釈する。
【0005】
ここで、Webサービスのメッセージに用いられるXML文書に対する署名および暗号化の方法として、XML署名およびXML暗号(XML署名・暗号)と呼ばれる技術が、W3C(World Wide Web Consortium)という標準化団体により標準化されている。
【0006】
これらの技術では、XMLの部分文書に対する署名および暗号化が可能であり、同じXML文書内で複数の署名および暗号を扱うことも可能である。ここで、Webサービスにおいて署名および暗号を利用する場合、XML署名・暗号を利用するWS−Security2004という仕様が、OASIS(Organization for Advancement of Structured Information Standards)という標準化団体により標準化されている。このWS−Security2004では、SOAP(Simple Object Access Protocol)ヘッダを使うことにより、メッセージに対して署名および暗号処理の順番や対象を明確に定義することができる。
【0007】
前記したとおり、Webサービスのデータ送信者は、WSDLによるインタフェース定義に従い、XML文書のメッセージを作成する。その後、作成したXML文書に対し、署名および暗号を適用するが、このときXML文書の文書構造が変化し、WSDLで記述されたインタフェースの定義と、実際に送受信されるメッセージの形式は、異なったものになる可能性がある。
【0008】
ここで、WebサービスサーバとWebサービスクライアントとが1対1で通信する場合は、送信者がメッセージに付与するXML署名・暗号の対象者は、メッセージの受信者と同じである。
【0009】
すなわち、例えば、Webサービスクライアントが送信するメッセージのXML署名・暗号の対象者は、受信者であるWebサービスサーバとすればよい。そして、受信者であるWebサービスサーバは、受信したメッセージのXML署名を検証し、XML暗号を復号してから、WSDLで記述された定義情報を参照して受信メッセージを解釈する。つまり、WSDLで記述されたインタフェースの定義と、実際に送受信されるメッセージの形式が異なっていても、問題にはならない。Webサービスのインタフェースは、WS−Security2004で使われている署名および暗号の状態について、意識する必要がない(非特許文献1参照)。
【非特許文献1】David Chappell,"Java Web Services",O'Reilly & Associates,Inc.,"2002.3
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかし、Webサービスの提供は、WebサービスサーバとWebサービスクライアントとが1対1で通信するものに限定されない。その間に仲介Webサービスサーバが入る場合がある。
【0011】
例えば、仲介WebサービスサーバであるWebサーバBが、WebサービスクライントAからメッセージを受け取ると、このメッセージの一部(または全部)を、他のWebサービスサーバであるWebサーバCに転送し、このWebサーバCからの応答データに基づき、WebサービスクライアントAへサービスを提供する場合もある。
【0012】
この場合、WebサービスクライアントAから送信されるXML文書が、それぞれ異なる相手(WebサーバBおよびWebサーバC)を対象とした複数の署名および暗号を含む場合がある。つまり、メッセージの受信者と、XML署名およびXML暗号の対象者とが異なる可能性がある。このようなメッセージが、複数のWebサービスサーバを仲介する場合、メッセージを仲介するWebサービスサーバは、メッセージ中の自分を対象としていない署名を破壊することなく仲介をしなくてはならない。
【0013】
具体例を用いて説明すると、ユーザ(WebサービスクライアントA)がクレジットカード決済でのWebサーバBから商品を購入する場合、ユーザが発注した商品名はWebサーバBで読み取れるようにするが、クレジットカード番号はWebサーバBで読み取れないようにしたい場合がある。
【0014】
そのような場合、ユーザ(WebサービスクライアントA)からのWebサーバBへ送信するXML文書には、発注した商品名にはWebサーバBを対象者とした署名および暗号化をして、クレジットカード番号にはクレジットカード会社のWebサーバCを対象者とした署名および暗号化をする可能性がある。このとき、WebサーバBは、発注した商品名の署名の検証および暗号の復号は行うが、クレジットカード番号の署名および暗号化の対象者が自分ではないので、そのままWebサーバCへ受け渡す必要がある。また、このクレジットカード番号を受け渡す際には、仲介するWebサーバBのインタフェースについて、文書中の署名および暗号を意識する必要がある。
【0015】
例えば、WebサーバBが仲介するデータのうち、整数型のデータXが暗号化されていた場合、暗号化されたデータc(X)は、整数ではなく、XML要素となる。つまり、仲介者であるWebサーバBは、WSDLで記述された定義にかかわらず、データc(X)を仲介しなくてはならない。
【0016】
本発明は、それぞれのWebサービスが要求するデータを表現したWSDL定義と、それぞれのサービスが要求する署名および暗号の内容を表現した定義から、仲介Webサービスのインタフェースを決定する仲介Webサービス(Webサービス用ノード装置)のプログラミング装置等を提供することを課題とする。
【課題を解決するための手段】
【0017】
前記した課題を解決するため、本発明は、コンピュータを、他のWebサービス用ノード装置から1以上の前記XML署名および1以上のXML暗号の少なくとも一方を含むXML署名・暗号データと、前記各XML署名・暗号データの暗号の対象となるノード装置名を含むXML文書を受信するとともに、前記受信したXML文書のXML署名・暗号データのうち、自身のノード装置を対象とするXML署名・暗号データの署名検証および暗号復号を行うWebサービス用ノード装置として機能させるコンピュータプログラムの生成方法であって、前記プログラムを生成するコンピュータが、ネットワーク経由で、前記他のWebサービス用ノード装置のインタフェース定義情報と、XML署名およびXML暗号処理の定義情報である署名暗号定義情報とを格納する記憶装置から、自身のノード装置を対象とするインタフェース定義情報および署名暗号定義情報を取得するステップと、前記取得したインタフェース定義情報および署名暗号定義情報を満たす前記Webサービス用ノード装置のインタフェースを生成するステップと、前記取得した署名暗号定義情報を満たす前記Webサービス用ノード装置の署名暗号処理モジュールを生成するステップとを実行するプログラムとした。その他の手段については、実施の形態で後記する。
【発明の効果】
【0018】
本発明によれば、仲介者であるWebサービス用ノード装置のプログラムの作成を容易なものとすることができる。つまり、Webサービス開発者の負担を軽減することができる。
【発明を実施するための最良の形態】
【0019】
本発明を実施するための最良の形態(以下、実施の形態とする)について、図面を参照して詳細に説明する。まず、図1を用いて、本実施の形態によるWebサービスでの署名および暗号データを取り扱う場合の概要について説明する。図1は、本システムの概要を示すブロック図である。
【0020】
ここでは、Webサービスの提供者(Webサービスサーバ)が、Webサービスのインタフェースと署名および暗号の使用方法の定義(署名暗号定義情報)とを提供し、Webサービスの利用者が、Webサービスクライアント設定装置を用いて前記した定義情報を入手して、Webサービスクライアントのプログラミングを行う場合を例として説明する。
【0021】
なお、本実施の形態における、Webサービスの提供とは、Webサービスクライアントからのデータ送信要求に応じてWebサービスサーバが各種データの送信を行うことをいう。また、請求項におけるWebサービス用ノード装置は、本実施の形態のWebサービスサーバおよびWebサービスクライアントに相当する。また、請求項におけるWebサービス用ノード装置のプログラミング装置は、本実施の形態のWebサービスクライアント設定装置に相当する。
【0022】
まず、本システムの全体構成について説明する。本システムは、Webサービスを提供するサービス側システムと、このサービス側システムからWebサービスの提供を受けるクライアント側システムと、これらのシステムを接続するネットワーク300とを含んで構成される。
【0023】
なお、ここでは説明のため、サービス側システムおよびクライアント側システムの数はそれぞれ1つずつとしたが、これに限定されるものではない。また、ネットワーク300は、例えばLAN(Local Area Network)やインターネット網等である。例えば、クライアント側システムはインターネット上で書籍の販売をする書籍販売システムであり、サービス側システムは購入者からの代金徴収代行を行うクレジットカード会社のシステムである。あるいは、サービス側システムを書籍販売システムとし、クライアント側システムをこの書籍販売システムを利用して書籍を販売するユーザのシステムとしてもよい。
【0024】
サービス側システムは、Webサービスサーバ120のインタフェースの定義および署名・暗号の定義情報を格納する記憶装置100と、この記憶装置100から定義情報を読み出し、Webサービスサーバ120に格納される各種プログラムを設定するWebサービスサーバ設定装置110と、ネットワーク300経由でWebサービスを提供するWebサービスサーバ120とを含んで構成される。
【0025】
記憶装置100は、サービス側インタフェース定義101およびサービス側署名・暗号定義102を格納する。このサービス側インタフェース定義101は、Webサービスサーバ120のサービス(プログラム)を利用するためには、それがどのようなコマンドを持っており、そのコマンドを実行するためにはどのようなパラメータをどのような形式で与えるかを定義した情報である。また、サービス側署名・暗号定義102は、Webサービスサーバ120のサービス(プログラム)を利用するとき、やりとりされるデータの暗号化する部分、暗号化のアルゴリズム、暗号の対象等を示した情報である。これらの定義情報は、Webサービスの提供者がWebサービスサーバ設定装置110等を用いて作成し、記憶装置100に格納しておく。この定義情報は、例えば、前記したWSDLにより記述される。
【0026】
Webサービスサーバ設定装置110は、前記したサービス側インタフェース定義101およびサービス側署名・暗号定義102を読み出し、これらの情報に基づき、Webサービスサーバ120用のインタフェースおよび署名・暗号処理の設定を行う。
そして、Webサービスサーバ120は、Webサービスサーバ設定装置110が設定した情報に基づき、ネットワーク300経由でWebサービスクライアント220へサービスを提供する。
【0027】
クライアント側システムは、Webサービスクライアント220のインタフェースの定義(クライアント側インタフェース定義201)および署名・暗号の定義(クライアント側署名・暗号定義202)を格納する記憶装置200と、Webサービスクライアント220と、この記憶装置200から各種定義情報を読み出して、Webサービスクライアント220がWebサービスサーバ120との間でデータ送受信をする際に必要な署名・暗号処理モジュールおよびインタフェースを生成(プログラミング)するWebサービスクライアント設定装置210とを含んで構成される。
【0028】
Webサービスクライアント設定装置210は、ネットワーク300経由で、記憶装置100からサービス側インタフェース定義101およびサービス側署名・暗号定義102を取得し、この定義情報に基づき、クライアント側インタフェース定義201およびクライアント側署名・暗号定義202を設定し、記憶装置200に格納しておく。
【0029】
このクライアント側インタフェース定義201は、サービス側署名・暗号定義102を利用して、サービス側インタフェース定義101をWebサービスクライアント220用に書き換えたものである。また、クライアント側署名・暗号定義202は、サービス側署名・暗号定義102をWebサービスクライアント220用に書き換えたものである。これらの定義情報の詳細は、図面を用いて後記する。
【0030】
Webサービスクライアント設定装置210は、このクライアント側インタフェース定義201およびクライアント側署名・暗号定義202を読み出し、これらの情報に基づき、Webサービスクライアント220用のインタフェースおよび署名・暗号処理を生成する。具体的には、インタフェースの生成および署名・暗号処理モジュールの生成を行い、これをいったんメモリに記憶し、入出力インタフェース経由で、Webサービスクライアント220へ出力する。
【0031】
なお、前記したWebサービスサーバ120、Webサービスサーバ設定装置110、Webサービスクライアント220およびWebサービスクライアント設定装置210は演算処理部(CPU、Central Processing Unit)、所定のプログラムを格納する記憶部(メモリ)、入出力部、通信インタフェース等(図示せず)を備えるコンピュータにより実現される。また、Webサービスサーバ設定装置110およびWebサービスクライアント設定装置210は、それぞれWebサービスサーバ120およびWebサービスクライアント220の一部として組み込むようにしてもよい。
【0032】
次に、システムの各構成要素について、図2を用いて詳細に説明する。図2は、図1のシステムを機能展開して示したブロック図である。ここでは、図1のネットワーク300は省略している。
【0033】
記憶装置100は、前記した通り、サービス側インタフェース定義101およびサービス側署名・暗号定義102を格納する。このサービス側インタフェース定義101およびサービス側署名・暗号定義102について、図3を用いて説明する。図3(a)は、図1のサービス側インタフェース定義を例示した図であり、(b)は、図1のサービス側署名・暗号定義を例示した図である。
【0034】
図3(a)のサービス側インタフェース定義101において領域301は、Webサービスサーバ120における「取引」の「購入」という処理を「注文要求」メッセージ(コマンド)で呼び出すと、「注文結果」メッセージが返ってくることを示している。また、領域303は、「注文要求」というメッセージは、「書名」、「金額」および「カード番号」をそれぞれ文字列(string)で与えるものであることを示している。領域302にも同様に、「注文結果」というメッセージに関する情報が記載される。
【0035】
また、図3(b)のサービス側署名・暗号定義102において、領域304は「注文要求」メッセージの「書名」については「書店」を対象とした署名・暗号化を行うことを示し、領域305は、「注文要求」メッセージの「カード番号」については「カード会社(カード会社のWebサーバ)」を対象とした署名・暗号化を行っていることを示している。
【0036】
なお、図3(b)において説明を省略しているが、サービス側署名・暗号定義102には各メッセージの署名・暗号化のアルゴリズムや、署名値に関する情報も含まれている。
【0037】
(Webサービスサーバ設定装置)
図2の説明に戻る。Webサービスサーバ設定装置110は、サービス側インタフェース生成部111とサービス側署名・暗号処理部生成部112とを備える。
【0038】
このサービス側インタフェース生成部111は、サービス側インタフェース定義101の定義情報を読み出し、Webサービスサーバ120のサービス側インタフェース部122(後記)を生成する。また、サービス側署名・暗号処理部生成部112は、サービス側署名・暗号定義102を読み出し、Webサービスサーバ120のサービス側署名・暗号処理部123(後記)を生成する。ここでの生成とは、それぞれ、サービス側インタフェース部122およびサービス側署名・暗号処理部123の機能を実現するプログラムを作成する(プログラミングする)ことをいう。
【0039】
なお、サービス側インタフェース生成部111およびサービス側署名・暗号処理部生成部112は、Webサービスサーバ設定装置110の演算処理部が、記憶部に格納されたプログラムを実行することにより実現される。
【0040】
(Webサービスサーバ)
Webサービスサーバ120は、Webサービスクライアント220にサービスを提供する(Webサービスクライアント220からの要求に応じて各種データを送信する)ユーザプログラム121と、サービス側インタフェース生成部111が設定したサービス側インタフェース部122と、サービス側署名・暗号処理部生成部112が設定したサービス側署名・暗号処理部123とを備える。
【0041】
サービス側インタフェース部122は、ユーザプログラム121がサービス提供を行う際のインタフェースを司る。このサービス側インタフェース部122は、例えば、Webサービスクライアント220から受け取る要求メッセージのXML文書を分解したり、Webサービスクライアント220へ送信する応答メッセージのXML文書を設定したりする。
【0042】
サービス側署名・暗号処理部123は、SOAPヘッダ等を用いて、メッセージに対して署名および暗号処理の順番や対象を記述するとともに、その記述に従った署名および暗号に関する各種処理を行う。具体的には、サービス側インタフェース部122によって設定されたユーザプログラム121のメッセージであるXML文書に、サービス側署名・暗号定義102に従った署名付与および暗号化を行う。また、Webサービスクライアント220からメッセージを受信したときには、このメッセージの署名検証および暗号の復号を行う。
【0043】
このWebサービスサーバ120の動作の詳細については、フローチャートを用いて後記する。
【0044】
なお、前記したユーザプログラム121、サービス側インタフェース部122およびサービス側署名・暗号処理部123も、Webサービスサーバ120の演算処理部が記憶部に格納されたプログラムを実行することにより実現される。
【0045】
(Webサービスクライアント設定装置)
Webサービスクライアント設定装置210は、インタフェース定義変換部212と、署名・暗号定義変換部213と、クライアント側署名・暗号処理部生成部214と、クライアント側インタフェース生成部215とを備える。
【0046】
インタフェース定義変換部212は、ネットワーク300(図1参照)経由で、サービス側インタフェース定義101およびサービス側署名・暗号定義102を取得し、このうちWebサービスクライアント220を対象とするインタフェース定義情報と、署名暗号定義情報とを満たすクライアント側インタフェース定義201を作成する。
【0047】
具体的には、インタフェース定義変換部212は、サービス側インタフェース定義101に記述されたインタフェースを、Webサービスクライアント220以外を対象とした署名の付されたデータは、データと署名とを一緒に扱い、Webサービスクライアント220以外を対象とした暗号データは、暗号化されたデータをそのまま扱うためのインタフェースに書き換えた定義情報を作成する。そして、この作成したクライアント側インタフェース定義201をいったん記憶装置200へ格納する。
【0048】
なお、このクライアント側インタフェース定義201も前記したWSDLにより記述される。
【0049】
図4は、図1のクライアント側インタフェース定義を例示した図である。ここでは、インタフェース定義変換部212が、図2に例示したサービス側インタフェース定義101およびサービス側署名・暗号定義102に基づいてクライアント側インタフェース定義201を作成した場合を例に説明する。
【0050】
図4の領域401は、Webサービスクライアント220がWebサービスサーバ120に「取引」の「購入」という処理を「注文要求」メッセージ(コマンド)で呼び出せば、「注文結果」メッセージが返ってくることを示している。
【0051】
この領域401の情報は、インタフェース定義変換部212が、図3の領域301の情報に基づき作成する。また、領域403の情報は、「金額」は文字列(string)として扱い、「書名」および「カード番号」は暗号化データとして扱うことを示している。そして、領域404の情報は、この「暗号化カード番号」を扱うためのデータ構造を示している。また、説明を省略しているが、領域404には「暗号化書名(書名の暗号化データ)」を扱うためのデータ構造も含まれる。この領域403および領域404の情報は、インタフェース定義変換部212が、サービス側署名・暗号定義102の情報(図3(b)の「注文要求」メッセージの「書名」は「書店」を対象とした署名・暗号であり、「カード番号」は「カード会社」を対象とした署名・暗号である旨の情報)および自身が署名・暗号の対象であるか否かに基づき記述する。図4の領域402の情報も、図3(a)の領域302の情報に基づき、同じ要領で作成される。
【0052】
署名・暗号定義変換部213は、ネットワーク300(図1参照)経由で、サービス側署名・暗号定義102を取得し、クライアント側署名・暗号定義202を作成する。具体的には、署名・暗号定義変換部213は、サービス側署名・暗号定義102のうち、Webサービスクライアント220を対象とした署名の検証および暗号を復号するための情報を作成する。そして、作成したクライアント側署名・暗号定義202を記憶装置200へ格納する。
【0053】
クライアント側署名・暗号処理部生成部214は、クライアント側署名・暗号定義202の定義情報を読み出し、Webサービスクライアント220のクライアント側署名・暗号処理部221(後記)のプログラムを生成する。つまり、Webサービスクライアント220の署名・暗号処理モジュールを生成する。生成した署名・暗号処理モジュールは、例えば、いったんWebサービスクライアント設定装置210の記憶部等に格納しておき、後でWebサービスクライアント220の記憶部に出力する。
【0054】
クライアント側インタフェース生成部215は、クライアント側インタフェース定義201を読み出し、Webサービスクライアント220のクライアント側インタフェース部222(後記)のプログラムを生成する。
【0055】
なお、所定のインタフェース定義情報を読み出し、この定義情報に基づき、Webサービスクライアント220のインタフェースをプログラミングすることは、公知の技術を用いることで可能である。
【0056】
また、前記したインタフェース定義変換部212、署名・暗号定義変換部213、クライアント側署名・暗号処理部生成部214およびクライアント側インタフェース生成部215は、Webサービスクライアント設定装置210の演算処理部が、記憶部に格納されたWebサービスクライアントの設定用プログラムを実行することにより実現される。
【0057】
(Webサービスクライアント)
Webサービスクライアント220は、Webサービスサーバ120からサービスの提供を受ける(Webサービスサーバ120とのデータ送受信を行う)ユーザプログラム223と、クライアント側インタフェース生成部215が設定したクライアント側インタフェース部222と、クライアント側署名・暗号処理部生成部214が設定したクライアント側署名・暗号処理部221とを備える。
【0058】
クライアント側インタフェース部222は、ユーザプログラム223がサービス提供を受ける際のインタフェースである。また、クライアント側署名・暗号処理部221はユーザプログラム223がWebサービスサーバ120へメッセージを送信する際の署名および暗号に関する各種処理を行う。具体的には、クライアント側署名・暗号処理部221がクライアント側署名・暗号定義202に従った署名検証および復号化を行い、クライアント側インタフェース部222に受け渡す。また、Webサービスサーバ120からメッセージを受信したときには、このメッセージの署名検証および暗号の復号を行う。
【0059】
なお、前記した各構成要素も、Webサービスクライアント220の演算処理部が記憶部に格納されたプログラムを実行することにより実現される。
【0060】
次に、前記したWebサービスサーバ設定装置110により設定(プログラミング)されたWebサービスサーバ120および前記したWebサービスクライアント設定装置210により設定(プログラミング)されたWebサービスクライアント220の動作を、図2を参照して説明する。
【0061】
ここでは、Webサービスクライアント220が、Webサービスサーバ120からのサービス提供を受けるため、Webサービスサーバ120へサービス要求メッセージを送信する場合を例として説明する。
【0062】
Webサービスクライアント220のユーザプログラム223は、Webサービスクライアント220に接続されたキーボードやマウス等からの入力情報をパラメータとしてクライアント側インタフェース部222を呼び出す。次に、クライアント側インタフェース部222は、Webサービスサーバ120へのサービス要求メッセージとなるXML文書を生成し、クライアント側署名・暗号処理部221が、生成されたXML文書に必要な署名・暗号処理を施す。そして、Webサービスクライアント220は署名・暗号の処理を施されたXML文書をネットワーク300経由で送信する。
【0063】
このXML文書(サービス要求メッセージ)には、署名が付され暗号化されたデータと、そのデータの暗号情報が含まれる。図5は、図2のWebサービスクライアントがWebサービスサーバへ送信するXML文書(サービス要求メッセージ)を例示した図である。図5を用いて、Webサービスクライアント220がWebサービスサーバ120へ送信するXML文書(サービス要求メッセージ)を説明する。
【0064】
図5のXML文書の領域603には「暗号化データ(1)」が格納され、領域604には「暗号化データ(2)」が格納されている。そして、領域601には、「暗号化されたデータ(1)」の暗号情報が示され、領域602には、「暗号化されたデータ(2)」の暗号情報が示されている。
【0065】
この暗号情報は、このXML文書中における暗号データの位置、この暗号の暗号アルゴリズムおよびこの暗号の対象(誰に対する暗号か)等を示したものである。例えば、領域601の暗号情報は、この暗号情報は、「P1」の箇所の暗号データの暗号情報であり、暗号アルゴリズムは「A1」であり、暗号の対象(暗号対象のノード名)は「N1」であることを示している。また、領域602の暗号情報は、この暗号情報は、「P2」の箇所の暗号データの暗号情報であり、暗号アルゴリズムは「A2」であり、暗号の対象は「N2」であることを示している。
【0066】
なお、この暗号対象の情報とは、例えば暗号対象のノードのURI(Uniform Resource Identifier)である。
【0067】
次に、ネットワーク300(図1参照)経由で、Webサービスクライアント220からサービス要求メッセージ(XML文書)を受信したWebサービスサーバ120の動作を説明する。ここでは、図5に示したメッセージを、Webサービスサーバ120(「N1」)で受信した場合を例に説明する。
【0068】
Webサービスサーバ120が、図5に示されるメッセージを受け取ると、サービス側署名・暗号処理部123がこのメッセージの署名検証および暗号の復号処理をする。このときのサービス側署名・暗号処理部123の処理手順を、図6および図7を用いて説明する(適宜図1から図5参照)。図6は、図2のサービス側署名・暗号処理部の動作を示すフローチャートである。図7は、図2のサービス側署名・暗号処理部が処理したXML文書を例示した図である。
【0069】
まず、サービス側署名・暗号処理部123は、メッセージの暗号情報が未処理の暗号情報であるか否かを判断する(ステップS701)。未処理の暗号情報のときには(ステップS701のYes)、ステップS702へ進み、この暗号情報を読み取る。一方、未処理の暗号情報でないときには(ステップS702のNo)、ステップS706へ進む。
【0070】
ステップS702で読み取った暗号情報において、暗号対象が自分であるときには(ステップS703のYes)、この暗号情報に従い暗号化データを復号する(ステップS704)。
【0071】
例えば、ステップS702で読み取った暗号情報が、図5の領域601の暗号情報(1)で、自身が「N1」のとき、この暗号情報の対象は自分であるので、暗号箇所「P1」の暗号データを、暗号アルゴリズム「A1」で復号する。一方、暗号対象が自分でないときは(ステップS703のNo)、ステップS706へ進む。
【0072】
そして、暗号データの復号後、XML文書中の処理済暗号情報を削除する(ステップS705)。つまり、図5のXML文書から、復号を行った暗号化データの暗号情報である「暗号情報(1)」を削除し(領域803参照)、図5の領域603の暗号化データの復号データ(図7の領域801)を書き込んだXML文書を作成する。そして、次の暗号情報があるときは(ステップS706のYes)、次の暗号処理情報へ進み(ステップS707)、ステップS701以降の処理を再び行う。一方、次の暗号情報がないときは(ステップS706のNo)、そのまま処理を終了する。
【0073】
例えば、ステップS706において、次の暗号情報として図5の領域602の「暗号情報(2)」があると判断し、かつステップS701でこの暗号情報が未処理であるときは、ステップS702で「暗号情報(2)」を読み取る。そして、ステップS703で暗号の対象が自分か否かを判断する。ここで、図5に示す「暗号情報(2)」の暗号対象は、「N1」ではなく(ステップS703のNo)、また「暗号情報(2)」の次に暗号情報はないので(ステップS706のNo)、そのまま処理を終了する。
【0074】
以上のようにして、Webサービスサーバ120は、自分を対象とした暗号のみ復号し自分が対象となっていない暗号データについては暗号データのままとしたXML文書を作成することができる。例えば、図7に示すように、図5の「暗号情報(1)」を削除し(領域803参照)、領域603の暗号化データの復号化データ(領域801参照)および暗号データ(領域802参照)を含むXML文書を作成することができる。この後、必要に応じて、Webサービスサーバ120は作成したXML文書をさらに別のWebサービスサーバへ送信するようにしてもよい。
【0075】
このようなWebサービスクライアント220を設定するWebサービスクライアント設定装置210によれば、署名・暗号処理を伴う2以上のWebサービスを仲介するWebサービスクライアント220の設定を容易なものとすることができる。
【0076】
また、前記した実施の形態では、インタフェース定義変換部212および署名・暗号定義変換部213は、Webサービスクライアント設定装置210に組み込まれるものとして説明したが、これをWebサービスサーバ設定装置110に組み込むようにしてもよい。
【0077】
さらに、Webサービスサーバ設定装置110の機能を、Webサービスサーバ120の一部として組み込むようにしてもよいし、Webサービスクライアント設定装置210をWebサービスクライアント220の一部として組み込むようにしてもよい(請求項のXML署名・暗号処理システムに相当)。また、Webサービスサーバ設定装置110は、前記したインタフェース定義変換部および署名・暗号定義変換部をさらに備えるようにして、他のWebサービスサーバのインタフェース定義および署名・暗号定義に基づきWebサービスサーバ120のインタフェース定義および署名・暗号定義を作成するようにしてもよい。
【0078】
本実施の形態に係るWebサービスクライアント設定装置210は、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記憶媒体に記憶して提供することが可能である。また、そのプログラムを、ネットワークを通して提供することも可能である。
【図面の簡単な説明】
【0079】
【図1】本システムの概要を示すブロック図である。
【図2】図1のシステムを機能展開して示したブロック図である。
【図3】(a)は、図1のサービス側インタフェース定義を例示した図であり、(b)は、図1のサービス側署名・暗号定義を例示した図である。
【図4】図1のクライアント側インタフェース定義を例示した図である。
【図5】図2のWebサーバが生成するXML文書を例示した図である。
【図6】図2のサービス側署名・暗号処理部の動作を示すフローチャートである。
【図7】図2のサービス側署名・暗号処理部が処理したXML文書を例示した図である。
【符号の説明】
【0080】
100,200 記憶装置
101 サービス側インタフェース定義(インタフェース定義情報)
102 サービス側署名・暗号定義(署名暗号定義情報)
110 Webサービスサーバ設定装置
111 サービス側インタフェース生成部
112 サービス側署名・暗号処理部生成部
120 Webサービスサーバ(Webサービス用ノード装置)
121 ユーザプログラム
122 サービス側インタフェース部(インタフェース)
123 サービス側署名・暗号処理部
201 クライアント側インタフェース定義(インタフェース定義情報)
202 クライアント側署名・暗号定義(署名暗号定義情報)
210 Webサービスクライアント設定装置(プログラミング装置)
212 インタフェース定義変換部
213 署名・暗号定義変換部
214 クライアント側署名・暗号処理部生成部(署名暗号処理部生成部)
215 クライアント側インタフェース生成部(インタフェース生成部)
220 Webサービスクライアント(Webサービス用ノード装置)
221 クライアント側署名・暗号処理部(署名暗号処理部)
222 クライアント側インタフェース部(インタフェース)
223 ユーザプログラム
300 ネットワーク

【特許請求の範囲】
【請求項1】
XML署名・暗号の処理を行うWebサービス用ノード装置が、
他のWebサービス用ノード装置から、1以上の前記XML署名および1以上のXML暗号の少なくとも一方を含むXML署名・暗号データと、前記XML署名・暗号データの署名または暗号の対象となるノード装置名とを含むXML文書を受信するステップと、
前記受信したXML文書のXML署名・暗号データのうち、自身のノード装置を対象とするXML署名・暗号データの署名検証および暗号復号を行うステップとを実行し、
前記受信したXML文書のXML署名・暗号データのうち、自身のノード装置を対象としないXML署名・暗号データは、署名検証および暗号復号は行わないことを特徴とするXML署名・暗号の処理方法。
【請求項2】
コンピュータに、請求項1に記載のXML署名・暗号の処理方法を実行させることを特徴とするXML署名・暗号処理用プログラム。
【請求項3】
他のWebサービス用ノード装置から送信されるXML文書を受信し、このXML文書に含まれるXML署名・暗号処理を行うWebサービス用ノード装置であって、
前記他のWebサービス用ノード装置から、1以上の前記XML署名および1以上のXML暗号の少なくとも一方を含むXML署名・暗号データと、前記XML署名・暗号データの署名または暗号の対象となるノード装置名とを含むXML文書を受信するとともに、前記受信したXML文書のXML署名・暗号データのうち、自身のノード装置を対象とするXML署名・暗号データの署名検証および暗号復号を行う署名暗号処理部を含むことを特徴とするWebサービス用ノード装置。
【請求項4】
コンピュータを、他のWebサービス用ノード装置から1以上の前記XML署名および1以上のXML暗号の少なくとも一方を含むXML署名・暗号データと、前記XML署名・暗号データの署名または暗号の対象となるノード装置名を含むXML文書を受信するとともに、前記受信したXML文書のXML署名・暗号データのうち、自身のノード装置を対象とするXML署名・暗号データの署名検証および暗号復号を行うWebサービス用ノード装置として機能させるコンピュータプログラムの生成方法であって、
前記プログラムを生成するコンピュータが、
ネットワーク経由で、前記他のWebサービス用ノード装置のインタフェース定義情報と、XML署名およびXML暗号処理の定義情報である署名暗号定義情報とを格納する記憶装置から、自身のノード装置を対象とするインタフェース定義情報および署名暗号定義情報を取得するステップと、
前記取得したインタフェース定義情報および署名暗号定義情報を満たす前記Webサービス用ノード装置のインタフェースを生成するステップと、
前記取得した署名暗号定義情報を満たす前記Webサービス用ノード装置の署名暗号処理モジュールを生成するステップと、
を実行することを特徴とするコンピュータプログラムの生成方法。
【請求項5】
前記取得したインタフェース定義情報および署名暗号定義情報を満たす前記Webサービス用ノード装置のインタフェースを生成するステップは、
前記取得したインタフェース定義情報を、前記Webサービス用ノード装置以外を対象とした署名の付された暗号データは、前記暗号データと署名とを一緒に扱い、前記Webサービス用ノード装置以外を対象とした暗号データは、前記暗号データをそのまま扱うためのインタフェースに書き換えた前記Webサービス用ノード装置用のインタフェース定義情報を生成するステップと、
前記Webサービス用ノード装置用のインタフェース定義情報を、記憶装置に記憶するステップと、
前記記憶装置のWebサービス用ノード装置用のインタフェース定義情報を読み出し、このWebサービス用ノード装置用のインタフェース定義情報に基づくインタフェースを生成するステップと、
を含むことを特徴とする請求項4に記載のコンピュータプログラムの生成方法。
【請求項6】
コンピュータに、請求項4または請求項5に記載のコンピュータプログラムの生成方法を実行させることを特徴とするプログラム。
【請求項7】
他のWebサービス用ノード装置から送信されるXML文書のXML署名・暗号処理を行うWebサービス用ノード装置のプログラミング装置であって、
ネットワーク経由で、前記他のWebサービス用ノード装置のインタフェース定義情報およびXML署名・暗号処理の定義情報である署名暗号定義情報を格納する記憶装置から、前記インタフェース定義情報および署名暗号定義情報を取得するとともに、前記取得したインタフェース定義情報を、前記Webサービス用ノード装置以外を対象として署名の付された暗号データは、前記暗号データと署名とを一緒に扱い、前記Webサービス用ノード装置以外を対象とした暗号データは、前記暗号データをそのまま扱う前記Webサービス用ノード装置用のインタフェース定義情報に変換するインタフェース定義変換部と、
前記変換したインタフェース定義情報に基づき、前記Webサービス用ノード装置用のインタフェースを生成するインタフェース生成部と、
前記記憶装置から、前記署名暗号定義情報を取得し、前記署名暗号定義情報を前記Webサービス用ノード装置用の署名暗号定義情報に変換する署名暗号定義変換部と、
前記変換した署名暗号定義情報に基づき、前記Webサービス用ノード装置用の署名暗号処理部のプログラムを生成する署名暗号処理部生成部と、
を備えることを特徴とするWebサービス用ノード装置のプログラミング装置。
【請求項8】
請求項3に記載のWebサービス用ノード装置および請求項7に記載のプログラミング装置を含むことを特徴とするXML署名・暗号処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−164018(P2006−164018A)
【公開日】平成18年6月22日(2006.6.22)
【国際特許分類】
【出願番号】特願2004−356711(P2004−356711)
【出願日】平成16年12月9日(2004.12.9)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】