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?

ポリシーの作成と使用

この章では、Caché で WS-Policy サポートを使用する方法を説明します。WS-Policy により、使用する WS-Security ヘッダまたは必要な WS-Security ヘッダを指定できます。また、WS-Addressing ヘッダおよび MTOM の使用を指定することもできます ("Caché での Web サービスおよび Web クライアントの作成" を参照)。Web サービスまたは Web クライアントを直接編集するのではなく、個別のクラスでポリシーを作成します。ほとんどの場合、低レベルのプログラミングは必要ありません。

以下の項目について説明します。

概要

Caché では、Web サービスまたは Web クライアントのポリシー (またはポリシーのコレクション) は、別々の構成クラス (%SOAP.ConfigurationOpens in a new tab のサブクラス) に含まれています。ポリシーは、クラスがコンパイルされたときに有効になります。

Web サービスの WSDL が既に定義されている場合は、構成クラスを生成できます。最初に Web サービスを作成する場合は、Web サービス/クライアント構成ウィザードを使用して、事前定義されたポリシーの選択および構成を行い、Web サービスに適用できます。クラスを手動で作成することもできます。

通常、コーディングの必要はありません。ただし、場合によってはその要素をポリシーにハードコードするのではなく、詳細をプログラムで指定してもかまいません。

構成クラスの影響

構成クラスをコンパイルすると、Web サービスまたはクライアントの以降の動作は次のような影響を受けます。

  • Web サービスまたはクライアントでは、ポリシーの詳細に従って、発信メッセージに追加のヘッダ要素が含まれます。

  • Web サービスまたはクライアントは、ポリシーに基づいて着信 SOAP メッセージを検証します。これには、必要に応じた着信メッセージの解読も含まれます。

  • Web サービスまたはクライアントは、オプションで、発信メッセージを必要に応じて暗号化します。

  • Web サービスでは、WSDL が自動的に影響を受けます。具体的には、<wsp:Policy> 要素が追加され、ネームスペース宣言に次の行が含まれるようになります。

    xmlns:wsp="http://www.w3.org/ns/ws-policy"
    
Important:

構成クラスが複数のネームスペースにマップされている場合は、これらの各ネームスペースでコンパイルする必要があります。

WS-Security、WS-Addressing、および MTOM サポートとの関係

WS-Policy に対する Caché のサポートは、WS-Security、WS-Addressing、および MTOM に対する Caché のサポートに基づいています。以下の点に注意してください。

  • ポリシーにセキュリティ・ポリシーが含まれていない場合、Caché は、Web サービスまたは Web クライアントの SecurityOut プロパティを使用します (Web サービスまたは Web クライアントにセキュリティ・ヘッダ要素を手動で追加するには、このドキュメントで後述するように、SecurityOut プロパティに追加します)。

  • ポリシーにセキュリティ ポリシーが含まれている場合、Caché は、そのポリシーに関連するすべての要素を除いて、Web サービスまたは Web クライアントの SecurityOut プロパティを無視します。

    例えば、X.509 相互証明書セキュリティ・ポリシーを使用する場合、ポリシー内で直接使用する Caché 資格情報セットを指定することも、%SYS.X509CredentialsOpens in a new tab のインスタンスを作成し、バイナリ・セキュリティ・トークンに格納して SecurityOut プロパティに追加することもできます。ポリシー内で直接資格情報セットが指定されない場合、Caché は、SecurityOut プロパティからバイナリ・セキュリティ・トークンを取得し、それを使用します。ただし、SecurityOut プロパティの他の要素はこのシナリオには適用されないため、Caché はそれらを無視します。

  • ポリシーで WS-Addressing を必要とする場合、Caché は、WSADDRESSING クラス・パラメータを無視します。

    ただし、AddressingOut プロパティが設定されていると、Caché は、指定の WS-Addressing ヘッダを使用します。それ以外の場合、WS-Addressing ヘッダの既定のセットが使用されます。

  • ポリシーで MTOM を必要とする場合、Caché は、MTOMREQUIRED クラス・パラメータおよび MTOMRequired プロパティを無視します。

Web サービスと Web クライアントの関係

