6.2.5. 暗号化および署名するメッセージの一部の指定

概要

暗号化と署名は、それぞれ機密性と整合性の 2 種類の保護を提供します。WS-SecurityPolicy の保護アサーションは、メッセージの どの 部分を保護するかを指定するために使用されます。一方、保護メカニズムの詳細は、関連するバインディングポリシー (x「AsymmetricBinding ポリシーの指定」「SymmetricBinding ポリシーの指定」、および 「トランスポート層のメッセージ保護」を参照) で個別に指定されます。

ここで説明する保護アサーションは、SOAP メッセージの機能に適用されるため、SOAP セキュリティーと組み合わせて使用することが意図されています。ただし、これらのポリシーは、特定の部分ではなくメッセージ 全体 に対して保護を適用するトランスポートバインディング (HTTPS など) によっても満たされます。

ポリシー件名

保護アサーションは、メッセージポリシーの件名 に適用する必要があります (「メッセージポリシー件名」 を参照)。つまり、WSDL バインディングの wsdl:inputwsdl:output、または wsdl:fault 要素内に配置する必要があります。たとえば、ID MutualCertificate10SignEncrypt_IPingService_header_Input_policy を使用した保護ポリシーでは、以下のように wsdl:input メッセージにポリシーを適用することができます。

<wsdl:operation name="header">
  <soap:operation soapAction="http://InteropBaseAddress/interop/header" style="document"/>
  <wsdl:input name="headerRequest">
    <wsp:PolicyReference
        URI="#MutualCertificate10SignEncrypt_IPingService_header_Input_policy"/>
      <soap:header message="i0:headerRequest_Headers" part="CustomHeader" use="literal"/>
      <soap:body use="literal"/>
    </wsdl:input>
    ...
</wsdl:operation>

保護アサーション

Apache CXF では、以下の WS-SecurityPolicy の保護アサーションがサポートされます。

  • SignedParts
  • EncryptedParts
  • SignedElements
  • EncryptedElements
  • ContentEncryptedElements
  • RequiredElements
  • RequiredParts

構文

SignedParts 要素の構文は以下のようになります。

<sp:SignedParts xmlns:sp="..." ... >
  <sp:Body />?
  <sp:Header Name="xs:NCName"? Namespace="xs:anyURI" ... />*
  <sp:Attachments />?
  ...
</sp:SignedParts>

EncryptedParts 要素の構文は以下のようになります。

<sp:EncryptedParts xmlns:sp="..." ... >
  <sp:Body/>?
  <sp:Header Name="xs:NCName"? Namespace="xs:anyURI" ... />*
  <sp:Attachments />?
  ...
</sp:EncryptedParts>

サンプルポリシー

例6.6「整合性および暗号化ポリシーの評価」 は、署名済みの部分アサーションと暗号化されたパーツアサーションの 2 つの保護アサーションを組み合わせるポリシーを示しています。このポリシーがメッセージ部分に適用されると、影響を受けるメッセージボディーは署名され、暗号化されます。また、CustomHeader という名前のメッセージヘッダーは署名されます。

例6.6 整合性および暗号化ポリシーの評価

<wsp:Policy wsu:Id="MutualCertificate10SignEncrypt_IPingService_header_Input_policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
                <sp:Header Name="CustomHeader" Namespace="http://InteropBaseAddress/interop"/>
            </sp:SignedParts>
            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:EncryptedParts>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

sp:Body

この要素は、保護 (暗号化または署名) がメッセージの本文に適用されることを指定します。保護は、メッセージボディー 全体 (つまり soap:Body 要素、その属性、およびそのコンテンツ) に適用されます。

sp:Header

この要素は、Name 属性を使用したヘッダーのローカル名および Namespace 属性を使用した namespace で指定された SOAP ヘッダーに保護が適用されるように指定します。保護は、属性とコンテンツを含むメッセージヘッダー 全体 に適用されます。

sp:Attachments

この要素は、添付ファイル付きのすべての SOAP (SwA) 添付ファイルが保護されることを指定します。