Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

WS-Policy 構成クラスの詳細

参考のため、この章では、Caché が WS-Policy 情報を格納するために使用する構成クラスについて詳しく説明します。以下のトピックについて説明します。

構成クラスの基本

WS-Policy 構成クラスを手動で作成するには、%SOAP.ConfigurationOpens in a new tab のサブクラスを作成します。このクラスで、次のとおり XData ブロックを追加します。

XData service
{
<cfg:configuration xmlns:cfg="http://www.intersystems.com/configuration" name="service">
...

XData ブロックの一般的な構造は、次のとおりです。

XData service
{
<cfg:configuration ...>
   <service ...>
      <method ...>
         <request ...>
         <response ...>
...

要素 <service><method><request>、および <response> にはそれぞれ、そのレベルで適用されるポリシー情報を含めることができます。<service> 要素は必須ですが、他の要素はオプションです。

ポリシー情報を含める場合は、ポリシー式 (<wsp:Policy> 要素) か、ポリシー参照 (同じ構成クラス内の別の XData ブロックに含まれているポリシーをポイントする <wsp:PolicyReference> 要素) のいずれかになります。以下のセクションで詳細を説明します。

<PolicyReference> は 2 つの場所のみでサポートされています。構成要素内の <Policy> 要素の代わりとして、または <Policy> 要素の唯一の子としてです。

InterSystems 拡張属性の追加

前述の cfg:wsdlElement 属性に加えて、ポリシー要素内の以下の要素で InterSystems 拡張属性の追加が必要になる場合があります。

  • <sp:X509Token> (<sp:InitiatorToken> または <sp:RecipientToken> 内)

    この要素では、cfg:FindField 属性および cfg:FindValue 属性の値を指定します。これらの属性は、このトークンで使用される Caché 資格情報セットを指定するものです。

    • cfg:FindField 属性は、検索するフィールドの名前を指定します。通常、これは Alias です。

    • cfg:FindValue 属性は、そのフィールドの値を指定します。cfg:FindFieldAlias である場合、これは、Caché 資格情報セットの名前です。

    以下はその例です。

    <sp:X509Token IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never" 
                  cfg:FindField="Alias" 
                  cfg:FindValue="servercred">
      <wsp:Policy>
        <sp:WssX509V3Token11/>
      </wsp:Policy>
    </sp:X509Token>
    
  • <sp:HttpsToken>

    この要素では、cfg:SSLConfiguration 属性の値を指定します。これは、Caché SSL/TLS 構成の名前と同じになります。以下はその例です。

    <sp:HttpsToken cfg:SSLConfiguration="mysslconfig">
        <wsp:Policy/>
    </sp:HttpsToken>

    Web クライアントの場合のみ、この属性を指定してください。

  • <sp:SecureConversationToken>

    この要素では、cfg:Lifetime 属性を指定できます。これは、安全な通信の存続時間と同じにする必要があります。単位は、時間または小数の時間です。既定の存続時間は 5 分です。この存続時間を 15 分に指定すると仮定します。このためには、以下のように <sp"SecureConversationToken> を編集します。

    <sp:SecureConversationToken cfg:Lifetime=".25"
      sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
        <wsp:Policy>
          <sp:MustNotSendAmend/>
          <sp:MustNotSendRenew/>
      ...
      </wsp:Policy>
    </sp:SecureConversationToken>
    

    Web クライアントの場合のみ、この属性を指定してください。

接頭語 cfg の詳細は、次のセクションを参照してください。

Web サービス/クライアント構成ウィザードを使用してポリシーを作成する場合、Caché は、これらの属性の値を自動的に設定します。Web クライアントまたはサービスの生成時に構成クラスを生成する場合は、これらの属性を編集する必要があることもあります。

構成 XData ブロックの詳細

このセクションでは、Web サービスまたはクライアント構成クラスの XData ブロックの内容について説明します。

<configuration><service><method><request>、および <response> 要素はすべて、次のネームスペース内に存在していなければなりません。

"http://www.intersystems.com/configuration"

この章では、接頭語 cfg がそのネームスペースを示します。

この章内で前述の “InterSystems 拡張属性” も参照してください。

<configuration>

<configuration> 要素は、XData ブロックのルート要素です。この要素には次の項目が含まれます。

属性または要素 目的
name (オプション) この構成の名前。指定する場合は、XData ブロックの名前と一致させる必要があります。
<service> (オプション) ポリシーを Caché Web サービスまたは Web クライアントに関連付けます。

<service>

<service> 要素は、ポリシーを Caché Web サービスまたは Web クライアントに関連付けます。この要素には次の項目が含まれます。

属性または要素 目的
classname (必須) Caché Web サービスまたはクライアントのパッケージとクラスの完全な名前。
<wsp:Policy> (0 または 1 を含む) この Web サービスまたはクライアントに (バインディング・レベルで) 適用するポリシーを指定します。WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<wsp:PolicyReference> (0 または 1 を含む) この Web サービスまたはクライアントに (バインディング・レベルで) 適用するポリシー参照を指定します。これを指定する場合、policyID 属性は、同じ構成クラス内の別の XData ブロックで定義されているローカル・ポリシーへの参照である必要があります。 使用例は、この章で後述する “ポリシー参照を使用した構成” を参照してください。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<method> (0 以上を含む) 指定の Web サービスまたはクライアントの特定の Web メソッドにポリシーを関連付けます (処理レベルで適用)。<service> 要素には、<method> 要素を任意の数だけ含めることができます。

以下はその例です。

<cfg:configuration 
xmlns:cfg="http://www.intersystems.com/configuration" 
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:wsp="http://www.w3.org/ns/ws-policy" 
name="service">
  <cfg:service classname="DemoPolicies.NoSecurity">
    <wsp:Policy>
      <wsap:UsingAddressing/>
    </wsp:Policy>
  </cfg:service>
</cfg:configuration>

<service> の子である <wsp:Policy> または <wsp:PolicyReference> 内で、cfg:wsdlElement 属性を指定できます。この属性は、このポリシー要素の添付先となる WSDL のパートを指定するものです。このコンテキストでは、この属性に次のいずれの値も指定できます。

  • "service" — このポリシー要素を WSDL <service> 要素に添付します。

  • "port" — このポリシー要素を WSDL <port> 要素に添付します。

  • "binding" (既定) — このポリシー要素を WSDL <binding> 要素に添付します。

  • "portType" — このポリシー要素を WSDL <portType> 要素に添付します。

<method>

<method> 要素は、親の <service> 要素によって指定された Web サービスまたはクライアント内の特定の Web メソッドにポリシーを関連付けます。<method> 要素には次の項目が含まれます。

属性または要素 目的
name Web メソッドの名前。
<wsp:Policy> (0 または 1 を含む) この Web サービスまたはクライアントに (処理レベルで) 適用するポリシーを指定します。WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<wsp:PolicyReference> (0 または 1 を含む) この Web メソッドのオプションの参照として WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。policyID 属性は、同じ構成クラス内の別の XData ブロックで定義されているローカル・ポリシーへの参照です。 使用例は、この章で後述する “ポリシー参照を使用した構成” を参照してください。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<request> (0 または 1 を含む) ポリシーを Web メソッドの要求メッセージに関連付けます。
<response> (0 または 1 を含む) ポリシーを Web メソッドの応答メッセージに関連付けます。

<method> の子である <wsp:Policy> または <wsp:PolicyReference> 内で、cfg:wsdlElement attribute 属性を指定できます。この属性は、このポリシー要素の添付先となる WSDL のパートを指定するものです。このコンテキストでは、この属性に次のいずれの値も指定できます。

  • "binding" (既定) — このポリシー要素を WSDL <binding> 要素に添付します。

  • "portType" — このポリシー要素を WSDL <portType> 要素に添付します。

<request>

<request> 要素は、親の <method> 要素が参照する Web メソッドの要求メッセージにポリシーを関連付けます。<request> 要素には次の項目が含まれます。

属性または要素 目的
<wsp:Policy> (0 または 1 を含む) 要求メッセージに適用するポリシーを指定します。WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<wsp:PolicyReference> (0 または 1 を含む) この要求メッセージのオプションの参照として WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。policyID 属性は、同じ構成クラス内の別の XData ブロックで定義されているローカル・ポリシーへの参照です。 使用例は、この章で後述する “ポリシー参照を使用した構成” を参照してください。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<request> の子である <wsp:Policy> または <wsp:PolicyReference> 内で、cfg:wsdlElement 属性を指定できます。この属性は、このポリシー要素の添付先となる WSDL のパートを指定するものです。このコンテキストでは、この属性に次のいずれの値も指定できます。

  • "binding" (既定) — このポリシー要素を WSDL <binding> 要素に添付します。

  • "portType" — このポリシー要素を WSDL <portType> 要素に添付します。

  • "message" — このポリシー要素を WSDL <message> 要素に添付します。

<response>

<response> 要素は、親の <method> 要素が参照する Web メソッドの応答メッセージにポリシーを関連付けます。<response> 要素には次の項目が含まれます。

属性または要素 目的
<wsp:Policy> (0 または 1 を含む) 応答メッセージに適用するポリシーを指定します。WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<wsp:PolicyReference> (0 または 1 を含む) この応答メッセージのオプションの参照として WS-Policy 1.2 または WS-Policy 1.5 のポリシー式を指定します。policyID 属性は、同じ構成クラス内の別の XData ブロックで定義されているローカル・ポリシーへの参照です。使用例は、この章で後述する “ポリシー参照を使用した構成” を参照してください。

<wsp:Policy><wsp:PolicyReference> を指定するか、どちらも指定しません。

<response> の子である <wsp:Policy> または <wsp:PolicyReference> 内で、cfg:wsdlElement 属性を指定できます。この属性は、このポリシー要素の添付先となる WSDL のパートを指定するものです。このコンテキストでは、この属性に次のいずれの値も指定できます。

  • "binding" (既定) — このポリシー要素を WSDL <binding> 要素に添付します。

  • "portType" — このポリシー要素を WSDL <portType> 要素に添付します。

  • "message" — このポリシー要素を WSDL <message> 要素に添付します。

カスタム構成の例

このセクションでは、カスタム構成クラスの例をいくつか紹介します。

代替ポリシーを使用した構成

次の構成クラスには、2 つの代替ポリシー、すなわち WS-Addressing ヘッダを使用するものと使用しないものが含まれています。

/// PolicyAlternatives.DivideWSConfig
Class PolicyAlternatives.DivideWSConfig Extends %SOAP.Configuration
{

XData service
{
<cfg:configuration xmlns:cfg="http://www.intersystems.com/configuration" 
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:wsp="http://www.w3.org/ns/ws-policy" 
name="service">
  <cfg:service classname="PolicyAlternatives.DivideWS">
   <wsp:Policy>
     <wsp:ExactlyOne>
       <wsp:All>
         <wsap:UsingAddressing/>
       </wsp:All>
       <wsp:All>
         <wsp:Policy/>
       </wsp:All>
     </wsp:ExactlyOne>
    </wsp:Policy>
  </cfg:service>
</cfg:configuration>
}

}

WS-Addressing を必要とするポリシーが添付されている Web クライアントで使用されると、この Web サービスは、WS-Addressing ヘッダを持つメッセージで応答します。WS-Addressing を使用しないポリシーのクライアントで使用されると、この Web サービスは、WS-Addressing ヘッダを持たないメッセージで応答します。

別のシナリオとしては、あるポリシーでは SSL/TLS を必要とし、別なポリシーではメッセージの暗号化を使用する (X.509 相互証明書セキュリティ ポリシーなど) といったものがあります。

ポリシー参照を使用した構成

次の構成クラスには、2 つの XData ブロックが含まれています。1 つには、ID 属性が mypolicy であるポリシーが含まれており、もう 1 つには、Web サービスの構成が含まれています。この構成は、他の XData ブロックにあるポリシーを参照します。

Class DemoPolicies.WithReferenceConfig Extends %SOAP.Configuration
{

XData service
{
<cfg:configuration 
xmlns:cfg="http://www.intersystems.com/configuration"  
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
xmlns:wsp="http://www.w3.org/ns/ws-policy" 
name="service">
  <cfg:service classname="DemoPolicies.WithReference">
    <wsp:PolicyReference URI="#mypolicy">
    </wsp:PolicyReference>
  </cfg:service>
</cfg:configuration>
}

XData Policy1
{
<wsp:Policy 
  xmlns:wsp="http://www.w3.org/ns/ws-policy" 
  xmlns:wsu="http://schemas.xmlsoap.org/ws/2003/06/utility"
  xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl" 
  xmlns:wsoma="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" 
  wsu:Id="mypolicy">
 <wsap:UsingAddressing/>
 <wsoma:OptimizedMimeSerialization/>
</wsp:Policy>
}

}

この例では、ポリシー式は Policy1 という名前の XData ブロックに含まれています。このブロックの名前は、WSDL または SOAP の操作に影響しません。

FeedbackOpens in a new tab