Корректен ли Amazon SimpleDB WSDL для SOAP без WS-Security?
-
20-08-2019 - |
Вопрос
В Документация SimpleDB включает в себя этот пример запроса для метода ListDomains.Обратите внимание, что существуют подэлементы Signature, Timestamp, AWSAccessKeyId и Version:
<SOAP-ENV:Body>
<ListDomainsRequest xmlns=" http://sdb.amazonaws.com/doc/2007-11-07">
<Signature>SZf1CHmQnrZbsrC13hCZS061ywsEXAMPLE<</Signature>
<Timestamp>2009-02-16T17:39:51.000Z</Timestamp>
<AWSAccessKeyId>1D9FVRAYCP1VJS767E02EXAMPLE</AWSAccessKeyId>
<Version>2007-11-07</Version>
<Action>ListDomains</Action>
</ListDomainsRequest>
</SOAP-ENV:Body>
В WSDL использует это определение для ListDomains:
<xs:element name="ListDomains">
<xs:complexType>
<xs:sequence>
<xs:element name="MaxNumberOfDomains" type="xs:int" minOccurs="0"/>
<xs:element name="NextToken" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
<wsdl:operation name="ListDomains">
<soap:operation soapAction="ListDomains"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
Подпись, Временная метка, AWSAccessKeyId и информация о версии отсутствуют в определении ListDomains.
Служба поддержки клиентов AWS уже изучила это и говорит, что все так и задумано:
Правильный ли пример запроса?Импорт WSDL, например, в Delphi, не генерирует код для элементов авторизации.
Решение
Что ж, похоже, что элементы авторизации действительно не являются частью WSDL, что немного странно....
Еще смешнее - в документах Amazon говорится о предоставлении этой информации в заголовке SOAP - тем не менее, их образец четко помещает ее в <SOAP-ENV:Body>
элемент....
Что произойдет, если вы вручную добавите эти дополнительные элементы либо в код Delphi, либо в сам WSDL?Можете ли вы настроить его таким образом, чтобы сервис SimpleDB был доволен им?
Марк