Web サービスにポリシーを添付する場合、すべてのクライアントは、そのポリシーに従うことが可能でなければなりません。Web サービス・ポリシーに代替ポリシーが何も含まれていない場合、クライアントには、Web サービスと同じポリシーが必要です。このとき、必要に応じて、サーバ側の証明書の代わりにクライアント側の証明書を使用します。

同様に、Web クライアントにポリシーを添付する場合、サービスは、そのポリシーに従うことが可能でなければなりません。

実際には、Caché にサービスとクライアントの両方が作成される場合、最も簡単な手順は次のとおりです。

  1. Web サービス・クラスを作成します。

  2. Web サービス構成クラスを、サービス・ポリシーと共に作成します。

  3. SOAP ウィザードを使用して、クライアント構成クラスなどのクライアント・クラスを生成します。

    これを実行した後、生成されたクライアント・クラスを検証し、必要に応じて変更を加えます。最も一般的な変更は、メソッド・シグニチャを長い文字列に調整することです。

    通常、このためにラッパ・クラスも作成します。

    これらのタスクの詳細は、"Caché での Web サービスおよび Web クライアントの作成" を参照してください。

  4. 生成された構成クラスを検証し、必要に応じて変更を加えます。“生成されたポリシーの編集” を参照してください。

構成クラスの詳細は、次の章 “WS-Policy 構成クラスの詳細” を参照してください。

ポリシーの作成と添付

ポリシーを作成し、これを Web サービスまたは Web クライアントにアタッチするには、構成クラスを作成してコンパイルします。このクラスを作成するには、以下のような方法があります。

  • Web サービス/クライアント構成ウィザードの使用。このオプションは、Web サービスまたは Web クライアントのクラスが既に存在している場合に適用されます。

  • SOAP ウィザードの使用このオプションは、WSDL から開始する場合に適用されます。

    ウィザードで構成クラスが生成されるのは、WSDL に WS-Policy 要素が含まれている場合のみです。

    詳細は、"Caché での Web サービスおよび Web クライアントの作成" を参照してください。

  • GeneratePolicyFromWSDL() メソッドの使用によって、WSDL から構成クラスのみを生成します。このオプションは、Web サービスまたは Web クライアントのクラスが既に存在していて、これを再生成しない場合に適用されます。

  • 既存の Web サービスまたは Web クライアントの構成クラスを手動で作成します。詳細は、次の章を参照してください。

WSDL からポリシー・クラスを生成する場合、次のセクションで説明するように、ポリシー・クラスの編集が必要になる場合があります。

Web サービス/クライアント構成ウィザードの使用法

スタジオの Web サービス/クライアント構成ウィザードを使用して、ポリシーを作成および添付することができます。このウィザードを使用する手順は次のとおりです。

  1. [ファイル]→[新規作成] をクリックします。

  2. [一般] タブで、[Web サービス/クライアント構成] をクリックします。

  3. [OK] をクリックします。

    スタジオにダイアログ・ボックスが表示されます。

  4. ポリシーの適用対象とする Web サービスまたは Web クライアントを選択します。ウィザードには、コンパイルされるサービスおよびクライアントのみが一覧表示されます。

    そのためには、必要に応じて [サービス] または [クライアント] ドロップダウン・メニューをクリックし、Web サービス・クラスまたは Web クライアント・クラスをクリックします。

  5. [次へ] をクリックします。

    スタジオに別のダイアログ・ボックスが表示されます。

  6. オプションで、このダイアログ・ボックスの 2 番目のフィールドに表示されている構成クラス名を編集します。

    Note:

    このクラスが既に存在する場合、ウィザードは、既存のコンテンツを無視し、それを上書きします。ウィザードの最後に到達しない限り、新しいクラスは作成されません。

    既定の構成クラス名は、Web サービスまたはクライアント・クラス名に Config を追加したものです。

  7. このページの残りの詳細は、“セキュリティ・ポリシーの説明” および “ポリシー・オプションのリファレンス” を参照してください。

  8. [完了] をクリックします。

    ウィザードにより、クラスが作成され、保存されます。

  9. 生成された構成クラスを確認します。構成クラスには、発信メッセージにタイムスタンプを追加するポリシー式も含まれています。

    <sp:IncludeTimestamp/>
    
  10. オプションで、構成クラスを編集し、再保存します。

    例えば、代替ポリシーを追加したり、ウィザードによって作成されたポリシーを調整したりするには、この操作を行います。

