Валидация по WSDL/XSD схеме#

При использовании xsd валидации в сервисах типа WebSocket требуется пользоваться параметрами request_schema и response_schema.

Совместное использование валидаторов и цепочек: данный механизм предполагает монопольное право на работу с контекстом запроса или ответа. В связи с этим, одновременная работа валидаторов (validators) и цепочек (chains) запрещена на уровне конфигурации, хотя и технически возможна в случае имплементации на разных фазах.

Опциональные параметры:

  • request

    В значении параметра указывается последовательность, включающая в себя следующие параметры, используемые для валидации запроса по схеме.

    Тип параметра: последовательность строковых значений.

    По умолчанию: не имеет значения по умолчанию.

    Обязательные параметры:

    • schema

      В значении параметра указывается путь к файлу схемы, с помощью которой происходит валидация.

      Тип параметра: строковое значение.

      По умолчанию: не имеет значения по умолчанию.

    Опциональные параметры:

    • url

    Параметр, позволяющий соотнести схему валидации xml-объекта и адрес, по которому был отправлен запрос. Представляет собой регулярное выражение.

    При использовании в url символов:

    { } [ ] \ . необходимо их экранирование.

    Тип параметра: строковое значение.

    По умолчанию: не имеет значения по умолчанию.

    • method

    Параметр, позволяющий соотнести схему валидации xml-объекта и метод запроса, которым он передается.

    Т.е. если используется post, то схема указанная в schema будет применяться только для post-запросов.

    Тип параметра:

    • post;

    • put;

    • delete;

    • patch.

    По умолчанию: не имеет значения по умолчанию.

    • params

    Тип параметра: последовательность параметров и их значения.

    По умолчанию: не имеет значения по умолчанию.

    Обязательные параметры:

    • name

      В значении параметра указывается имя аргумента.

      Тип параметра: текстовое значение.

      По умолчанию: не имеет значения по умолчанию.

    • operator

      В значении параметра определяется операция для аргумента.

      Тип параметра:

      • „=“ — посимвольное равенство;

      • „!=“ — посимвольное неравенство;

      • „~“ — регулярное выражение с учетом регистра;

      • „~*“ — регулярное выражение без учета регистра;

      • „!~“ — негативное регулярное выражение с учетом регистра;

      • „!~*“ — негативное регулярное выражение без учета регистра.

      По умолчанию: не имеет значения по умолчанию.

    • pattern

      В значении параметра определяется паттерн, применяемый к аргументу.

      Тип параметра: текстовое значение.

      По умолчанию: не имеет значения по умолчанию.

    • transforms

    Преобразователь тела запроса для последующей валидации.

    transforms:
      - Base64Decode
      - ASN1ContentExtractor
    

    Тип параметра: последовательность строковых значений:

    • Base64Decode;

    • ASN1ContentExtractor.

    По умолчанию: не имеет значения по умолчанию.

    • wsdl

    В значении параметра указывается флаг, включающий генерацию xsd-схемы на основе указанной в schema.

    Тип параметра:

    • true;

    • false.

    По умолчанию:

    wsdl: false
    
    • default_wsdl_style

    В значении параметра задается стиль wsdl документа, используемый по умолчанию. Используется в случае, если в документе стиль явно не прописан.

    Тип параметра: строковое значение:

    • document;

    • rpc.

    По умолчанию:

    default_wsdl_style: document
    

    Пример:

    request:
      - schema: xsd/soapenvelope.xsd
    
  • request_limits

    Ограничения на parsing xml запроса.

    Тип параметра: последовательность строковых значений.

    По умолчанию: не имеет значения по умолчанию.

    Опциональные параметры:

    • entityExpansionLimit

      В значении параметра указывается ограничение по количеству расширений сущностей.

      Тип параметра: целочисленное значение.

      По умолчанию:

      entityExpansionLimit: 64000
      
    • elementAttributeLimit

      В значении параметра указывается ограничение по количеству атрибутов, которые может содержать элемент.

      Тип параметра: целочисленное значение.

      По умолчанию:

      elementAttributeLimit: 10000
      
    • maxOccurLimit

      В значении параметра указывается ограничение по числу узлов модели содержимого, которые могут быть созданы при построении грамматики для xml-схемы W3C, которая содержит атрибуты maxOccurs со значениями, отличными от «неограниченного».

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxOccurLimit: 5000
      
    • totalEntitySizeLimit

      В значении параметра указывается ограничение по общему размеру всех сущностей, которые включают общие и параметрические сущности. Размер рассчитывается как совокупность всех сущностей.

      Тип параметра: целочисленное значение.

      По умолчанию:

      totalEntitySizeLimit: 50000000
      
    • maxGeneralEntitySizeLimit

      В значении параметра указывается ограничение максимального размера любых общих объектов.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxGeneralEntitySizeLimit: 0
      
    • maxParameterEntitySizeLimit

      В значении параметра указывается ограничение максимального размера любых параметрических объектов, включая результат вложения нескольких параметрических объектов.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxParameterEntitySizeLimit: 1000000
      
    • entityReplacementLimit

      В значении параметра указывается ограничение по общему количеству узлов во всех ссылках сущности.

      Тип параметра: целочисленное значение.

      По умолчанию:

      entityReplacementLimit: 3000000
      
    • maxElementDepth

      В значении параметра указывается максимальная глубина элемента.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxElementDepth: 0
      
    • maxXMLNameLimit

      В значении параметра указывается максимальный размер имен xml, включая имя элемента, имя атрибута, префикс пространства имен и uri.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxXMLNameLimit: 1000
      
  • response

    Значения параметра указывают пути к схемам валидации ответа, расположенных в каталоге профиля.

    Тип параметра: последовательность строковых значений.

    По умолчанию: не имеет значения по умолчанию.

    Обязательные параметры:

    • schema

      Путь к файлу схемы для валидации ответа.

      Тип параметра: строковое значение.

      По умолчанию: не имеет значения по умолчанию.

    Опциональные значения:

    • url

      Параметр, позволяющий соотнести схему валидации json-объекта и адрес, по которому был отправлен запрос.

      Тип параметра: строковое значение.

      По умолчанию: не имеет значения по умолчанию.

    • method

      Параметр, позволяющий соотнести схему валидации json-объекта и метод запроса, которым он передается.

      Т.е., если используется post, то схема указанная в schema будет применяться только для post-запросов.

      Тип параметра:

      • get;

      • post;

      • put;

      • delete;

      • patch.

      По умолчанию: не имеет значения по умолчанию.

    • params

      Группа, включающая в себя следующие параметры:

      Тип параметра: группа параметров и их значения.

      По умолчанию: не имеет значения по умолчанию.

      Опциональные параметры:

      • name

        Имя аргумента.

        Тип параметра: текстовое значение.

        По умолчанию: не имеет значения по умолчанию.

      • operator

        Операция для аргумента.

        Тип параметра:

        • =;

        • !=;

        • ~;

        • ~*;

        • !~;

        • !~*.

        По умолчанию: не имеет значения по умолчанию.

      • pattern

        Паттерн, применяемый к аргументу.

        Тип параметра: текстовое значение.

        По умолчанию: не имеет значения по умолчанию.

    • transforms

      Преобразователь тела ответа для последующей валидации.

      transforms:
        - Base64Decode
        - ASN1ContentExtractor
      

      Тип параметра: последовательность строковых значений:

      • Base64Decode;

      • ASN1ContentExtractor.

      По умолчанию: не имеет значения по умолчанию.

    • response_code

      Позволяет указать, что соответствующая схема валидации применяется только для ответов, удовлетворяющих комбинации оператора и паттерна.

      Тип параметра: оператор и паттерн.

      По умолчанию: не имеет значения по умолчанию.

      Опциональные параметры:

      • operator

        Операция для аргумента.

        Тип параметра:

        • =;

        • !=;

        • ~;

        • ~*;

        • !~;

        • !~*.

        По умолчанию: не имеет значения по умолчанию.

      • pattern

        Паттерн, применяемый к статус коду ответа

        Тип параметра: текстовое значение.

        По умолчанию: не имеет значения по умолчанию.

        Пример:

        response_code:
          operator: "!~"
          pattern: "(?:500|502)"
        
    • wsdl

      В значении параметра указывается флаг, включающий генерацию xsd-схемы на основе указанной в schema.

      Тип параметра:

      • true;

      • false.

      По умолчанию:

      wsdl: false
      
    • default_wsdl_style

      В значении параметра задается стиль wsdl документа, используемый по умолчанию. Используется в случае, если в документе стиль явно не прописан.

      Тип параметра: строковое значение.

      • document;

      • rpc.

      По умолчанию:

      default_wsdl_style: document
      

      Пример:

      response:
        - schema: xsd/soapenvelope.xsd
      
  • response_limits

    Ограничения на parsing xml ответа.

    Тип параметра: последовательность строковых значений.

    По умолчанию: не имеет значения по умолчанию.

    Опциональные параметры:

    • entityExpansionLimit

      В значении параметра указывается ограничение по количеству расширений сущностей.

      Тип параметра: целочисленное значение.

      По умолчанию:

      entityExpansionLimit: 64000
      
    • elementAttributeLimit

      В значении параметра указывается ограничение по количеству атрибутов, которые может содержать элемент.

      Тип параметра: целочисленное значение.

      По умолчанию:

      elementAttributeLimit: 10000
      
    • maxOccurLimit

      В значении параметра указывается ограничение по числу узлов модели содержимого, которые могут быть созданы при построении грамматики для xml-схемы W3C, которая содержит атрибуты maxOccurs со значениями, отличными от «неограниченного».

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxOccurLimit: 5000
      
    • totalEntitySizeLimit

      В значении параметра указывается ограничение по общему размеру всех сущностей, которые включают общие и параметрические сущности. Размер рассчитывается как совокупность всех сущностей.

      Тип параметра: целочисленное значение.

      По умолчанию:

      totalEntitySizeLimit: 50000000
      
    • maxGeneralEntitySizeLimit

      В значении параметра указывается ограничение максимального размера любых общих объектов.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxGeneralEntitySizeLimit: 0
      
    • maxParameterEntitySizeLimit

      В значении параметра указывается ограничение максимального размера любых параметрических объектов, включая результат вложения нескольких параметрических объектов.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxParameterEntitySizeLimit: 1000000
      
    • entityReplacementLimit

      В значении параметра указывается ограничение по общему количеству узлов во всех ссылках сущности.

      Тип параметра: целочисленное значение.

      По умолчанию:

      entityReplacementLimit: 3000000
      
    • maxElementDepth

      В значении параметра указывается максимальная глубина элемента.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxElementDepth: 0
      
    • maxXMLNameLimit

      В значении параметра указывается максимальный размер имен xml, включая имя элемента, имя атрибута, префикс пространства имен и uri.

      Тип параметра: целочисленное значение.

      По умолчанию:

      maxXMLNameLimit: 1000
      
  • action_when_no_rule

    В значении параметра указывается, какой решение будет принято валидатором, если не обнаружено подходящего правила для валидации сообщения.

    Тип параметра: строковое значение:

    • deny - сообщение блокируется;

    • ignore - сообщение пропускается.

    По умолчанию: deny

Пример использования xsd валидатора, с указанием расположения xsd схемы:

validators:
  validator_xsd:
    request:
      - schema: xsd/soapenvelope.xsd
    response:
      - schema: xsd/soapenvelope.xsd

Пример использования xsd валидатора, с указанием расположения wsdl схемы:

validators:
  validator_xsd:
    request:
      - schema: wsdl/schema_req.wsdl
        wsdl: true
    response:
      - schema: wsdl/schema_resp.wsdl
        wsdl: true
        response_code:
          operator: "!~"
          pattern: "(?:500|502)"