Interstage Application Server セキュリティシステム運用ガイド
目次 索引 前ページ次ページ

付録B SOAPサービスのセキュリティ> B.3 ユーザ認証、SOAP電子署名、XML暗号を使用する方法

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電子署名を付加するためには、秘密鍵および秘密鍵に対応したサイト証明書が必要になります。詳細については“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電子署名を付加した相手のサイト証明書か、そのサイト証明書を発行した認証局の証明書が必要になります。取得した証明書の管理方法については“SOAPサービスでセキュリティ機能を使用するための環境設定”を参照してください。

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

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

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


目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED