ADC

Web サービスの相互運用性チェック

Web サービス相互運用性 (WS-I) チェックは、要求と応答の両方が WS-I 標準に準拠しているかどうかを調べ、この標準に準拠していない要求と応答をブロックします。WS-I チェックの目的は、他の XML と適切に相互作用しない可能性のある要求をブロックすることです。攻撃者は、相互運用性の不一致を利用して、XML アプリケーションに攻撃を仕掛ける可能性があります。

ウィザードまたは GUI を使用する場合、「Web サービス相互運用性チェックの変更」ダイアログボックスの「一般」タブで、「ブロック」、「ログ」、「統計」、および「学習」アクションを有効または無効にできます。

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力して Web サービスの相互運用性チェックを設定できます。

  • set appfw profile <name> -xmlWSIAction [block] ][log] [learn] [stats] [none]

Web サービス相互運用性ルールを個別に設定するには、GUI を使用する必要があります。「Web サービス相互運用性チェックの変更」ダイアログ・ボックスの「チェック」タブで、ルールを選択し、「有効化」または「無効化」をクリックしてルールを有効または無効にします。[開く] をクリックして、そのルールの [Web サービス相互運用性の詳細] メッセージボックスを開くこともできます。メッセージボックスには、ルールに関する読み取り専用情報が表示されます。これらのルールを変更したり、その他の設定を変更したりすることはできません。

WS-I チェックは WS-I 基本プロファイル 1.0 に記載されているルールを使用します。WS-I は、相互運用可能な Web サービスソリューションを開発するためのベストプラクティスを提供します。WS-I チェックは SOAP メッセージに対してのみ実行されます。

各 WSI 標準ルールの説明を以下に示します。

規則 説明
BP1201 メッセージ本文は名前空間を持つ soap: envelope でなければなりません。
R1000 ENVELOPEがFaultである場合、soap:Fault要素は、faultcode、faultstring、faultactor、detail以外の要素の子を持つことはできません。
R1001 ENVELOPEがFaultである場合、soap:Fault要素の子は、修飾されなければなりません。
R1003 受信者は、詳細要素にゼロを含む修飾属性または非修飾属性がいくつでも現れる障害メッセージを受け入れる必要があります。修飾属性の名前空間は、修飾された文書要素エンベロープの名前空間以外であれば何でもかまいません。
R1004 ENVELOPE に faultcode 要素が含まれる場合、その要素の内容は、SOAP 1.1 で定義されている障害コード (必要に応じて詳細要素に追加情報を提供) のいずれか、または障害の指定機関によって名前空間が制御されている Qname (優先順に) でなければなりません。
R1005 ENVELOPEは、その名前空間が修飾された文書要素Envelopeの名前空間と同じである要素のいずれかのsoapを含んではいけません。
R1006 EnVELOPEは、soap:Bodyの子である任意の要素のsoap:encodingStyle属性を含んではいけません。
R1007 rpc リテラルバインディングで記述された ENVELOPE には、SOAP: Body の孫であるどの要素にも soap: EncodingStyle 属性が含まれていてはなりません。
R1011 EnVELOPE には、SOAPE: Body要素に続くSOAPE: Envelopeの要素の子があってはなりません。
R1012 メッセージは UTF-8 または UTF-16 としてシリアル化する必要があります。
R1013 soap:mustUnderstand属性を含むENVELOPEは、字句形式0と1のみを使用しなければなりません。
R1014 ENVELOPEのsoap:Body要素の子は、名前空間修飾でなければなりません。
R1015 文書要素が SOAP: Envelope ではないエンベロープに遭遇した場合、受信者はエラーを起こさなければなりません。
R1031 ENVELOPE に faultcode 要素が含まれている場合は、その要素の内容に SOAP 1.1 のドット表記を使用して障害の意味を絞り込んではいけません。
R1032 The soap:Envelope, soap:Header, and soap:ENVELOPE内のボディ要素は、修飾された文書要素のエンベロープのそれと同じ名前空間内の属性を持つことはできません
R1033 EnVELOPEは名前空間宣言を含んではいけません:xmlns:xml=http://www.w3.org/XML/1998/namespace.
R1109 HTTP リクエストメッセージの SOAPAction HTTP ヘッダーフィールドの値は、引用符で囲まれた文字列でなければなりません。
R1111 INSTANCE は、障害ではないエンベロープを含む応答メッセージに対して 200 OK HTTP ステータスコードを使用すべきです。
R1126 レスポンスエンベロープが Fault の場合、インスタンスは 500 Internal Server Error HTTP ステータスコードを返さなければなりません。
R1132 HTTP リクエストメッセージには HTTP POST メソッドを使用する必要があります。
R1140 メッセージは HTTP/1.1 を使用して送信する必要があります。
R1141 メッセージは HTTP/1.1 または HTTP/1.0 のいずれかを使用して送信する必要があります。
R2113 エンベロープには、soapenc:arrayType 属性を含めることはできません。
R2211 rpc-literal バインディングで記述された ENVELOPE には、パートアクセサーに xsi: nil 属性の値が 1 または true があってはなりません。
R2714 一方向操作の場合、INSTANCEはエンベロープを含むHTTP応答を返してはいけません。具体的には、HTTP 応答のエンティティ本文は空でなければなりません。
R2729 rpc リテラルバインディングで記述されたレスポンスである ENVELOPE には、対応する wsdl: operation 名の末尾に StringResponse が付いた名前のラッパー要素が必要です。
R2735 rpc-literal バインディングで記述された ENVELOPE は、パラメータと戻り値のパートアクセサー要素を名前空間に置かないでください。
R2738 ENVELOPEには、wsdl:inputまたはwsdl:それを記述するwsdl:バインディングのwsdl:操作のwsdl:出力で指定されたすべてのsoapbindを含める必要があります。
R2740 説明文の wsdl: binding には、既知のエラーをそれぞれ説明する soapbind: fault が含まれているはずです。
R2744 HTTP 要求メッセージには、対応する WSDL 記述内に存在する場合、soapbind:operation の soapAction 属性の値と等しい引用符で囲まれた値を持つ SOAPAction HTTP ヘッダーフィールドが含まれていなければなりません。
Web サービスの相互運用性チェック

この記事の概要