クラスは、自動的にはコンパイルされません。また、ポリシーは、クラスがコンパイルされないと有効になりません。

Tip:

構成クラスをコンパイルした後、それを無効にする場合は、XData ブロックをコメントアウトし、再コンパイルします。

WSDL からのポリシーの生成

クライアント・クラスは既にあるものの、対応する構成クラスがない場合があります。これは、WSDL からクライアント・クラスを生成し、その後 WS-Policy 情報を含むように WSDL が変更された場合などに発生します。このような場合、以下のように、%SOAP.WSDL.ReaderOpens in a new tab のユーティリティ・メソッドを使用して、構成クラスのみを生成できます。

  1. %SOAP.WSDL.ReaderOpens in a new tab のインスタンスを作成します。

  2. そのインスタンスのプロパティを規定どおりに設定します。%SOAP.WSDL.ReaderOpens in a new tab については、クラス・ドキュメントを参照してください。

    Process() メソッドは使用しないでください。

  3. インスタンスの GeneratePolicyFromWSDL() メソッドを呼び出します。

    このメソッドには、以下のシグニチャがあります。

    method GeneratePolicyFromWSDL(wsdlURL As %String, 
        clientWebServiceClass As %String, 
        policyConfigClass As %String) as %Status
    

    以下はその説明です。

    • wsdlURL は、ポリシーを含む WSDL の URL です。WSDL が 1 つのポートのみを指定することが前提となっています。

    • clientWebServiceClass は、Web クライアント・クラスの名前です。この Web クライアントが指定の WSDL と一致することを確認する必要があります。

    • policyConfigClass は、作成される構成クラスの名前です。

Web サービスの WSDL が指定するポリシーを含む Web サービス・クライアントの構成クラスが作成 (または上書き) されます。WSDL にポリシーがない場合は、空の構成クラスが作成されます。インスタンスの CompileClasses プロパティが 1 の場合は、この構成クラスがコンパイルされます。

生成されたポリシーの編集

構成クラスを WSDL から生成し、WSDL が Caché のこのインスタンスの外側にある場合、構成クラスを編集して、使用する証明書および SSL/TLS 構成に関する情報を組み込む必要があります。または、この情報を実行時に指定できます。

また、[保護セッション (安全な通信) を確立する] を選択した場合は、安全な通信の存続時間のオプションを指定するポリシーを編集できます。

以下のテーブルに詳細を示します。

生成されたポリシーに含まれている要素 以下のことを実行します。
<sp:HttpsToken> クライアントに添付されたポリシーの場合、次のいずれかを実行します。 サービスに添付されたポリシーの場合、変更は必要ありません。
<sp:InitiatorToken> クライアントに添付されたポリシーの場合、次のいずれかを実行します。
  • 次の章の “InterSystems 拡張属性の追加” の説明に従って、この要素内で <sp:X509Token> 要素を編集します。

  • このドキュメントで後述する “実行時の証明書の追加” の説明に従って、資格情報セットを取得し、格納されている証明書を追加します。

どちらの場合も、これは、クライアントが所有する資格情報セットである必要があります。

サービスに添付されたポリシーの場合、変更は必要ありません。

<sp:RecipientToken> 以下のいずれかを行います。
  • 次の章の “InterSystems 拡張属性の追加” の説明に従って、この要素内で <sp:X509Token> 要素を編集します。

  • このドキュメントで後述する “実行時の証明書の追加” の説明に従って、資格情報セットを取得し、格納されている証明書を追加します。

どちらの場合も、これは、サービスが所有する資格情報セットである必要があります。
<sp:SecureConversationToken> 必要に応じて、次の章の “InterSystems 拡張属性の追加” の説明に従って、cfg:Lifetime 属性を追加します。既定の存続時間は 5 分です。

セキュリティ・ポリシーの説明

