没有 WS-Security 的 Amazon SimpleDB WSDL for SOAP 是否正确?
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< /a> 对 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 将继续仅涵盖 应用程序级元素,因为它是 更干净的方法,更好地适应 长期的“带有 WS-Security 的 SOAP” 信封/身体模型。”
示例请求正确吗?例如,在 Delphi 中导入 WSDL 不会生成授权元素的代码。
The SimpleDB documentation includes this example request for a ListDomains method.
Note that there are Signature, Timestamp, AWSAccessKeyId and Version subelements:
<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>
The WSDL uses this definition for 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>
The Signature, Timestamp, AWSAccessKeyId and Version information is not in the ListDomains definition.
AWS customer support already has investigated this and says this is as designed:
Is the example request correct? Importing the WSDL for example in Delphi does not generate code for the authorization elements.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
嗯,看起来授权元素确实不是 WSDL 的一部分,这有点奇怪......
更有趣的是 - Amazon 文档讨论了在 SOAP 标头中提供该信息 - 然而,他们的示例明确地将其放在
元素...如果您在 Delphi 代码或 WSDL 本身中手动添加这些附加元素,会发生什么情况? 您能否调整它以使 SimpleDB 服务满意?
马克
Well, it would appear that the authorization elements are indeed not part of the WSDL which is a bit odd....
Even funnier - the Amazon docs talks about providing that information in the SOAP header - yet, their sample clearly puts it in the
<SOAP-ENV:Body>
element....What happens if you manually add those additional elements either in Delphi code, or in the WSDL itself? Can you tweak it to be so that the SimpleDB service is happy with it?
Marc