ADC

Verificación de interoperabilidad de servicios web

La comprobación de interoperabilidad de servicios web (WS-I) examina tanto las solicitudes como las respuestas para comprobar si cumplen con el estándar WS-I y bloquea las solicitudes y respuestas que no cumplen con este estándar. El propósito de la comprobación WS-I es bloquear las solicitudes que podrían no interactuar correctamente con otro XML. Un atacante puede utilizar incoherencias en la interoperabilidad para lanzar un ataque contra su aplicación XML.

Si utiliza el asistente o la GUI, en el cuadro de diálogo Modificar la comprobación de interoperabilidad de los servicios web, en la ficha General, puede habilitar o inhabilitar las acciones Bloquear, Registrar, Estadísticas y Aprender.

Si usa la interfaz de línea de comandos, puede introducir el siguiente comando para configurar la comprobación de interoperabilidad de los servicios web:

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

Para configurar reglas de interoperabilidad de servicios web individuales, debe usar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar la comprobación de interoperabilidad de los servicios web, seleccione una regla y haga clic en Habilitar o inhabilitar para habilitar o inhabilitar la regla. También puede hacer clic en Abrir para abrir el cuadro de mensaje Detalles de interoperabilidad de servicios web para esa regla. El cuadro de mensaje muestra información de solo lectura sobre la regla. No puede modificar ni realizar otros cambios de configuración en ninguna de estas reglas.

La comprobación de WS-I utiliza las reglas enumeradas en el perfil básico de WS-I 1.0. WS-I ofrece las mejores prácticas para desarrollar soluciones de servicios web interoperables. Las comprobaciones de WS-I solo se realizan en los mensajes SOAP.

A continuación se proporciona una descripción de cada regla estándar de WSI:

Rule Descripción
BP1201 El cuerpo del mensaje debe ser un soap:envelope con un espacio de nombres.
R1000 Cuando un ENVELOPE es un fallo, el elemento SOAP:fault NO DEBE tener elementos secundarios distintos de faultcode, faultstring, faultactor y detail.
R1001 Cuando un ENVELOPE es una falla, los elementos secundarios del elemento SOAP:Fault DEBEN estar descalificados.
R1003 UN RECEPTOR DEBE aceptar los mensajes de error que tengan cualquier número de atributos calificados o no calificados, incluido cero, que aparezcan en el elemento de detalle. El espacio de nombres de los atributos cualificados puede ser cualquier cosa que no sea el espacio de nombres del elemento de documento cualificado Envelope.
R1004 Cuando un ENVELOPE contiene un elemento de código de error, el contenido de ese elemento debe ser uno de los códigos de error definidos en SOAP 1.1 (proporcionando información adicional si es necesario en el elemento de detalle) o un nombre Q cuyo espacio de nombres esté controlado por la autoridad que especifica el error (en ese orden de preferencia).
R1005 Un ENVELOPE NO DEBE contener el atributo soap:encodingStyle en ninguno de los elementos cuyo espacio de nombres sea el mismo que el espacio de nombres del elemento de documento cualificado Envelope.
R1006 Un ENVELOPE NO DEBE contener los atributos soap:encodingStyle en ningún elemento que sea hijo de soap:Body.
R1007 Un ENVELOPE descrito en un enlace literal rpc NO DEBE contener el atributo soap:encodingStyle en ningún elemento que sea nieto de soap:body.
R1011 Un ENVELOPE NO DEBE tener ningún elemento secundario de SOAP:Envelope después del elemento SOAP:Body.
R1012 UN MENSAJE DEBE estar serializado como UTF-8 o UTF-16.
R1013 Un ENVELOPE que contenga un atributo soap:mustUnderstand SOLO DEBE usar las formas léxicas 0 y 1.
R1014 Los elementos secundarios del elemento soap:body de un ENVELOPE DEBEN estar calificados para un espacio de nombres.
R1015 UN RECEPTOR DEBE generar un error si encuentra un sobre cuyo elemento de documento no sea SOAP:Envelope.
R1031 Cuando un ENVELOPE contiene un elemento de código de error, el contenido de ese elemento NO debe utilizar la notación de puntos de SOAP 1.1 para refinar el significado de la falla.
R1032 Los elementos SOAP:Envelope, SOAP:Header y SOAP:body de un ENVELOPE NO DEBEN tener atributos en el mismo espacio de nombres que el elemento de documento cualificado Envelope
R1033 Un SOBRE NO DEBE contener la declaración del espacio de nombres: xmlns:xml=http://www.w3.org/XML/1998/namespace.
R1109 El valor del campo de encabezado HTTP de SoapAction en un MENSAJE de solicitud HTTP DEBE ser una cadena entre comillas.
R1111 Una INSTANCIA DEBE usar un código de estado HTTP 200 OK en un mensaje de respuesta que contenga un sobre que no sea un error.
R1126 Una INSTANCIA DEBE devolver un código de estado HTTP de 500 errores internos del servidor si el sobre de respuesta es un error.
R1132 UN MENSAJE de solicitud HTTP DEBE utilizar el método HTTP POST.
R1140 SE DEBE ENVIAR UN MENSAJE mediante HTTP/1.1.
R1141 EL MENSAJE DEBE ENVIARSE MEDIANTE HTTP/1.1 o HTTP/1.0.
R2113 Un SOBRE NO DEBE incluir el atributo soapEnc:ArrayType.
R2211 Un ENVELOPE descrito con un enlace literal rpc NO DEBE tener el atributo xsi:nil con un valor de 1 o verdadero en los descriptores de acceso parciales.
R2714 Para las operaciones unidireccionales, una INSTANCIA NO DEBE devolver una respuesta HTTP que contenga un sobre. En concreto, el cuerpo-entidad de la respuesta HTTP debe estar vacío.
R2729 Un ENVELOPE descrito con un enlace literal rpc que sea una respuesta DEBE tener un elemento contenedor cuyo nombre sea el nombre wsdl:operation correspondiente con el sufijo stringResponse.
R2735 Un ENVELOPE descrito con un enlace literal rpc DEBE colocar los elementos de acceso de la parte para los parámetros y devolver el valor en ningún espacio de nombres.
R2738 Un ENVELOPE DEBE incluir todos los encabezados soapbind:specified en un wsdl:input o wsdl:output de una operación wsdl:de un wsdl:binding que lo describa.
R2740 Un wsdl:binding en una DESCRIPCIÓN DEBE contener un soapbind:fault que describa cada error conocido.
R2744 Un mensaje de solicitud HTTP DEBE contener un campo de encabezado HTTP SoapAction con un valor comillas igual al valor del atributo SoapAction de soapbind:operation, si está presente en la descripción WSDL correspondiente.
Verificación de interoperabilidad de servicios web

En este artículo