ウィザードの主な目的は、構成可能なセキュリティ・ポリシーを用意することです。[セキュリティ・ポリシー] の選択肢は、以下のとおりです。

以下のセクションは、すべてのポリシー・オプションを示しています。

SSL/TLS 接続セキュリティ

このポリシーは、Web クライアントと Web サービス間で HTTP over SSL/TLS (HTTPS) を使用することを要求します。これにより、データ・ストリームの機密性と整合性、サーバの認証、およびクライアントのオプションの認証が提供されます。

SSL/TLS 経由のユーザ名認証

このポリシーは、クライアントに、(ユーザ名およびパスワードと共に) <UsernameToken> を送信することを要求します。また、HTTP over SSL/TLS (HTTPS) も要求します。これにより、データ・ストリームの機密性と整合性の維持、サーバの認証、およびクライアントのオプションの認証が可能となります。

実行時、Web クライアントは、既定のパスワード・タイプを使用してユーザ名トークンを作成および追加する必要があります。このドキュメントで後述する “ユーザ名トークンの追加” を参照してください。

SSL/TLS 経由の X.509 証明書認証

このポリシーは、クライアントに、署名済みの本文とタイムスタンプ、およびシグニチャを検証できる X.509 証明書と共にメッセージを送信することを要求します。WS-Addressing ヘッダが含まれている場合は、それも署名されます。また、HTTP over SSL/TLS (HTTPS) も要求します。これにより、データ・ストリームの機密性と整合性の維持、サーバの認証、およびクライアントのオプションの認証が可能となります。

対称鍵による認証

このポリシーは、メッセージの署名と暗号化の両方に使用する、1 つの共有秘密鍵を必要とします。この対称鍵は、実行時に生成され、サービスの証明書の公開鍵を使用して暗号化されます。

サービスは、認証のために、暗号化されたユーザ名および既定のパスワード・タイプのパスワードを必要に応じて要求することができます。このオプションを選択した場合、クライアントは、このドキュメントで後述の “ユーザー名トークンの追加” の説明に従って、実行時に <UsernameToken> を追加する必要があります。手動で <UsernameToken> を暗号化する必要はありません。Caché が自動的に暗号化します。

保証証明書を使用した対称鍵

このポリシーは、メッセージの署名と暗号化の両方に使用する、1 つの共有秘密鍵を必要とします。この対称鍵は、実行時に生成され、サービスの証明書の公開鍵を使用して暗号化されます。

サービスは、認証のために、暗号化されたユーザ名および既定のパスワード・タイプのパスワードを必要に応じて要求することができます。このオプションを選択した場合、クライアントは、このドキュメントで後述の “ユーザー名トークンの追加” の説明に従って、実行時に <UsernameToken> を追加する必要があります。手動で <UsernameToken> を暗号化する必要はありません。Caché が自動的に暗号化します。

このメカニズムは、クライアント保証証明書を使用して、メッセージ・シグニチャに関連付けられたトークンを拡張します。

X.509 相互証明書セキュリティ

このポリシーは、すべての相手に、メッセージ本文とタイムスタンプ、および WS-Addressing ヘッダ (含まれている場合) に署名することを要求します。また、オプションで、相手の証明書の公開鍵を使用してメッセージ本文を暗号化します。

サービスは、認証のために、暗号化されたユーザ名および既定のパスワード・タイプのパスワードを必要に応じて要求することができます。このオプションを選択した場合、クライアントは、このドキュメントで後述の “ユーザー名トークンの追加” の説明に従って、実行時に <UsernameToken> を追加する必要があります。手動で <UsernameToken> を暗号化する必要はありません。Caché が自動的に暗号化します。

SSL/TLS 経由の SAML 承認

このポリシーは、クライアントに、X.509 証明書または公開鍵を含む SAML トークンを送信することを要求します。対応する秘密鍵は、メッセージ本文とタイムスタンプ、および WS-Addressing ヘッダ (含まれている場合) に署名します。また、HTTP over SSL/TLS (HTTPS) も要求します。これにより、データ・ストリームの機密性と整合性の維持、サーバの認証、およびクライアントのオプションの認証が可能となります。

X.509 証明書を持つ SAML

このポリシーは、SAML トークンを送信することをクライアントに要求します。このポリシーはまた、メッセージ本文とタイムスタンプ、および WS-Addressing ヘッダ (含まれている場合) に署名します。また、オプションで、相手の証明書の公開鍵を使用してメッセージ本文を暗号化します。

ポリシー・オプションのリファレンス

事前定義のポリシーには、同じオプションが多数あります。以下のリストは、すべてのオプションの詳細をウィザードに表示される順序に従って示しています。

保護セッション (安全な通信) を確立する

該当する場所 : すべてのセキュリティ・ポリシー。

このオプションを選択した場合、Web サービスおよび Web クライアントは、共通の秘密セキュリティ・コンテキストを確立して使用します。そして両者で同じ対称鍵を生成し、これを署名、暗号化、シグニチャ検証、および解読に使用できます。

派生キーを要求する

該当する場所 : すべてのセキュリティ・ポリシー。

このオプションは、前のオプションも選択した場合にのみ適用されます。[派生キーを要求する] を選択した場合、元のセッション・キーではなく、派生キーがメッセージで使用されます。

信頼性の高いメッセージ配信

該当する場所 : すべてのセキュリティ・ポリシー。

このオプションは、メッセージを送信する場合に WS-ReliableMessaging プロトコルを使用する必要があることを指定します。このプロトコルを使用すると、ソフトウェア・コンポーネント、システム、またはネットワークで障害が発生してもSOAP メッセージが確実に配信されます。

Note:

Caché Web サービスでパラメータを指定すると、WS-ReliableMessaging の動作を微調整できます。このドキュメントで後述の “Web サービスで信頼性の高いメッセージ配信を処理する方法” を参照してください。

SSL 構成

該当する場所 : SSL/TLS を使用するすべてのポリシー。クライアントのみに適用されます。

クライアントが使用する SSL/TLS 構成。

すべての適用可能なポリシーにおいて、ウィザード内で SSL/TLS 構成を選択するか (その選択をハードコード)、またはプログラムで選択し、Web サービスまたは Web クライアントに追加できます。このドキュメントで前述の “SSL/TLS 構成を使用するように指定する方法” を参照してください。

SSL/TLS 接続でクライアント証明書を要求する

該当する場所 : SSL/TLS を使用するすべてのポリシー。

SSL/TLS 接続でクライアントが自らを認証することを要求する場合、オプションでこれを選択します。[SSL 構成] の説明を参照してください。

SOAP 本文の暗号化

該当する場所 : SSL/TLS を使用しないすべてのポリシー。

(オプション) 相手の証明書の公開鍵を使用して SOAP 本文を暗号化します。

署名の前に暗号化

該当する場所 : SSL/TLS を使用しないすべてのポリシー。

(オプション) 署名の前にメッセージを暗号化することを要求します。このオプションを選択しない場合、メッセージは、署名されてから暗号化されます。

トークンの保護 - シグニチャは、シグニチャの生成に使用されたトークンを対象とする必要があります

該当する場所 : SSL/TLS を使用しないすべてのポリシー。

(オプション) 関連付けられた秘密鍵がメッセージに署名する証明書を送信するバイナリ・セキュリティ・トークンにメッセージ・シグニチャを適用するよう要求します。

X.509 証明書

該当する場所 : SSL/TLS 経由の X.509 証明書認証。クライアントのみに適用されます。

メッセージに署名するときにクライアントが使用する Caché 資格情報セット。シグニチャは、関連付けられている証明書で秘密鍵を使用します。サブセクション “資格情報セット” を参照してください。

暗号化されたユーザ名トークンを含める

該当する場所 : 複数のポリシー。

(オプション) <UsernameToken> を含む暗号化要素を送信することをクライアントに要求します。

このオプションを選択すると、このドキュメントで後述の “ユーザー名トークンの追加” の説明に従って、実行時に <UsernameToken> を追加する必要があります。手動で <UsernameToken> を暗号化する必要はありません。Caché が自動的に暗号化します。

保護トークン

該当する場所 : 対称鍵を使用するポリシー。クライアントのみに適用されます。

対称鍵を生成するためにクライアントが使用する Caché 資格情報セット。これは、サービスの証明書である必要があります。対称鍵は、証明書の公開鍵を使用して生成されます。サブセクション “資格情報セット” を参照してください。

保証トークン

該当する場所 : 保証証明書を使用した対称鍵。クライアントのみに適用されます。

保護トークンに署名するときにクライアントが使用する Caché 資格情報セット。これは、クライアントの証明書である必要があります。サブセクション “資格情報セット” を参照してください。

イニシエータ・トークン

該当する場所 : X.509 相互証明書セキュリティおよび X.509 証明書を持つ SAML。クライアントのみに適用されます。

Web クライアントが使用する Caché 資格情報セット。クライアントは、メッセージの署名に、関連付けられている秘密鍵を使用し、イニシエータ・トークンをサービスに送信して、サービスを有効化し、シグニチャの検証と応答の暗号化を行います。サブセクション “資格情報セット” を参照してください。

受信者トークン

該当する場所 : X.509 相互証明書セキュリティおよび X.509 証明書を持つ SAML

Web サービスが使用する Caché 資格情報セット。クライアントは、受信者トークン内の証明書の公開鍵を使用して、発信メッセージ本文を暗号化します。サービスは、関連付けられた秘密鍵をメッセージの署名に使用します。サブセクション “資格情報セット” を参照してください。

アルゴリズム・スイート

該当する場所 : すべてのセキュリティ・ポリシー。

Web サーバおよび Web クライアントが使用するアルゴリズム・スイート。詳細は、"WS-SecurityPolicy 仕様Opens in a new tab" のセクション 6.1 を参照してください。

厳密なセキュリティ・ヘッダ・レイアウト

該当する場所 : すべてのセキュリティ・ポリシー。

(オプション) セキュリティ・ヘッダ要素の厳密なレイアウトを強制します。

WS-Addressing の有効化

該当する場所 : すべてのポリシー。

このオプションを選択すると、Web サービスまたは Web クライアントは、発信メッセージに WS-Addressing ヘッダ要素を含め、着信メッセージに WS-Addressing ヘッダ要素があると想定します。

[WS-Addressing の有効化] を使用した場合、Caché は、WS-Addressing ヘッダ要素の既定セットを使用します。含まれる要素の詳細は、"Caché での Web サービスおよび Web クライアントの作成" の “SOAP ヘッダの追加と使用” の章にある “WS-Addressing ヘッダ要素の追加” を参照してください。

[WS-Addressing の有効化] を選択しても、前述のドキュメントの説明に従って、WS-Addressing ヘッダ要素を手動で作成し、これをアタッチできます。このようにした場合、Web サービスまたは Web クライアントは、既定のヘッダ要素ではなく作成したヘッダ要素を使用します。

バイナリ・データの転送の最適化 (MTOM)

該当する場所 : すべてのポリシー。

このオプションを選択すると、Web サービスまたは Web クライアントは、発信メッセージに MTOM パッケージを使用し、着信メッセージに MTOM パッケージがあると想定します。

資格情報セット

多くのポリシーにおいて、以下のように Caché 資格情報セットを選択できます。

  • [X.509 証明書] ドロップダウン・リストから資格情報セットを選択します。

  • 証明書のフィールドの値を指定して、資格情報セットを選択します。そのためには、[フィールド] ドロップダウン・リストからフィールドを選択し、入力ボックスに値を入力します。

    使用できるフィールドは次のとおりです。

    • Alias

    • SubjectKeyIdentifier

    • Thumbprint

    • SerialNumber

    • IssuerDN

    • IssuerName — IssuerDN フィールドの検索文字列として動作します。システムは、IssuerDN フィールドに指定の文字列が含まれている最初の資格情報セットを選択します (一方、IssuerDN を使用する場合は、正確に一致しなければなりません)。

    • SubjectDN

    • SubjectName — SubjectDN フィールドの検索文字列として動作します。システムは、SubjectDN フィールドに指定の文字列が含まれている最初の資格情報セットを選択します (一方、SubjectDN を使用する場合は、正確に一致しなければなりません)。

または、プログラムで資格情報セットを選択できます。このドキュメントで前述の “プログラムによる資格情報セットの取得” を参照してください。この場合、この章で後述の “実行時の証明書の追加” の説明に従って、証明書をバイナリ・セキュリティ・トークンでパッケージ化し、これを発信メッセージに追加する必要もあります。

実行時の証明書の追加

Web サービスまたは Web クライアントが、プログラムで証明書を選択して含める必要がある場合は、以下の手順を実行します。

  1. このドキュメントで前述の “プログラムによる資格情報セットの取得” の説明に従って、%SYS.X509CredentialsOpens in a new tab のインスタンスを取得します。

    以下はその例です。

     set credset=##class(%SYS.X509Credentials).GetByAlias(alias,password)

    または以下のようにします。

     set credset=..SecurityIn.Signature.X509Credentials 
  2. この資格情報セットの証明書を含む %SOAP.Security.BinarySecurityTokenOpens in a new tab のインスタンスを作成します。以下はその例です。

     set bst=##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)

    credentials は、前の手順で取得した資格情報セットです。

    これにより、シリアル化された Base 64 のエンコード形式の証明書を保持する <BinarySecurityToken> 要素を表すオブジェクトが返されます。

  3. Web クライアントまたは Web サービスの SecurityOut プロパティの AddSecurityElement() メソッドを呼び出します。このメソッドの引数として、前に作成したバイナリ・セキュリティ・トークンを使用します。以下はその例です。

     do ..SecurityOut.AddSecurityElement(bst)
Important:

2 つのバイナリ・セキュリティ・トークン (暗号化用と署名用) が必要な場合があります。[署名の前に暗号化] オプションを選択したかどうかに応じて、これらを適切な順序で追加してください。ポリシーがメッセージを暗号化してからこれに署名する場合、暗号化に使用するバイナリ・セキュリティ・トークンを追加してから署名に使用するバイナリ・セキュリティ・トークンを追加してください。逆に、ポリシーが署名してから暗号化する場合は、署名に使用するバイナリ・セキュリティ・トークンを先にする必要があります。

以下に、Web サービスの Web メソッドの例を示します。

 //get credentials
 set x509alias = "something"
 set pwd = "password"
 set credset = ##class(%SYS.X509Credentials).GetByAlias(x509alias,pwd)

 //get certificate and add it as binary security token
 set cert = ##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)
 do ..SecurityOut.AddSecurityElement(cert)

Web クライアントの場合、通常はプロキシ・クライアントを編集しないため、コードは多少異なります。

 set client=##class(proxyclient.classname).%New()
 //get credentials
 set x509alias = "something"
 set pwd = "password"
 set credset = ##class(%SYS.X509Credentials).GetByAlias(x509alias,pwd)

 //get certificate and add it as binary security token
 set cert = ##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)
 do client.SecurityOut.AddSecurityElement(cert)
 //invoke web method of client

実行時のポリシーの指定

Caché Web クライアントでは、実行時に使用するポリシーを指定できます。これにより、ポリシー構成クラスがオーバーライドされます。実行時にポリシーを指定するには、Web クライアント・インスタンスの PolicyConfiguration プロパティを設定します。この値は、以下の形式にする必要があります。

Configuration class name:Configuration name

ここで、Configuration class name は、この章で前述したように、ポリシー構成クラスの完全なパッケージおよびクラス名であり、Configuration name は、そのクラス内のポリシーの <configuration> 要素の name 属性です。

サポートされていないポリシーに対するコンパイル・エラーの抑制

既定では、構成クラスのコンパイル時に、Caché でサポートされていないポリシー式が構成に含まれていると、Caché はエラーを出力します。そのようなエラーを抑制するには、構成クラスで次のように設定します。

Parameter REPORTANYERROR=0;

SOAP ウィザードを使用して WSDL から Web クライアントまたは Web サービスを生成する場合に、Caché によって構成クラスも生成されるときには、そのクラスにこのパラメータ設定が含まれます。

サポートされている代替ポリシーが 1 つあれば、サポートされていない代替ポリシーは無視できます。

FeedbackOpens in a new tab