ページの先頭行へ戻る
Interstage Application Server セキュリティシステム運用ガイド

B.3.2 SOAP電子署名の設定

  (1)SOAPメッセージに対するSOAP電子署名の付加

  SOAPメッセージにSOAP電子署名を付加するための設定手順について説明します。

  (1-1)SOAP電子署名を付加するアプリケーションの実装

  SOAP電子署名を付加するアプリケーションの実装は、Webサービス情報の変更で行います。アプリケーション・プログラムの変更はありません。
  ただし、Messaging方式のアプリケーションの場合は、SOAP電子署名の署名対象となる要素にID型の属性を追加することで、署名対象の設定を簡易的に行うことが可能になります。
  原本保証機能(SOAP電子署名、XML暗号)では、以下の属性をID型の属性とみなします。

  名前空間URI:http://schemas.xmlsoap.org/ws/2002/07/utility
  ローカル名:"Id"

  SAAJ-APIを使用して、SOAPBodyに“body”という値のID型の属性を追加する例を以下に示します。

   .....
 String prefix = "wsu";
 String uri = "http://schemas.xmlsoap.org/ws/2002/07/utility";
 SOAPEnvelope env = ...;
 SOAPBody body = env.getBody();
 body.addNamespaceDeclaration(prefix, uri);
 body.addAttribute(env.createName("Id", prefix, uri), "body");
   .....

  また、添付ファイル(Attachmentデータ)をSOAP電子署名の署名対象とする場合、添付ファイルにMIMEヘッダ“Content-Id”を追加する必要があります。

  以下に、Attachmentデータに“sample.jpg”という値を持つMIMEヘッダ“Content-Id”を追加する例を示します。

 import javax.xml.soap.*;
    .....
  AttachmentPart _ap = ...;
  _ap.setContentType("image/jpeg");
  _ap.setContentId("sample.jpg");
    .....
  (1-2)秘密鍵の準備

  SOAP電子署名を付加するためには、秘密鍵および秘密鍵に対応したサイト証明書が必要になります。詳細については“B.2 SOAPサービスでセキュリティ機能を使用するための環境設定”を参照してください。

  

  認証局から証明書を取得する場合、鍵の使用用途としてSOAP電子署名用のものを取得する必要があります。

  (1-3)SOAP電子署名付加の設定

  SOAP電子署名付加の設定をするには、Webサービス情報編集ツールを使用します。

  以下にサーバシステム環境で表示される詳細情報を表示した画面を示します。
  なおここでは、RPCアプリケーションの画面を例に説明します。

■署名対象の指定方法

  SOAP電子署名では、以下の2種類を署名対象とすることが可能です。

IDによる署名対象の指定

  SAAJ-APIを使用してSOAPメッセージを付加した場合、署名対象となる要素にID型の属性を追加しておくことが可能です。SOAP電子署名では、以下の属性をID型とみなします。

  名前空間URI:http://schemas.xmlsoap.org/ws/2002/07/utility
  ローカル名:"Id"

  ID型の属性を持つ要素を署名対象とする場合、署名対象を“#”(シャープ文字)の後ろにID型の属性値を指定します。

 <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 xmlns:wsu="http:// schemas.xmlsoap.org/ws/2002/07/utility" wsu:Id="body">
     <m:ResponseBody xmlns:m="urn:SampleMsg">
       <Response>response string...</Response>
     </m:ResponseBody>
   </soapenv:Body>
 </soapenv:Envelope>

  上記SOAPメッセージに対して署名対象として“#body”を指定すると、<soapenv:Body>およびその内容が署名対象となります。

XPathによる署名対象の指定

  XPath指定の場合、SOAPエンベロープ内すべてのノードに対してXPath式を評価した結果が真となるノードが署名対象となります。

SOAPボディの内容を署名対象とする場合の指定方法

  SOAPボディのみをSOAP電子署名の署名対象とする場合には、以下のように指定します。

   ancestor::soapenv:Body

  ここで、“soapenv”はSOAPBodyの名前空間プレフィックスを表します。プレフィックスを変更した場合、XPathで指定する場合にもその値を指定する必要があります。

●任意の要素を署名対象とする場合の指定方法

  “urn:sample”という名前空間URIと“localName”という名前を持つ要素をSOAP電子署名の署名対象とする場合、以下のように指定します。

   ancestor-or-self::*[local-name()='localName' and namespace-uri()='urn:sample']

Content-Idによる署名対象の指定

  SOAPメッセージに含まれる添付ファイル(Attachmentデータ)をSOAP電子署名の署名対象とする場合、署名対象として、“cid:”の後ろにMIMEヘッダ“Content-Id”の値を続けた文字列で指定します。

  (2)SOAPメッセージに対するSOAP電子署名の検証

  (2-1)SOAP電子署名を検証するアプリケーションの実装

  SOAP電子署名を検証するアプリケーションの実装は、Webサービス情報の変更で行います。アプリケーション・プログラムの変更はありません。

  (2-2)サイト証明書・認証局証明書の準備

  SOAP電子署名を検証するためには、SOAP電子署名を付加した相手のサイト証明書か、そのサイト証明書を発行した認証局の証明書が必要になります。取得した証明書の管理方法については“B.2 SOAPサービスでセキュリティ機能を使用するための環境設定”を参照してください。

  (2-3)SOAP電子署名検証の設定

  SOAP電子署名検証の設定をするには、Webサービス情報編集ツールを使用します。

  以下にサーバシステム環境で表示される詳細情報を表示した画面を示します。
なおここでは、RPCサーバアプリケーションの画面を例に説明します。