非 XML メッセージ

一部のアサーションは XML ペイロードを予期し、そのような Content-Type が実行時に検出されない場合失敗します。 公開されたサービスが XML および非 XML メッセージの両方を処理するか、またはペイロードのないメッセージ(GET、DELETE リクエストなど)を処理すると予想される場合、XML 処理を非 XML 処理から分離するようにポリシーを構成する必要があります。 これにより、重要でないアサーションの失敗がポリシーの結果に影響しないようにします。
gateway
一部のアサーションは XML ペイロードを予期し、そのような Content-Type が実行時に検出されない場合失敗します。 公開されたサービスが XML および非 XML メッセージの両方を処理するか、またはペイロードのないメッセージ(GET、DELETE リクエストなど)を処理すると予想される場合、XML 処理を非 XML 処理から分離するようにポリシーを構成する必要があります。 これにより、重要でないアサーションの失敗がポリシーの結果に影響しないようにします。
たとえば、Protect Against Document Structure Threats アサーションは、XML 脅威を検出し、非 XML メッセージを処理すると失敗するように設計されています。 ただし、非 XML メッセージに XML 脅威が含まれることはないので、このように失敗してもその影響はほとんどありません。
XML を必要とするアサーション
以下のアサーションは、メッセージが XML であることを必要とします。
(Non-SOAP) Check Results from XML Verification
(Non-SOAP) Decrypt XML Element
(Non-SOAP) Encrypt XML Element
(Non-SOAP) Sign XML Element
(Non-SOAP) Verify XML Element
Add or Remove XML Elements(s)
Apply XSL Transformation
Document Structure Threats
Evaluate Request XPath
Evaluate Response XPath
Require XPath Credentials
Validate XML Schema
SOAP を必要とするアサーション
以下のアサーションは、リクエストが XML だけではなく、SOAP でもあることを必要とします。
Add WS-Addressing
Add or Remove WS-Security
Add Security Token
Add Timestamp
Configure WS-Security Decoration
Encrypt Element
Encode to MTOM Format
Enforce WS-Security Policy Compliance
Enforce WS-I BSP Compliance
Enforce WS-I SAML Compliance
Evaluate WSDL Operation
Exchange Credentials using WS-Trust
Process SAML Authentication Request
Process RSTR Response
Require Encrypted Element
Require Encrypted UsernameToken Profile Credentials
Require SAML Token Profile
Require Signed Element
Require Timestamp
Require WS-Addressing
Require WS-Secure Conversation
Require WS-Security Kerberos Token Profile Credentials
Require WS-Security Signature Credentials
Require WS-Security UsernameToken Profile Credentials
Sign Element
Use WS-Federation Credential
Validate SOAP Attachments
分岐ポリシーの例
以下の例では、非 XML リクエストから XML リクエストの処理を分離するためにどのようにポリシー内の分岐を実装できるかを示します。
1
At Least One Assertion Must Evaluate to True
2
All Assertions Must Evaluate to True
3
Compare Expression: Proceed if ${request.http.header.content-type} contains "text/xml"
4
All Assertions Must Evaluate to True
5
<portion of policy relating to XML messages>
6
All Assertions Must Evaluate to True
7
Compare Expression: Proceed if ${request.http.header.content-type} does not contain "text/xml"
8
All Assertions Must Evaluate to True
9
<portion of policy relating to non-XML messages or empty payloads>
10
<portion of policy common to both>
以下の表では、上記の例の詳細について説明します。
説明
1
「At least」分岐により、行 2 (メッセージは XML)または行 6 (メッセージは非 XML)のいずれかが実行されます。
2
リクエストが XML の場合、「All assertions」フォルダは、処理されるポリシーの部分をグループ化します。
3
Content-Type ヘッダを調べることにより、メッセージが XML かどうかをテストします。 true の場合、処理は行 4 に進みます。 false の場合、Compare Expression アサーションは失敗し、行 2 の「All assertions」が失敗します。 その後、処理は行 6 に進みます。
4
「All assertions」フォルダは、XML リクエストに対して処理されるアサーションをグループ化します。
5
ポリシーのこの部分には、上記の「XML を必要とするアサーション」または「SOAP を必要とするアサーション」に示されているアサーションが含まれます。
6
リクエストが非 XML の場合、または行 4 が失敗する場合に、この「All assertions」フォルダは処理されるアサーションをすべてグループ化します。
7
Content-Type ヘッダを調べることにより、メッセージが非 XML かどうかをテストします。 true の場合、処理は行 8 に進みます。 false の場合、Compare Expression アサーションは失敗し、行 6 の「All assertions」が失敗します。 その後、処理は行 10 に進みます。
8
「All assertions」フォルダは、非 XML リクエストに対して処理されるアサーションをグループ化します。
9
ポリシーのこの部分には、上記の「XML を必要とするアサーション」または「SOAP を必要とするアサーション」に示されていないアサーションが含まれます。
10
ここで XML および非 XML メッセージの両方に共通のポリシー ロジックをリスト表示します。