Внимание!
Официальная нормативная версия этой спецификации возможна только на английском языке и находится по адресу: http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509
Данный перевод НЕ является официальным документом W3C.
Данный документ может содержать ошибки перевода и опечатки.
Пожалуйста, изучите список опечаток к этому документу, так как он может содержать некоторые нормативные исправления.
Данный документ может быть также доступен в следующих ненормативных форматах: PDF, PostScript, XML, и открытый текст.
См. также переводы.
Авторское право © 2006 W3C® (МТИ, ERCIM, Keio), Авторские права защищены. Используются правила W3C по обязательствам, товарному знаку и использованию документа.
"Адресация веб-сервисов" предоставляет независимые от способа транспортировки механизмы адресации веб-сервисов и сообщений. "Адресация веб-сервисов, версия 1.0 - Связывание SOAP"(этот документ) дает определение связыванию абстрактных свойств, заданных в "Адресация веб-сервисов, версия 1.0 - Основные принципы. SOAP Сообщения".
Этот раздел описывает состояние этого документа на момент его публикации. Этот документ может быть заменен новыми документами Список текущих публикаций W3C и самые новые переработки этого технического отчета можно найти в оглавлении технических отчетов W3C по адресу http://www.w3.org/TR/.
Это Рекомендации по спецификации Адресация веб-сервисов, версия 1.0 - Связывание SOAP". Они были сделаны Рабочей группой по подготовке "Адресации веб-сервисов" (WG), которая является частью W3C Web Services Activity.
Этот документ рассматривался членами W3C, разработчиками ПО, другими группами W3C и заинтересованными лицами, а также был одобрен директором в качестве рекомендации W3C. Это принятый документ и потому он может быть использован в качестве справочного материала, либо цитироваться. При создании этих рекомендаций W3C ставила целью привлечь внимание к этой спецификации и помочь в распространении ее использования. Это улучшает работу и функциональную совместимость Сети.
В ответ на комментарии Рабочая группа внесла в Предлагаемые рекомендации следующие изменения: лучше выделены нормативные и информативные ссылки, а также исправлены некоторые опечатки. Доступны тестовый набор, а также отчет о реализации, из которого видно, что документ не только соответствует, но и превосходит выходные критерии для Рекомендаций. Доступна версия этого документа с отмеченными в ней изменениями.
О любых ошибках сообщайте по адресу public-ws-addressing-comments@w3.org ( публичный архив).
Этот документ был составлен группой, работающей согласно Патентной политики W3C от 5 февраля 2004 года W3C поддерживает список общественного пользования с описанием патентованного изобретения, сделанный для документации группы; эта же страница содержит инструкции по разглашению описания патентованного изобретения. Любой человек, который обладает действительным знанием о патенте, который, по мнению этого человека, содержит Патентную формулу должен раскрыть эту информацию, согласно разделу 6 Патентной политики W3C.
1. Вступление
1.1 Соглашения об
обозначениях
1.2 Пространства
имен
2. Функция SOAP версия 1.2 Адесация, версия
1.0
2.1 Имя
функции
2.2 Описание
2.3 Свойства
2.4 Взаимодействие с другими функциями
SOAP
3. Модуль SOAP версия 1.2 Адресация версия
1.0
3.1 Имя
модуля
3.2 Описание
3.2.1 Отправка сообщений
3.2.2 Принятие сообщений
3.3 Дополнительные элементы инфонабора
3.4 Связывание свойств
адресации сообщения
3.5 Отношения
между заголовками SOAP и свойствами транспортного уровня
4. Расширение SOAP версия 1.1 Адресация версия
1.0
4.1 Имя
расширения
4.2 Описание
5. Адреса в SOAP
5.1 Использование
анонимного адреса в конечных точках ответа в SOAP
5.1.1 SOAP версия 1.1/HTTP
5.1.2 SOAP версия 1.2
5.2 Использование
неанонимного адреса в конечных точках ответа в SOAP
5.2.1 SOAP версия 1.1/HTTP
5.2.2 SOAP версия 1.2
6. Отказы
6.1 SOAP 1.2
Связывание отказов
6.2 SOAP версия 1.1
Связывание отказов
6.3 Элементы
подробного описания отказов
6.3.1 Проблема - заголовок QName
6.3.2 Проблема IRI
6.3.3 Проблема - действие
6.3.4 Повтор после
6.4 Стандартные
неисправности
6.4.1 Неверный заголовок адресации
6.4.1.1
wsa:InvalidAddress
6.4.1.2
wsa:InvalidEPR
6.4.1.3
wsa:InvalidCardinality
6.4.1.4
wsa:MissingAddressInEPR
6.4.1.5
wsa:DuplicateMessageID
6.4.1.6
wsa:ActionMismatch
6.4.1.7
wsa:OnlyAnonymousAddressSupported
6.4.1.8
wsa:OnlyNonAnonymousAddressSupported
6.4.2 Требуется заголовок адресации запроса
6.4.3 Адрес назначения не доступен
6.4.4 Действие не поддерживается
6.4.5 Конечная точка недоступна
7. Соображения по
безопасности
7.1 Получение доверия
EPR
7.2 Дополнительные
соображения по безопасности
7.3 Дополнительные
соображения по SOAP-посредникам
8. Соответствия
9. Ссылки
9.1 Нормативные ссылки
9.2 Другие ссылки
A. Благодарности
(ненормативный раздел)
Адресация веб-сервисов версия 1.0 - Основные принципы [Основный принципы адресации веб-сервисов] определяет набор абстрактных свойств и представление информационного множества XML [Информационное множество XML] которые призваны ссылаться на конечные точки веб-сервисов и облегчать сквозную адресацию конечных точек в сообщениях. "Адресация веб-сервисов, версия 1.0 - Связывание SOAP"(этот документ) дает определение связыванию абстрактных свойств, заданных в "Адресация веб-сервисов, версия 1.0 - Основные принципы. SOAP Сообщения".
В следующем примере демонстрируется применение этих механизмов в сообщении SOAP версии 1.2, посланном с адреса http://example.com/business/client1 на адрес http://example.com/fabrikam/Purchasing:
Пример 1-1. Использование свойств адресации сообщений в сообщении SOAP версии 1.2.
(01) <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
(02) <S:Header>
(03) <wsa:MessageID>http://example.com/6B29FC40-CA47-1067-B31D-00DD010662DA</wsa:MessageID>
(04) <wsa:ReplyTo>
(05) <wsa:Address>http://example.com/business/client1</wsa:Address>
(06) </wsa:ReplyTo>
(07) <wsa:To>http://example.com/fabrikam/Purchasing</wsa:To>
(08) <wsa:Action>http://example.com/fabrikam/SubmitPO</wsa:Action>
(09) </S:Header>
(10) <S:Body>
(11) ...
(12) </S:Body>
(13) </S:Envelope>
Линии с (02) по (09) представляют заголовок SOAP-сообщения, в которой используются определенные спецификацией механизмы. Тело сообщения представлено в линиях с (10) по (12).
Линии с (03) по (08) содержит свойства адресации сообщения, упорядоченного в виде блоков SOAP заголовка. Конкретней, линия (03) задает идентификатор для этого сообщения, и линии с (04) по (06) задают конечную точку, на которую должны посылаться ответы на это сообщение, как Endpoint Reference. Линия (07) задает URI адреса конечного получателя этого сообщения. Линия (08) определяет URI действия, идентифицирующего ожидаемую семантику.
Ключевые слова в этом документе, такие как "ДОЛЖЕН", "НЕ ДОЛЖЕН", "ТРЕБУЕТСЯ", "БУДЕТ", "НЕ БУДЕТ", "СЛЕДУЕТ", "НЕ СЛЕДУЕТ", "РЕКОМЕНДУЕТСЯ", "МОЖЕТ" и "ОПЦИОНАЛЬНО", должны интерпретироваться согласно описанию в RFC 2119 [IETF RFC 2119].
При описании абстрактных моделей данных эта спецификация использует обозначения принятые информационным множеством XML [Информационное множество XML]. А именно, имена абстрактных свойств всегда появляются в квадратных скобках (например, [какое-то свойство]).
При описании конкретных XML-схем [Структуры XML схемы, Типы данных XML схемы], эта спецификация использует обозначения, принятые в "Безопасности веб-служб" [Безопасность веб-служб]. А именно, каждый член [порожденного] свойства элемента или свойства [атрибутов] элемента описан с использованием записей в стиле языка XPath (например, /x:MyHeader/x:SomeProperty/@value1). Использование {any} означает присутствие группового символа элемента (<xs:anyй/>). Использование @{any} означает присутствие группового символа атрибута (<xs:anyAttribute/>).
По всей спецификации используется большое количество префиксов пространства имен; они перечислены в Таблица 1-1. Учитывайте, что выбор любого префикса пространства имен является произвольным и не имеет значения (see [Пространства имен XML]).
| Префикс | Пространство имен |
|---|---|
| S | http://www.w3.org/2003/05/soap-envelope |
| S11 | http://schemas.xmlsoap.org/soap/envelope |
| wsa | http://www.w3.org/2005/08/addressing |
| wsaw | http://www.w3.org/2006/02/addressing/wsdl |
| xs | http://www.w3.org/2001/XMLSchema |
Адресация веб-сервисов определяется в терминах информационного множества XML [Информационное множество XML]. Адресация веб-сервисов совместима с моделью обработки SOAP 1.2 [Модель передачи сообщений SOAP 1.2] и также имеет обратную совместимость с SOAP 1.1[SOAP 1.1]. Адресация веб-сервисов может использоваться с описанными службами WSDL [WSDL версия 2.0: Базовый язык], согласно "Адресация веб-сервисов, версия 1.0 - Связывание WSDL" [Адресация веб-сервисов - Связывание WSDL]. Примеры в этой спецификации используют XML версии 1.0 [XML версия 1.0], но это не является требованием.
Все определяемые этой спецификацией единицы информации идентифицируются URI пространства имен XML [Пространства имен XML] http://www.w3.org/2005/08/addressing. Нормативный документ типа "XML схема" [Структуры XML схемы, Типы данных XML схемы] может быть получен разыменованием идентификатора пространства имен XML.
Этот раздел описывает функцию адресации версии 1.0, SOAP версии 1.2.
Функция адресации версии 1.0, SOAP версии 1.2 именуется с помощью следующего идентификатора:
http://www.w3.org/2005/08/addressing/feature
Функция адресации версии 1.0, SOAP версии 1.2 предоставляет SOAP-специфическое выражение свойств адресации абстрактного сообщения, определенных в "Адресация веб-сервисов, версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципыл].
Эта функция может быть использована с любой моделью обмена сообщениями SOAP. Поддерживающее эту функцию связывание ДОЛЖНО обеспечивать средства передачи приведенных ниже свойств вместе с сообщением, а также воссоздавать их значения по получению сообщения.
Функция адресации версии 1.0, SOAP версии 1.2 определяет следующие свойства:
Соответствует абстрактному свойству [адрес назначения] (destination).
Соответствует абстрактному свойству [конечная точка источника] (source endpoint).
Соответствует абстрактному свойству [конечная точка ответа] (reply endpoint).
Соответствует абстрактному свойству [отказ конечная точка] (fault endpoint).
Соответствует абстрактному свойству [действие] (action).
Соответствует абстрактному свойству [id сообщения] (message id).
Соответствует абстрактному свойству [отношение] (relationship).
Соответствует абстрактному свойству [параметры-ссылки] (reference parameters).
Если http://www.w3.org/2003/05/soap/features/action/Action свойство функции действия SOAP [SOAP версия 1.2 - Дополнения] имеет значение, то значение http://www.w3.org/2005/08/addressing/feature/Action свойства функции адресации версии 1.0, SOAP версии 1.2 ДОЛЖНО быть идентично ему. Отсутствие идентичных значений приводит к ошибке неверной адресации заголовка (см. 6.4.1 Неверная адресация заголовка).
Модуль адресации версии 1.0, SOAP версии 1.2 определяет набор блоков заголовков SOAP на поддержку "Функции адресации версии 1.0, SOAP версии 1.2", описанной в 2. Функция адресации версии 1.0, SOAP версии 1.2.
Модуль адресации версии 1.0, SOAP версии 1.2 определяется с помощью следующего идентификатора:
http://www.w3.org/2005/08/addressing/module
"Функция адресации версия 1.0, SOAP версия 1.2" (см. 2. Функция адресации версия 1.0, SOAP версии 1.2) определяет набор свойств SOAP и их отношение к свойствам адресации абстрактных сообщений, определенным в "Адресация веб-сервисов версия 1.0 - Основные принципы [Адресация веб-сервисов - Основные принципы]. "Модуль адресации версия 1.0, SOAP версия 1.2" определяет заголовки SOAP соответственно тому, как информационные множества XML представляют свойства адресации абстрактных сообщений, определенные в "Адресация веб-сервисов версия 1.0 - Основные принципы".
При посылании сообщения каждое свойство представлено, используя соответствующий элемент информации в качестве блок заголовка SOAP. По умолчанию, получающиеся блоки заголовка являются целевым объектом на окончательном получателе по пути сообщения SOAP (имейте в виду, что расширения к адресации веб-сервисов могут быть написаны с указанием другого типа использования целевых объектов). 3.4 Связывание свойств адресации сообщения описывает дополнительную обработку, необходимую при связывании свойств адресации сообщения к блокам заголовка SOAP.
При получении сообщения, абстрактные свойства заносятся из соответствующих элементов информации в сообщении. Сообщение НЕ ДОЛЖНО содержать более одного заголовка wsa:To, wsa:ReplyTo, wsa:FaultTo, wsa:Action, либо wsa:MessageID нацеленного на получателя; заголовки с неправильным количеством элементов НЕ ДОЛЖНЫ использоваться для занесения соответствующих абстрактных свойств. При получении подобного сообщения получатель ДОЛЖЕН сгенерировать отказ wsa:InvalidAddressingHeader (см 6.4.1 Неверная адресация заголовка).
Примечание:
Модель обработки SOAP требует, чтобы свойства адресации сообщения, адресованные на промежуточной стадии, обычно не передавались в качестве свойств адресации сообщения, когда сообщение пересылается дальше по пути сообщения. Спецификация для заголовка SOAP, использованная как параметр-ссылка, либо использование атрибута soap:relay. могут заменить это стандартное поведение.
Модуль адресации версия 1.0 SOAP версия 1.2, определяет следующие дополнительные единицы XML Infoset:
Этот ТРЕБУЕМЫЙ атрибут (типа xs:boolean) показывает является ли заголовок адресации сообщения параметром-ссылкой, за дополнительной информацией по использованию см. раздел 3.4 Связывание свойств адресации сообщения.
Когда сообщение должно адресоваться на конечную точку, XML Infoset представление каждого свойства адресации сообщения, которому было назначено значение, вставляется в сообщение в качестве блока заголовка SOAP, зависящего от следующих дополнительных ограничений:
Значение, если такое есть, свойства [параметров-сылок] (reference parameters) добавляется в заголовок сообщения SOAP: элемент информации каждого из [параметров-ссылок] (reference parameters) (включая все [дочерние элементы](children), [атрибуты](attributes) и [пространства имен в области действия](in-scope namespaces) добавляется в новое сообщение в качестве блока заголовка SOAP.
Примечание:
Вставка в запрос заголовка SOAP предполагает использование соответствующей семантики. Так как механизм параметров-ссылок не ставит ограничений на содержимое генерирующихся заголовков, поставщики EPR должны быть особенно осторожны, для того чтобы их параметры-ссылки не привели к непреднамеренной либо ошибочной семантике получившегося запроса SOAP. Например, использование параметра-ссылки для того чтобы послать WS-Security заголовок [WS-Security] было бы неблагоразумно (так как другие части инфраструктуры SOAP будут часто управлять этим заголовком, и на один запрос должен быть хотя бы один заголовок).
Каждый блок заголовка, добавленный в результате приведенного выше правила, комментируется атрибутом wsa:IsReferenceParameter (см. 3.3 Дополнительные элементы информационного множества), чьим значением является действительное xs:boolean представление "истина". Любой существующий атрибут wsa:IsReferenceParameter блока заголовка заменяется.
Примечание:
Проверка достоверности целостности [параметров-ссылок] (reference parameters) должна учитывать добавление атрибутов wsa:IsReferenceParameter и соответствующее введение пространства имен адресации веб-сервисов в [пространства имен в области действия](in-scope namespaces).
Значение каждого свойства адресации сообщения, т.е. типа IRI, ДОЛЖНА быть сериализована в качестве абсолютного IRI в соответствующем блоке заголовка SOAP. Никаких дополнительных %-escaping не выполняется.
Каждый опциональный элемент или атрибут, имеющий значение, равное установленному стандартному значению этого элемента или атрибута, МОЖЕТ быть опущен.
В следующем примере демонстрируется как "Модуль адресации версия 1.0 SOAP версия 1.2" используется для построения сообщения, адресованного на конечную точку:
Пример 3-1. Пример ссылки на конечную точку.
<wsa:EndpointReference
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:wsaw="http://www.w3.org/2006/02/addressing/wsdl"
xmlns:fabrikam="http://example.com/fabrikam"
xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance"
wsdli:wsdlLocation="http://example.com/fabrikam
http://example.com/fabrikam/fabrikam.wsdl">
<wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
<wsa:Metadata>
<wsaw:InterfaceName>fabrikam:Inventory</wsaw:InterfaceName>
</wsa:Metadata>
<wsa:ReferenceParameters>
<fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
<fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
</wsa:ReferenceParameters>
</wsa:EndpointReference>
Значение адреса копируется в блоке заголовка "To" и элемента "CustomerKey" и "ShoppingCart" копируются буквально как блоки заголовка в SOAP-сообщении, адресованном на эту конечную точку. Получившееся SOAP-сообщение будет выглядеть подобным образом:
Пример 3-2. Пример ссылки конечно точки преобразованной в блоки заголовка сообщения SOAP.
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:fabrikam="http://example.com/fabrikam">
<S:Header>
...
<wsa:To>http://example.com/fabrikam/acct</wsa:To>
<wsa:Action>...</wsa:Action>
<fabrikam:CustomerKey wsa:IsReferenceParameter='true'>123456789</fabrikam:CustomerKey>
<fabrikam:ShoppingCart wsa:IsReferenceParameter='true'>ABCDEFG</fabrikam:ShoppingCart>
...
</S:Header>
<S:Body>
...
</S:Body>
</S:Envelope>
Некоторые основные протоколы могу тподдерживать собственные свойства, схожие с свойствами адресации сообщения. Например, "ответ на" (reply-to): заголовок письма электронной почты похож на [конечная точка ответа](reply endpoint) свойство адресации запроса. Авторы и разработчики связываний не должны предполагать существование какого-либо особого соответствия между собственными свойствами и свойствами адресации сообщения. Например, если сообщение электронной почты представляет только один отрезок пути в маршруте из множества таких отрезков, то "ответ на" (reply-to): заголовок, скорее всего будет отличаться от адреса [конечной точки ответа](reply endpoint).
Расширение адресации версия 1.0, SOAP версия 1.2 определяет набор блоков заголовков SOAP на поддержку "Функции адресации версия 1.0, SOAP версия 1.2", описанной в 2. Функция адресации версия 1.0, SOAP версия 1,1. Это расширение SOAP версии 1.1 предоставляется исключительно в целях обратной совместимости.
Расширение адресации версия 1.0, SOAP версия 1.1 определяется с помощью следующего идентификатора:
http://www.w3.org/2005/08/addressing/module
"Функция адресации версия 1.0, SOAP версия 1.2" (см. 2. Функция адресации версия 1.0, SOAP версии 1.2) определяет набор свойств SOAP и их отношение к свойствам адресации абстрактных сообщений, определенным в "Адресация веб-сервисов версия 1.0 - Основные принципы [Адресация веб-сервисов - Основные принципы]. "Расширение адресации версия 1.0, SOAP версия 1.1" использует XML Infoset представление свойств адресации абстрактных сообщений, определенных в "Адресация веб-сервисов версия 1.0 - Основные принципы" и привязывает каждый элемент информации к блоку заголовка SOAP. Расширение адресации версия 1.0 SOAP версия 1.1 работает согласно описанию в 3. Модуль адресации версия 1.0 SOAP версия 1.2, со следующими отличиями:
Использование SOAPAction поля заголовка требования HTTP треубется при использовании HTTP-связывания SOAP версии 1.1. Значение SOAPAction поля заголовка требования HTTP ДОЛЖНО быть либо значением свойства [действия](action), зключенным в кавычки, либо фиктивным значением "". В последнем случае поддерживается возможность скрыть свойство [действие](action) с помощью механизмов безопасности уровня SOAP, не прибегая к в других отношениях бесполезной безопасноти транспортного уровня. Любое другое значение для SOAPAction приводит к отказу "неверное свойство адресации сообщения" (см. 6.4.1 Неверная адресация заголовка).
Ниже, термин "конечная точка ответа" подразумевает разом свойства адресации запроса [конечная точка ответа](reply endpoint) и [отказ конечная точка](fault endpoint).
Значение "http://www.w3.org/2005/08/addressing/anonymous" для свойства [адрес назначения] (destination) не предполагает дополнительной семантики, кроме той, что требуется приведенными ниже правилами и описана в "Адресация веб-сервисов версия 1.0 - Основные принципы [Адресация веб-сервисов - Основные принципы. В частности, примите ко вниманию, что в "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы], раздел 3.4 требует подобное значение в сообщениях, посланных на конечную точку ответа, чей [адрес] (address) "http://www.w3.org/2005/08/addressing/anonymous".
Когда "http://www.w3.org/2005/08/addressing/anonymous" указан в качестве конечной точки ответа, в связывании SOAP 1.1/ HTTP ничего не меняется.
Когда "http://www.w3.org/2005/08/addressing/anonymous" указывается в качестве конечной точки ответа, и запрос является свойством http://www.w3.org/2003/05/soap/mep/InboundMessage модели MEP запроса-ответа SOAP [SOAP версия 1.2 - Дополнения], тогда любой ответ ДОЛЖЕН быть свойством http://www.w3.org/2003/05/soap/mep/OutboundMessage той же копии модели MEP запроса-ответа SOAP [SOAP версия 1.2 - Дополнения].
Когда "http://www.w3.org/2005/08/addressing/anonymous" не указывается в качестве конечной точки ответа, то запросу СЛЕДУЕТ быть частью вязывания, которое поддерживает не-возвращение конверта SOAP в HTTP ответе (например, см. [SOAP версия 1.1 HTTP связывание опционального ответа на запрос]). Любое ответное сообщение СЛЕДУЕТ посылать используя отдельное подключение и значение адреса, указанное конечной точкой ответа. Учитывайте, что другие спецификации МОГУТ определять специальные URI, с другими поведениями (похоже на анонимный URI).
Когда "http://www.w3.org/2005/08/addressing/anonymous" не указывается для конечной точки ответа, любому ответу НЕ СЛЕДУЕТ быть свойством http://www.w3.org/2003/05/soap/mep/OutboundMessage той же копии модели MEP запроса-ответа SOAP [SOAP версия 1.2 - Дополнения]. Например, HTTP связывание SOAP версии 1.2, которое поддерживает односторонний MEP могло бы положить ответное сообщение в отдельный односторонний MEP и отдельный HTTP запрос. Как и в случае SOAP версии 1.1/HTTP, учитывайте, что другие спецификации МОГУТ определять специальные URI, с другими поведениями (похоже на анонимный URI).
Указанные в этом разделе отказы генерируются в случае, если ситуация соответствует указанным в вводной части каждого подраздела условиям.
Конечные точки, которые соответствуют этой спецификации, ДОЛЖНЫ включать требуемые свойства адресации сообщения, сериализованные как SOAP-заголовки в генерированных сообщениях об отказых. Сообщения об отказых соотносятся как ответы, используя свойство [отношение] (relationship), согласно "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы]. Имейте в виду, что отсутствие свойства [id сообщения] (message id) во входящем сообщении может сказаться на способности получателя сообщения об ошибке соотнести это сообщение с тем, которое привело к генерации этого сообщения об отказе. Отсутствие свойств [отказ конечная точка] (fault endpoint) или [конечная точка ответа] (reply endpoint) может повлиять на доставку сгенерированного сообщения об отказе
Приведенное ниже свойство [действие] (action) определяет сообщения об отказах адресации веб-сервисов:
http://www.w3.org/2005/08/addressing/fault
Это действие НЕ СЛЕДУЕТ использовать как значение действия в сообщениях не сообщающих об отказах адресации веб-сервисов.
Модулям SOAP, расширениям и приложениям СЛЕДУЕТ определять для описываемых ими отказов стандартные значения [действия] (action), но они МОГУТ указать использование следующего значения [действия] (action):
http://www.w3.org/2005/08/addressing/soap/fault
Указанное выше значение [действия] (action) СЛЕДУЕТ использовать для определенных SOAP отказов, включая несоответсвие версий (version mismatch), "должен понять" (must understand), неизвестную кодировку данных (data encoding unknown).
Каждый из приведенных ниже стандартных отказов определяется указанием значений для следующих абстрактных свойств:
[Код] (Code) Код отказа, ТРЕБУЕТСЯ использование определенного кода отказа.
[Субкод] (Subcode) Субкод отказа, ТРЕБУЕТСЯ использование определенного субкода отказа.
[Субсубкод] Более подробный субкод отказа, который может использоваться для более полной характеристики значения свойства [субкод] (Subcode), использование определенного кода отказа ОПЦИОНАЛЬНО.
[Причина] (Reason) Элемент причины указывается на английском языке, использование определенного кода отказа РЕКОМЕНДУЕТСЯ, но МОЖНО использовать дублирующий текст.
[Подробности] (Details) Элементы подробностей, ТРЕБУЕТСЯ использование определенного субкода отказа. При отсутствии, никаких элементов подробностей для отказов не определяется.
Свойства отказа привязываются к отказу SOAP версии 1.2 следующим образом:
Значение свойства [Код] (Code) привязывается в качестве значения элемента информации отказов SOAP S:Fault/S:Code/S:Value.
Значение свойства [Субкод] (Subcode) привязывается в качестве значения элемента информации отказов SOAP S:Fault/S:Subcode/S:Value.
Значение свойства [Субсубкод] (Subsubcode) привязывается в качестве значения элемента информации отказов SOAP S:Fault/S:Code/S:Subcode/S:/Subcode/S:Value.
Значение свойства [Причина] (Reason) привязывается в качестве значения элемента информации отказов SOAP S:Fault/S:Reason/S:Text.
Значение свойства [Подробности] (Details) привязывается в качестве значения элемента информации отказов SOAP S:Fault/S:Detail.
Пример 6-1. Привязывание свойств отказа сообщениям SOAP версия 1,2.
<S:Envelope>
<S:Header>
<wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action>
<!-- Заголовки опускаются для краткости. -->
</S:Header>
<S:Body>
<S:Fault>
<S:Code>
<S:Value>[Code]</S:Value>
<S:Subcode>
<S:Value>[Subcode]</S:Value>
<S:Subcode>
<S:Value>[Subsubcode]</S:Value>
</S:Subcode>
</S:Subcode>
</S:Code>
<S:Reason>
<S:Text xml:lang="en">[Reason]</S:Text>
</S:Reason>
<S:Detail>
[Detail]
</S:Detail>
</S:Fault>
</S:Body>
</S:Envelope>
Отказ SOAP версии 1.1 немного менее ясно выражен, в сравнении с отказом SOAP версии 1.2 и отображает только [Субкод] (Subcode), [Причину] (Reason) и [Подробности] (Detail). Эти свойства привязываются к отказу SOAP версии 1.1 следующим образом:
Значение [Субсубкода] (Subsubcode) или, если оно не указано, значение свойства [Субкод] (Subcode) привязывается в качестве значения элемента SOAP-отказов S11:Fault/faultcode.
Значение свойства [Причина] (Reason) привязывается в качестве значения элемента SOAP-отказов S:Fault/S:Reason/S:Text.
Подробности отказа SOAP версии 1.1 используются только лишь для отказов, которые относятся к телу сообщения, и потому не используются с отказами SOAP версии 1.1, которые относятся к обработке заголовков адресации. Вместо этого, значение свойства [Подробности] (Details) привязывается в качестве значения номого блока SOAP-заголовка wsa:FaultDetail. Ниже описывается элемент wsa:FaultDetail:
Ноль либо более элементов, определенных в 6.3 Элементы - Подробности отказа.
Опциональные атрибуты расширяемости, включающие role и mustUnderstand SOAP.
Пример 6-2. Привязывание свойств отказа сообщениям SOAP версия 1.1.
<S11:Envelope>
<S11:Header>
<wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action>
<wsa:FaultDetail>[Details]</wsa:FaultDetail>
<!-- Другие заголовки опускаются для краткости. -->
</S11:Header>
<S11:Body>
<S11:Fault>
<faultcode>[Subcode] or [Subsubcode]</faultcode>
<faultstring xml:lang="en">[Reason]</faultstring>
</S11:Fault>
</S11:Body>
</S11:Envelope>
В приведенных ниже подразделах определяется набор элементов, которые используются для передачи дополнительной информации об отказах, описаных в 6.4 Стандартные заказы.
Ниже описывается элемент <wsa:ProblemHeaderQName>:
QName, представляющая имя корневого элемента проблемного блока заголовка.
Опциональные атрибуты расширения, которые не влияют на обработку.
Ниже описывается элемент <wsa:ProblemIRI>:
Вызвавший проблему IRI.
Опциональные атрибуты расширения, которые не влияют на обработку.
Ниже описывается элемент <wsa:ProblemAction>:
Опциональный элемент, предоставляющий [действие] (action) вызвавшее проблему.
Опциональный элемент, предоставляющий SOAPAction IRI вызвавший проблему.
Не влияющие на обработку опциональные атрибуты расширения.
Опциональные атрибуты расширения, которые не влияют на обработку.
Ниже описывается элемент <wsa:RetryAfter>:
Этот элемент (с содержимым типа xs:unsignedLong) представляет собой предлагаемый минимальный промежуток времени, который следует подождать прежде чем передавать сообщение заново. Отсутствие этого элемента указывает на то, что повтор не даст результата.
Опциональные атрибуты расширения, которые не влияют на обработку.
Заголовок представляющий свойство адресации сообщения "адресации веб-сервисов, версия 1.0" неверен и не может быть обработан. Ошибка достоверности может быть как структурной, так и семантической, например, [адрес назначения](destination), который не является IRI, либо [отношение](relationship) к [id сообщения](message id), которое так и не было выдано.
[Код](Code) QName представляющее значение S:Sender
[Субкод](Subcode) QName представляющее значение wsa:InvalidAddressingHeader
[Reason](Reason) строка: "Заголовок, представляющий свойство адресации сообщения, не достоверен, и сообщение не может быть обработано"
[Details](Подробности) либо элемент <wsa:ProblemHeader>, который передает копию содержащего ошибку заголовка, либо элемент <wsa:ProblemHeaderQName>, который передает QName корневого элемента содержащего ошибку заголовка.
Отказ из-за неверного заголовка адресации может быть далее уточнен с помощью дополнительных [Субкодов](Subsubcodes), показанных в следующих подразделах. Использование этих значений [субкода](Subsubcode) ОПЦИОНАЛЬНО.
Указывает, что ожидалось, что неверный заголовок будет EPR, но это оказалось не так.
Указывает, что число заданных заголовков оказалось больше, чем ожидалось.
Указывает, что ожидалось, что неверный заголовок будет EPR, но он не содержал [адреса](address).
Указывает, что неверный заголовок передал [id сообщения](message id), которое является дубликатом уже полученного.
Указывает, что [действие](action) и SOAPAction для сообщения не совпали, в [Подробностях](Details) МОЖЕТ содержаться элемент <wsa:ProblemAction>, в дополнение к элементу <wsa:ProblemHeader> или <wsa:ProblemHeaderQName>.
Отсутствует требуемый заголовок, представляющий свойство адресации сообщения.
[Код](Code) QName представляющее значение S:Sender
[Субкод](Subcode) QName представляющее значение wsa:MessageAddressingHeaderRequired
[Подробности](Reason) строка: "Отсутствует требуемый заголовок, представляющий свойство адресации сообщения"
[Подробности](Details) элемент <wsa:ProblemHeaderQName>, который передает QName отсутствовавшего заголовка адресации сообщения.
Конечная точка, идентифицируемая значением свойства [адрес назначения](destination), не может быть достигнута.
[Код](Code) QName представляющее значение S:Sender
[Субкод](Subcode) QName представляющее значение wsa:DestinationUnreachable
[Подробности](Reason) строка: "Маршрут достижения [адреса назначения](destination) не может быть определен"
[Подробности](Details) опциональный элемент <wsa:ProblemIRI>, который передает [адрес](address) of the [адреса назначения](destination).
Использование этого отказа опционально.
На этой конечной точке свойство [действие](action) этого сообщения не поддерживается.
[Код](Code) QName представляющее значение S:Sender
[Субкод](Subcode) QName представляющее значение wsa:ActionNotSupported
[Подробности](Reason) строка: "[Действие](action) не может быть обработано на получателе"
[Подробности](Details) элемент <wsa:ProblemAction> с ТРЕБУЕМЫМ дочерним элементом <wsa:Action>
Использование этого отказа опционально.
Конечная точка не может сейчас обработать сообщение из-за временных либо постоянных неполадок.
Конечная точка может опционально включать в подробностях параметр RetryAfter. Источнику НЕ СЛЕДУЕТ заново передавать сообщение, пока не истечет это время.
[Код](Code) QName представляющее значение S:Receiver
[Субкод](Subcode) QName представляющее значение wsa:EndpointUnavailable
[Подробности](Reason) строка: "На данный момент конечная точка не может обработать сообщение"
[Подробности](Details) опциональные элементы <wsa:RetryAfter> и <wsa:ProblemIRI>, которые передают [адрес](address) of the [адреса назначения](destination).
Использование этого отказа опционально.
Примечание:
Здесь не делается никаких предположений об уровне безопасности приложения, организации приложения, применении отправителей или получателей, либо о способах применения адресации веб-сервисов другими протоколами, а также о тех механизмах обеспечения безопасности, которые они могут использовать. Крайне рекомендуется целостный подход к безопасности, который учитывает все компоненты приложения, другие используемые протоколы, способы взаимодействия этих протоколов с безопасностью веб-сервисов, а также использование других методов и технологий.
Как обсуждалось в "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы] , адресация веб-сервисов поддерживает возможности, позволяющие отправителю сообщения давать инструкции получателю сообщения по отправлению дополнительных, незатребованных сообщений другим выбранным получателям, и, до некоторой степени, контролировать содержанием этих сообщений с помощью параметров-ссылок. SOAP-связывание адресации веб-сервисов преобразует параметры-ссылки EPR в заголовки SOAP и это позволяет отправителю сообщения требовать от получателя послать дополнительные, незатребованные, SOAP-сообщения другим получателям по выбору, и указать набор SOAP-заголовков, которые должны быть включены в эти сообщения.
SOAP-заголовки являются мощным механизмом расширения, и потому надо быть очень осторожным принимая [конечную точку ответа](reply endpoint) либо [конечную точку отказа](fault endpoint), чтобы избежать неумышленного участия в действиях отправителей злонамеренных SOAP-сообщений.
Свойства адресации сообщения "адресации веб-сервисов", сериализованные как SOAP-заголовки (wsa:To, wsa:Action et al.), включая те заголовки, которые присутствуют из-за свойства [параметры-ссылки](reference parameters), должны быть полностью защищены, как разъясняется в "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы].
Сообщения использующие заголовки wsa:ReplyTo либо wsa:FaultTo, чей [адрес](address) не является предписанным анонимным URI, должны включать заявления, которые позволят получателю подтвердить, что EPR была выпущена принципом, который имеет право представлять [адрес](address) EPR.
Когда принимается SOAP-сообщение, некоторые SOAP-заголовки могут быть результатом сериализации свойства EPR [параметры-ссылки](reference parameters). Чтобы предовратить нежелательные действия, получатель SOAP-сообщения должен выполнить дополнительные проверки безопасности и санитарные проверки.
Существует много механизмов, которые могут помочь предоставить доказательство того, что отправитель сообщения имеет право представлять [адрес](address) EPR, переданного внутри сообщения. ОБычно такие механизмы требуют включения заголовка безопасности веб-служб [безопасность веб-служб], который содержит XML цифровые подписи, привязывающие элементы wsa:ReplyTo и wsa:FaultTo к SOAP-сообщению, с помощью маркера доступа, выданного тем, кому получатель доверяет в том, что касается домена [адреса](address) EPR. Владение маркером доступа, выданным доверенным лицом домену [адреса](address) EPR, дает какую-то уверенность в том, что отправитель сообщения имеет право представлять [адрес](address).
Например, сообщение могло бы включать заголовок безопасности веб-служб [безопасность веб-служб], который содержит XML цифровые подписи, привязывающие элементы wsa:ReplyTo и wsa:FaultTo к SOAP-сообщению, с помощью сертификата X.509, для домена, адресованного [адресом](address) EPR. Если сертификат выдан лицом, которому доверяет получатель сообщения, то получатель может быть в некоторой степени уверен, что отправитель сообщения имеет право представлять [адрес](address) EPR.
Атрибет wsa:isReferenceParameter имеет смысл только в SOAP-заголовках. Программы обработки сообщений должны рассматривать его появление в каком-либо другом месте SOAP-сообщения как возможную атаку.
Программы обработки сообщений должны считать появление в EPR элементов из пространств имен soap11, soap12 и wsa в качестве параметров-ссылок как возможную атаку.
Известны XML ID и реструктурирующие атаки, которые должны учитываться программами обработки сообщений, см. [безопасность веб-служб] - Соображения по безопасности: Удаление и модификация XML-элементов.
Для избежания взлома подписей, посредники НЕ ДОЛЖНЫ менять XML-представление заголовков веб-адресации пр их передаче. В особенности, посредники НЕ ДОЛЖНЫ удалять XML-содержимое, которое явно указывает иначе-неявное содержимое, и посредники НЕ ДОЛЖНЫ вставлять XML-содержимое, призванное сделать неявные значения явными. Например, если атрибут RelationshipType идет со значением "http://www.w3.org/2005/08/addressing/reply", то посредник НЕ ДОЛЖЕН удалять его; точно так же, если нет атрибута RelationshipType, то посредние НЕ ДОЛЖЕН его добавлять.
Сообщение SOAP версии 1.2 соответствует "Модулю адресации версии 1.0 SOAP версии 1.2", когда оно содержит заголовки из пространства имен wsa, и следует всем ограничениям для свойств адресации сообщения, определенным в "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы] и "Модуле адресации версии 1.0 SOAP версии 1.2".
Сообщение SOAP версии 1.1 соответствует "Расширению адресации версии 1.0 SOAP версии 1.1", когда оно содержит заголовки из пространства имен wsa, и следует всем ограничениям для свойств адресации сообщения, определенным в "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы] и "Расширении адресации версии 1.0 SOAP версии 1.1".
Соответствующая этим спецификациям конечная точка понимает и принимает SOAP-сообщения, которые содержат нацеленные на нее заголовки пространства имен wsa, генерирует сообщение отказа или ответа, которое может послать в ответ согласно описанными в этой спецификации правилам и "Адресации веб-сервисов версия 1.0 - Основные принципы" [Адресация веб-сервисов - Основные принципы].
Примечание:
"Адресация веб-сервисов, версия 1.0 - Связывание WSDL" [Адресация веб-сервисов - Связывание WSDL] определяет дополнительные требования соответствия для описания конечной точки.
Примечание:
Конечный точки МОГУТ принимать и отвечать на сообщения, которые не содержат WSA-заголовков.
Если получатель обрабатывает сообщение содержащее заголовок wsa:Action, то привлекается SOAP-связывание и вступают в силу правила этйо спецификации.
Этот документ является результатом работы Рабочей группы "Адресации веб-сервисов" W3C.
Членами этой Рабоче группы являются (на момент написания и в алфавитном порядке): Abbie Barbir (Nortel Networks), Andreas Bjärlestam (ERICSSON), Dave Chappell (Sonic Software), Eran Chinthaka (WSO2), Francisco Curbera (IBM Corporation), Glen Daniels (Sonic Software), Vikas Deolaliker (Sonoa Systems, Inc.), Paul Downey (BT), Jacques Durand (Fujitsu Limited), Robert Freund (Hitachi, Ltd.), Marc Goodner (Microsoft Corporation), Arun Gupta (Sun Microsystems, Inc.), Hugo Haas (W3C/ERCIM), Marc Hadley (Sun Microsystems, Inc.), David Hull (TIBCO Software, Inc.), Yin-Leng Husband (HP), David Illsley (IBM Corporation), Anish Karmarkar (Oracle Corporation), Paul Knight (Nortel Networks), Philippe Le Hégaret (W3C/MIT), Amelia Lewis (TIBCO Software, Inc.), Bozhong Lin (IONA Technologies, Inc.), Mark Little (JBoss Inc.), Jonathan Marsh (Microsoft Corporation), Jeff Mischkinsky (Oracle Corporation), Nilo Mitra (ERICSSON), Eisaku Nishiyama (Hitachi, Ltd.), Ales Novy (Systinet Inc.), David Orchard (BEA Systems, Inc.), Gilbert Pilz (BEA Systems, Inc.), Alain Regnier (Ricoh Company, Ltd.), Tony Rogers (Computer Associates), Tom Rutt (Fujitsu Limited), Davanum Srinivas (WSO2), Jiri Tejkl (Systinet Inc.), Mike Vernal (Microsoft Corporation), Steve Vinoski (IONA Technologies, Inc.), Katy Warr (IBM Corporation), Pete Wenzel (Sun Microsystems, Inc.), Steve Winkler (SAP AG), Ümit Yalçinalp (SAP AG), Prasad Yendluri (webMethods, Inc.).
Предыдущими членами Рабочеу группы были: Lisa Bahler (SAIC - Telcordia Technologies), Rebecca Bergersen (IONA Technologies, Inc.), Ugo Corda (Sun Microsystems, Inc.), Michael Eder (Nokia), Yaron Goland (BEA Systems, Inc.), Marc Goodner (SAP AG), Martin Gudgin (Microsoft Corporation), Mark Nottingham (BEA Systems, Inc.), Mark Peel (Novell, Inc.), Harris Reynolds (webMethods, Inc.), Rich Salz (IBM Corporation), Davanum Srinivas (Computer Associates), Greg Truty (IBM Corporation).
Мы выражаем свою глубокую признательность всем людям, которые вносили свои предложения по этому адресу http://lists.w3.org/Archives/Public/public-ws-addressing/.