Interstage Application Server セキュリティシステム運用ガイド |
目次
索引
![]() ![]() |
付録B SOAPサービスのセキュリティ | > B.3 ユーザ認証、SOAP電子署名、XML暗号を使用する方法 |
(1)SOAPメッセージに対するSOAP電子署名の付加
SOAPメッセージにSOAP電子署名を付加するための設定手順について説明します。
SOAP電子署名を付加するアプリケーションの実装は、Webサービス情報の変更で行います。アプリケーション・プログラムの変更はありません。
ただし、Messaging方式のアプリケーションの場合は、SOAP電子署名の署名対象となる要素にID型の属性を追加することで、署名対象の設定を簡易的に行うことが可能になります。
原本保証機能(SOAP電子署名、XML暗号)では、以下の属性をID型の属性とみなします。
名前空間URI:http://schemas.xmlsoap.org/ws/2002/07/utility |
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サービスでセキュリティ機能を使用するための環境設定”を参照してください。
(1-3)SOAP電子署名付加の設定
SOAP電子署名付加の設定をするには、Webサービス情報編集ツールを使用します。
以下にサーバシステム環境で表示される詳細情報を表示した画面を示します。
なおここでは、RPCアプリケーションの画面を例に説明します。
SOAP電子署名では、以下の2種類を署名対象とすることが可能です。
SAAJ-APIを使用してSOAPメッセージを付加した場合、署名対象となる要素にID型の属性を追加しておくことが可能です。SOAP電子署名では、以下の属性をID型とみなします。
名前空間URI:http://schemas.xmlsoap.org/ws/2002/07/utility |
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指定の場合、SOAPエンベロープ内すべてのノードに対してXPath式を評価した結果が真となるノードが署名対象となります。
SOAPボディのみをSOAP電子署名の署名対象とする場合には、以下のように指定します。
ancestor::soapenv:Body |
ここで、“soapenv”はSOAPBodyの名前空間プレフィックスを表します。プレフィックスを変更した場合、XPathで指定する場合にもその値を指定する必要があります。
“urn:sample”という名前空間URIと“localName”という名前を持つ要素をSOAP電子署名の署名対象とする場合、以下のように指定します。
ancestor-or-self::*[local-name()='localName' and namespace-uri()='urn:sample'] |
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サーバアプリケーションの画面を例に説明します。
目次
索引
![]() ![]() |