ADC

Contrôle de l’interopérabilité des services Web

Le contrôle d’interopérabilité des services Web (WS-I) examine à la fois les demandes et les réponses pour vérifier leur conformité à la norme WS-I, et bloque les demandes et les réponses qui ne respectent pas cette norme. Le but de la vérification WS-I est de bloquer les requêtes susceptibles de ne pas interagir correctement avec d’autres XML. Un attaquant peut utiliser les incohérences d’interopérabilité pour lancer une attaque contre votre application XML.

Si vous utilisez l’assistant ou l’interface graphique, dans la boîte de dialogue Modifier le contrôle d’interopérabilité des services Web, sous l’onglet Général, vous pouvez activer ou désactiver les actions Bloquer, Enregistrer, Statistiques et Apprendre.

Si vous utilisez l’interface de ligne de commande, vous pouvez entrer la commande suivante pour configurer le contrôle d’interopérabilité des services Web :

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

Pour configurer les règles individuelles d’interopérabilité des services Web, vous devez utiliser l’interface graphique. Sous l’onglet Vérifications de la boîte de dialogue Modifier le contrôle de l’interopérabilité des services Web, sélectionnez une règle et cliquez sur Activer ou Désactiver pour activer ou désactiver la règle. Vous pouvez également cliquer sur Ouvrir pour ouvrir la boîte de message Détails de l’interopérabilité des services Web correspondant à cette règle. La boîte de message affiche des informations en lecture seule sur la règle. Vous ne pouvez pas modifier ou apporter d’autres modifications de configuration à aucune de ces règles.

Le contrôle WS-I utilise les règles répertoriées dans le profil de base WS-I 1.0. WS-I fournit les meilleures pratiques pour le développement de solutions de services Web interopérables. Les contrôles WS-I sont effectués uniquement sur les messages SOAP.

La description de chaque règle standard WSI est fournie ci-dessous :

Rule Description
BP1201 Le corps du message doit être une enveloppe soap:envelope avec espace de noms.
R1000 Lorsqu’une ENVELOPE est une erreur, l’élément SOAP:FAULT NE DOIT PAS avoir d’autres enfants que faultcode, faultstring, faultactor et detail.
R1001 Lorsqu’une ENVELOPE est une erreur, les enfants de l’élément SOAP:Fault DOIVENT être non qualifiés.
R1003 UN RÉCEPTEUR DOIT accepter les messages d’erreur qui comportent un nombre quelconque d’attributs qualifiés ou non qualifiés, y compris zéro, apparaissant sur l’élément de détail. L’espace de noms des attributs qualifiés peut être autre que l’espace de noms de l’élément de document qualifié Envelope.
R1004 Lorsqu’une ENVELOPE contient un élément de code d’erreur, le contenu de cet élément doit être soit l’un des codes d’erreur définis dans SOAP 1.1 (fournissant des informations supplémentaires si nécessaire dans l’élément de détail), soit un Qname dont l’espace de noms est contrôlé par l’autorité de spécification de l’erreur (dans cet ordre de préférence).
R1005 Une ENVELOPE NE DOIT PAS contenir l’attribut SOAP:EncodingStyle sur aucun des éléments dont l’espace de noms est le même que l’espace de noms de l’élément de document qualifié Envelope.
R1006 Une ENVELOPE NE DOIT PAS contenir d’attributs SOAP:EncodingStyle sur un élément enfant de SOAP:Body.
R1007 Une ENVELOPE décrite dans une liaison littérale RPC NE DOIT PAS contenir l’attribut SOAP:EncodingStyle sur un élément qui est un petit-enfant de SOAP:Body.
R1011 Une ENVELOPE NE DOIT PAS comporter d’élément enfant de SOAP:Envelope à la suite de l’élément SOAP:Body.
R1012 UN MESSAGE DOIT être sérialisé au format UTF-8 ou UTF-16.
R1013 Une ENVELOPE contenant un attribut SOAP:mustUnderstand DOIT uniquement utiliser les formes lexicales 0 et 1.
R1014 Les enfants de l’élément SOAP:Body d’une ENVELOPE DOIVENT être qualifiés par un espace de noms.
R1015 UN DESTINATAIRE DOIT générer une erreur s’il rencontre une enveloppe dont l’élément du document n’est pas SOAP:Envelope.
R1031 Lorsqu’une ENVELOPE contient un élément de code d’erreur, le contenu de cet élément ne doit PAS utiliser la notation par points SOAP 1.1 pour affiner la signification de l’erreur.
R1032 Les éléments SOAP:Envelope, SOAP:Header et SOAP:Body d’une ENVELOPE NE DOIVENT PAS avoir d’attributs dans le même espace de noms que celui de l’élément de document qualifié Envelope
R1033 Une ENVELOPE NE DEVRAIT PAS contenir la déclaration d’espace de noms :xmlns:xml=http://www.w3.org/XML/1998/namespace.
R1109 La valeur du champ d’en-tête HTTP SOAPAction dans une requête HTTP MESSAGE DOIT être une chaîne entre guillemets.
R1111 Une INSTANCE DEVRAIT utiliser un code d’état HTTP 200 OK sur un message de réponse contenant une enveloppe qui n’est pas une erreur.
R1126 Une INSTANCE DOIT renvoyer un code d’état HTTP 500 Internal Server Error si l’enveloppe de réponse est une erreur.
R1132 Un MESSAGE de requête HTTP DOIT utiliser la méthode HTTP POST.
R1140 UN MESSAGE DEVRAIT être envoyé en utilisant HTTP/1.1.
R1141 UN MESSAGE DOIT être envoyé en utilisant HTTP/1.1 ou HTTP/1.0.
R2113 Une ENVELOPPE NE DOIT PAS inclure l’attribut SOAPENC:ArrayType.
R2211 Une ENVELOPE décrite avec une liaison rpc littérale NE DOIT PAS avoir l’attribut xsi:nil avec une valeur de 1 ou true sur les accesseurs de pièce.
R2714 Pour les opérations à sens unique, une INSTANCE NE DOIT PAS renvoyer de réponse HTTP contenant une enveloppe. Plus précisément, le corps de l’entité de la réponse HTTP doit être vide.
R2729 Une ENVELOPE décrite avec une liaison rpc littérale qui est une réponse DOIT comporter un élément wrapper dont le nom est le nom wsdl:operation correspondant suffixé par StringResponse.
R2735 Une ENVELOPE décrite avec une liaison rpc littérale DOIT placer les éléments de l’accessoire pour les paramètres et renvoyer la valeur dans aucun espace de noms.
R2738 Une ENVELOPE DOIT inclure tous les en-têtes soapbind:input ou wsdl:output d’un fichier wsdl:operation ou d’un fichier wsdl:binding qui la décrit.
R2740 Un wsdl:binding dans une DESCRIPTION DEVRAIT contenir un soapbind:fault décrivant chaque défaut connu.
R2744 Une requête HTTP MESSAGE DOIT contenir un champ d’en-tête HTTP SoapAction avec une valeur entre guillemets égale à la valeur de l’attribut SoapAction de soapbind:operation, s’il est présent dans la description WSDL correspondante.
Contrôle de l’interopérabilité des services Web