Валидация по 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: falsedefault_wsdl_style
В значении параметра задается стиль wsdl документа, используемый по умолчанию. Используется в случае, если в документе стиль явно не прописан.
Тип параметра: строковое значение:
document;
rpc.
По умолчанию:
default_wsdl_style: documentПример:
request: - schema: xsd/soapenvelope.xsdrequest_limits
Ограничения на парсинг xml запроса.
Тип параметра: последовательность строковых значений.
По умолчанию: не имеет значения по умолчанию.
Опциональные параметры:
entityExpansionLimit
В значении параметра указывается ограничение по количеству расширений сущностей.
Тип параметра: целочисленное значение.
По умолчанию:
entityExpansionLimit: 64000elementAttributeLimit
В значении параметра указывается ограничение по количеству атрибутов, которые может содержать элемент.
Тип параметра: целочисленное значение.
По умолчанию:
elementAttributeLimit: 10000maxOccurLimit
В значении параметра указывается ограничение по числу узлов модели содержимого, которые могут быть созданы при построении грамматики для xml-схемы W3C, которая содержит атрибуты maxOccurs со значениями, отличными от «неограниченного».
Тип параметра: целочисленное значение.
По умолчанию:
maxOccurLimit: 5000totalEntitySizeLimit
В значении параметра указывается ограничение по общему размеру всех сущностей, которые включают общие и параметрические сущности. Размер рассчитывается как совокупность всех сущностей.
Тип параметра: целочисленное значение.
По умолчанию:
totalEntitySizeLimit: 50000000maxGeneralEntitySizeLimit
В значении параметра указывается ограничение максимального размера любых общих объектов.
Тип параметра: целочисленное значение.
По умолчанию:
maxGeneralEntitySizeLimit: 0maxParameterEntitySizeLimit
В значении параметра указывается ограничение максимального размера любых параметрических объектов, включая результат вложения нескольких параметрических объектов.
Тип параметра: целочисленное значение.
По умолчанию:
maxParameterEntitySizeLimit: 1000000entityReplacementLimit
В значении параметра указывается ограничение по общему количеству узлов во всех ссылках сущности.
Тип параметра: целочисленное значение.
По умолчанию:
entityReplacementLimit: 3000000maxElementDepth
В значении параметра указывается максимальная глубина элемента.
Тип параметра: целочисленное значение.
По умолчанию:
maxElementDepth: 0maxXMLNameLimit
В значении параметра указывается максимальный размер имен 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: falsedefault_wsdl_style
В значении параметра задается стиль wsdl документа, используемый по умолчанию. Используется в случае, если в документе стиль явно не прописан.
Тип параметра: строковое значение.
document;
rpc.
По умолчанию:
default_wsdl_style: documentПример:
response: - schema: xsd/soapenvelope.xsd
response_limits
Ограничения на парсинг xml ответа
Тип параметра: последовательность строковых значений.
По умолчанию: не имеет значения по умолчанию.
Опциональные параметры:
entityExpansionLimit
В значении параметра указывается ограничение по количеству расширений сущностей.
Тип параметра: целочисленное значение.
По умолчанию:
entityExpansionLimit: 64000elementAttributeLimit
В значении параметра указывается ограничение по количеству атрибутов, которые может содержать элемент.
Тип параметра: целочисленное значение.
По умолчанию:
elementAttributeLimit: 10000maxOccurLimit
В значении параметра указывается ограничение по числу узлов модели содержимого, которые могут быть созданы при построении грамматики для xml-схемы W3C, которая содержит атрибуты maxOccurs со значениями, отличными от «неограниченного».
Тип параметра: целочисленное значение.
По умолчанию:
maxOccurLimit: 5000totalEntitySizeLimit
В значении параметра указывается ограничение по общему размеру всех сущностей, которые включают общие и параметрические сущности. Размер рассчитывается как совокупность всех сущностей.
Тип параметра: целочисленное значение.
По умолчанию:
totalEntitySizeLimit: 50000000maxGeneralEntitySizeLimit
В значении параметра указывается ограничение максимального размера любых общих объектов.
Тип параметра: целочисленное значение.
По умолчанию:
maxGeneralEntitySizeLimit: 0maxParameterEntitySizeLimit
В значении параметра указывается ограничение максимального размера любых параметрических объектов, включая результат вложения нескольких параметрических объектов.
Тип параметра: целочисленное значение.
По умолчанию:
maxParameterEntitySizeLimit: 1000000entityReplacementLimit
В значении параметра указывается ограничение по общему количеству узлов во всех ссылках сущности.
Тип параметра: целочисленное значение.
По умолчанию:
entityReplacementLimit: 3000000maxElementDepth
В значении параметра указывается максимальная глубина элемента.
Тип параметра: целочисленное значение.
По умолчанию:
maxElementDepth: 0maxXMLNameLimit
В значении параметра указывается максимальный размер имен 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)"