Menu Close

6.2.4. SymmetricBinding ポリシーの指定

概要

対称バインディングポリシーは、対称鍵アルゴリズム (共有秘密鍵) を使用して SOAP メッセージの保護を SOAP 層で実装します。対称バインディングの例は、Kerberos プロトコルと WS-SecureConversation プロトコルです。

注記

現在、Apache CXF は対称バインディングで WS-SecureConversation トークン のみ をサポートします。

ポリシーサブジェクト

対称バインディングポリシーは、エンドポイントポリシーサブジェクトに適用する必要があります (「エンドポイントポリシーサブジェクト」 を参照)。たとえば、ID SecureConversation_MutualCertificate10SignEncrypt_IPingService_policy を持つ対称バインディングポリシーの場合、以下のようにポリシーをエンドポイントバインディングに適用できます。

<wsdl:binding name="SecureConversation_MutualCertificate10SignEncrypt_IPingService" type="i0:IPingService">
  <wsp:PolicyReference URI="#SecureConversation_MutualCertificate10SignEncrypt_IPingService_policy"/>
  ...
</wsdl:binding>

構文

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

<sp:SymmetricBinding xmlns:sp="..." ... >
  <wsp:Policy xmlns:wsp="...">
  (
   <sp:EncryptionToken ... >
     <wsp:Policy> ... </wsp:Policy>
   </sp:EncryptionToken>
   <sp:SignatureToken ... >
     <wsp:Policy> ... </wsp:Policy>
   </sp:SignatureToken>
  ) | (
   <sp:ProtectionToken ... >
     <wsp:Policy> ... </wsp:Policy>
   </sp:ProtectionToken>
  )
   <sp:AlgorithmSuite ... > ... </sp:AlgorithmSuite>
   <sp:Layout ... > ... </sp:Layout> ?
   <sp:IncludeTimestamp ... /> ?
   <sp:EncryptBeforeSigning ... /> ?
   <sp:EncryptSignature ... /> ?
   <sp:ProtectTokens ... /> ?
   <sp:OnlySignEntireHeadersAndBody ... /> ?
   ...
  </wsp:Policy>
  ...
</sp:SymmetricBinding>

サンプルポリシー

例6.5「対称バインディングの例」 は、署名と暗号化でのメッセージ保護をサポートする対称バインディングの例を示しています。署名と暗号化は、単一の対称鍵を使用して (つまり、対称暗号を使用して) 実行されます。ただし、この例では、メッセージの どの 部分を署名して暗号化する必要があるのかを指定していません。指定方法の詳細は、「暗号化および署名するメッセージ部分の指定」 を参照してください。

例6.5 対称バインディングの例

<wsp:Policy wsu:Id="SecureConversation_MutualCertificate10SignEncrypt_IPingService_policy">
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:ProtectionToken>
            <wsp:Policy>
              <sp:SecureConversationToken>
                ...
              </sp:SecureConversationToken>
            </wsp:Policy>
          </sp:ProtectionToken>
          <sp:AlgorithmSuite>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Lax/>
            </wsp:Policy>
          </sp:Layout>
          <sp:IncludeTimestamp/>
          <sp:EncryptSignature/>
          <sp:OnlySignEntireHeadersAndBody/>
        </wsp:Policy>
      </sp:SymmetricBinding>
      <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:MustSupportRefKeyIdentifier/>
          <sp:MustSupportRefIssuerSerial/>
        </wsp:Policy>
      </sp:Wss10>
      ...
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>

sp:ProtectionToken

この要素は、メッセージの署名と暗号化の両方に使用する対称トークンを指定します。たとえば、WS-SecureConversation トークンをここで指定できます。

個別のトークンを署名および暗号化操作に使用する場合は、この要素の代わりに sp:SignatureToken 要素と sp:EncryptionToken 要素を使用します。

sp:SignatureToken

この要素は、メッセージの署名に使用する対称トークンを指定します。これは、sp:EncryptionToken 要素と組み合わせて使用する必要があります。

sp:EncryptionToken

この要素は、メッセージの暗号化に使用する対称トークンを指定します。これは、sp:SignatureToken 要素と組み合わせて使用する必要があります。

sp:AlgorithmSuite

この要素は、署名および暗号化に使用する暗号化アルゴリズムのスイートを指定します。利用可能なアルゴリズムスイートの詳細は、「アルゴリズムスイートの指定」 を参照してください。

sp:Layout

この要素は、セキュリティーヘッダーが SOAP メッセージに追加される順序で条件を課すかどうかを指定します。sp:Lax 要素は、セキュリティーヘッダーの順序に条件を課さないことを指定します。sp:Lax の代替は、sp:Strictsp:LaxTimestampFirst、または sp:LaxTimestampLast です。

sp:IncludeTimestamp

この要素がポリシーに含まれる場合、ランタイムは wsu:Timestamp 要素を wsse:Security ヘッダーに追加します。デフォルトでは、タイムスタンプは 含まれません

sp:EncryptBeforeSigning

メッセージ部分が暗号化と署名の両方の対象となる場合は、これらの操作が実行される順序を指定する必要があります。デフォルトでは、暗号化する前に署名するという順序になっています。ただし、この要素を対称ポリシーに含めると、署名する前に暗号化するように順序が変更されます。

注記

暗黙的に、この要素は復号化および署名の検証操作の順序にも影響します。たとえば、メッセージの送信者が暗号化する前に署名する場合、メッセージの受信者は署名を検証する前に復号化する必要があります。

sp:EncryptSignature

この要素は、メッセージ署名を暗号化する必要があることを指定します。デフォルトは false です。

sp:ProtectTokens

この要素は、署名がその署名の生成に使用されるトークンに対応している必要があることを指定します。デフォルトは false です。

sp:OnlySignEntireHeadersAndBody

この要素は、署名をボディー全体またはヘッダー全体に のみ 適用でき、本文のサブ要素またはヘッダーのサブ要素には適用できないことを指定します。このオプションを有効にすると、実質的に sp:SignedElements アサーションを使用できなくなります (「暗号化および署名するメッセージ部分の指定」 を参照)。