(1)XML暗号によるSOAPメッセージの暗号化
SOAPメッセージをXML暗号によって暗号化するための設定手順について説明します。
(1-1)XML暗号による暗号化を行うアプリケーションの実装
XML暗号による暗号化を行うアプリケーションの実装は、Webサービス情報の変更で行います。アプリケーション・プログラムの変更はありません。
ただし、Messaging方式のアプリケーションを作成する場合には、XML暗号による暗号化対象となる要素にID型の属性を追加することで、暗号化対象の設定を簡易的に行うことが可能になります。
添付ファイル(Attachmentデータ)をXML暗号による暗号化対象とする場合、AttachmentデータにMIMEヘッダ“Content-Id”を追加する必要があります。
ID型の属性の追加や、AttachmentデータにMIMEヘッダ“Content-Id”を指定する方法については、“ (1-1)SOAP電子署名を付加するアプリケーションの実装”を参照してください。
また、XML暗号を使用した場合のURLについては、Interstage V9.1.0の“SOAPサービス ユーザーズガイド”の“Webサービス識別名とURL”の“サーバシステムのディプロイメントで指定するWebサービス識別名とURL”を参照してください。
(1-2)サイト証明書の準備
XML暗号により暗号化するためには、暗号化されたSOAPメッセージを復号化する相手のサイト証明書が必要になります。取得した証明書の管理方法については“B.2 SOAPサービスでセキュリティ機能を使用するための環境設定”を参照してください。
(1-3)XML暗号による暗号化の設定
XML暗号による暗号化の設定をするには、Webサービス情報編集ツールを使用します。
以下にサーバシステム環境で表示される詳細情報を表示した画面を示します。
なおここでは、リモート呼び出しのサーバアプリケーションの画面を例に説明します。
Webサービス識別名
Webサービスの識別名を入力します。
Webサービス識別名の指定方法については、Interstage V9.1.0の“SOAPサービス ユーザーズガイド”の“Webサービス情報の管理”の“Webサービス識別名とURL”を参照してください。
処理済HeaderElement:削除しない
リクエスト / レスポンスメッセージを受信後、処理を完了したSOAPヘッダ要素を削除するかどうかを設定します。
デフォルトは“削除しない”です。
[サーバ機能] レスポンス送信設定:暗号化ID
[クライアント機能] リクエスト送信設定:暗号化ID
SOAPメッセージのリクエスト/レスポンス送信時の暗号化の設定をします。設定方法は、“暗号化しない”もしくはXML暗号による暗号化で使用するサイト証明書の別名を選択します。
デフォルト値は“暗号化しない”です。
[サーバ機能] レスポンス送信設定:“詳細”ボタン
[クライアント機能] リクエスト送信設定:“詳細”ボタン
暗号設定の“詳細”/“標準”切り替えを行うボタンです。
上図は、“詳細”ボタンを押下した状態です。
暗号化対象(省略可能)
暗号化の対象を指定します。
暗号化対象の要素にID型の属性が付いている場合や添付ファイル(Attachmentデータ)を暗号化する場合、“URI/ID”を選択して暗号化対象を記述します。
XPathを使用して暗号化対象を指定する場合、“XPath”または“XPath(Content) ”を選択して暗号化対象を記述します。
暗号化対象の指定方法については、“暗号化対象の指定方法”を参照してください。
暗号化対象:XPath
暗号化対象の指定方式を設定します。設定方法は“XPath”, “XPath(Content)”, “URI/ID”の3択です。デフォルト値は“XPath”です。
[サーバ機能] リクエスト送信設定:宛先role(actor)名指定
[クライアント機能] レスポンス送信設定:宛先role(actor)名指定
SOAPメッセージの中継者(intermediary)に何らかの処理を行わせたい場合に、中継者のURIを指定します。省略した場合には、SOAPメッセージの最終到達者(ultimate destination)に対する振る舞いを指定していることになります。
[サーバ機能] リクエスト送信設定:mustUnderstand
[クライアント機能] レスポンス送信設定:mustUnderstand
SOAPメッセージの受信者がヘッダ中の要素を必ず処理しなければならないのか、選択可能であるのかを指定します。
デフォルトは“処理を行う必要なし”です。
Webサービス情報編集ツールでXML暗号による暗号化機能を有効にすると、設定した内容に基づき送信するSOAPメッセージに対して自動的にXML暗号による暗号化を行います。
暗号化の対象を省略した場合、SOAPメッセージ内のSOAPボディ要素の内容を暗号化します。
XML暗号による暗号化については、soapsecencconfコマンドを使用しても設定可能です。soapsecencconfコマンドについては、「リファレンスマニュアル(コマンド編)」を参照してください。
■暗号化対象の指定方法
XML暗号による暗号化では、以下の2種類を暗号化対象とすることが可能です。
SOAPエンベロープ内部の任意のノード(ただしSOAPエンベロープ、SOAPボディ、SOAPヘッダは除く)
IDによる指定
XPathによる指定
Attachmentデータ
Content-Idによる指定
●IDによる暗号化対象の指定
IDによる暗号化対象の指定方法は、IDによるSOAP電子署名の指定方法と同じです。指定方法については、“■署名対象の指定方法”を参照してください。
●XPathによる暗号化対象の指定
IDにより暗号化対象を指定できない場合、XPathを用いて暗号化対象を指定可能です。XPathを用いて暗号化対象を指定する場合、Webサービス情報編集ツールの暗号化対象の種別を“XPath”または“XPath(Content)”を指定する必要があります。
暗号化対象の種別として“XPath”を指定した場合、XPathで指定した要素が暗号化対象となります。一方で、暗号化対象の種別として“XPath(Content)”を指定した場合、指定した要素の内容が暗号化されます。
なお、XPath式を評価する場合の起点ノードはSOAPエンベロープ要素となります。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <m:ResponseBody xmlns:m="urn:SampleMsg"> <Response>response string...</Response> </m:ResponseBody> </soapenv:Body> </soapenv:Envelope> |
descendant::Response
SOAPエンベロープの子孫(descendant)であるResponse要素を指定します。暗号化の種別として“XPath”を指定した場合にはResponse要素が、“XPath(Content)”を指定した場合にはResponse要素の内容である“response string...”文字列が暗号化されます。
child::*[local-name()='Body']
SOAPエンベロープの子 (child)であるsoapenv:Body要素を指定します。暗号化の種別として“XPath(Content)”を指定した場合には、soapenv:Body要素の内容であるm:ResponseBody要素が暗号化されます。SOAPボディ要素そのものを暗号化することはできないため、“XPath”を指定すると、実行時にエラーが発生します。
descendant::*[local-name()='ResponseBody' and namespace-uri()='urn:SampleMsg'][1]
SOAPエンベロープの子孫(descendant)である1番目のm:ResponseBody要素を指定します。暗号化の種別として“XPath”を指定した場合にはm:ResponseBody要素が、“XPath(Content)”を指定した場合にはm:ResponseBody要素の内容であるResponse要素が暗号化されます。
●Content-Idによる暗号化対象の指定
Content-Idによる暗号化対象の指定方法は、Content-IdによるSOAP電子署名の指定方法と同じです。指定方法については、“■署名対象の指定方法”を参照してください。
(2)XML暗号によるSOAPメッセージの復号化
XML暗号よって暗号化されたSOAPメッセージを復号化するための設定手順について説明します。
(2-1)XML暗号による復号化を行うアプリケーションの実装
XML暗号による復号化を行うアプリケーションの実装は、Webサービス情報の変更で行います。アプリケーション・プログラムの変更はありません。
(2-2)秘密鍵の準備
SOAP電子署名を付加するためには、秘密鍵および秘密鍵に対応したサイト証明書が必要になります。詳細については“B.2 SOAPサービスでセキュリティ機能を使用するための環境設定”を参照してください。
(2-3)XML暗号による復号化の設定
XML暗号による復号化の設定をするには、Webサービス情報編集ツールを使用します。
以下にサーバシステム環境で表示される詳細情報を表示した画面を示します。
なおここでは、リモート呼び出しのサーバアプリケーションの画面を例に説明します。
Webサービス識別名
Webサービスの識別名を入力します。
Webサービス識別名の指定方法については、Interstage V9.1.0の“SOAPサービス ユーザーズガイド”の“Webサービス情報の管理”の“Webサービス識別名とURL”を参照してください。
処理済HeaderElement:削除しない
リクエスト / レスポンスメッセージを受信後、処理を完了したSOAPヘッダ要素を削除するかどうかを設定します。
デフォルトは“削除しない”です。
Webサービスのrole(actor)名
Webサービスのrole(actor)名を設定する場合に、URI形式で指定します。
2つ以上のrole(actor)名を記述する場合、“,”(カンマ)で区切ります。
Webサービスのrole(actor)名は、SOAPが規定する転送を行う場合の転送路におけるWebサービスの役割名であり、この値に一致する宛先role(actor)名を持つSOAPヘッダ要素のみを処理します。
通常は指定しなくて構いません。
[サーバ機能] リクエスト受信設定:復号化
[クライアント機能] レスポンス受信設定:復号化
サーバアプリケーションリクエスト受信にXML暗号による復号化の有無を設定します。
デフォルト値は“しない”です。
復号化は用意した秘密鍵で自動的に行われるため、Webサービス情報編集ツールでXML暗号による復号化機能を有効にするだけでXML暗号による復号化処理を行うことができます。
XML暗号による復号化については、soapsecdecconfコマンドを使用しても設定可能です。soapsecdecconfコマンドについては、“リファレンスマニュアル(コマンド編)”を参照してください。