我知道有很多关于将经典ASP客户端连接到SOAP Web服务的讨论,但我很有兴趣连接到支持HTTPS的SOAP服务。
我们有一个用WCF编写的现有SOAP Web服务,它适用于.NET客户端。我们收到了一位新客户的请求,“我们使用经典ASP - 我们如何连接到您的Web服务API?”我没有线索从哪里开始,我开始意识到我不知道实际SOAP消息的结构是什么。
我已经看到了经典ASP与Web上的SOAP Web服务聊天的例子,但没有一个通过HTTPS交换消息。我们在WCF绑定上使用消息级安全性。
这是一个失败的原因 - WS-Security是否阻止传统ASP与HTTPS SOAP服务接口?
提前致谢。
答案 0 :(得分:3)
选项1:告诉您的客户今年是哪一年,并建议使用过时技术会产生相关成本,而且其中一项成本是您不支持“经典ASP”。
选项2:编写一些C#代码以生成服务的COM包装器。经典ASP代码(或VB6或VBA或其他)可以调用COM对象,而不知道他们使用现代工具开发的现代代码。
答案 1 :(得分:1)
经过一番调查后,我想出了以下内容:
WCF邮件安全性不能与经典ASP
我在服务上创建了第二个端点,它具有以下绑定:
<basicHttpBinding>
<binding name="SecureBasic" >
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>"
很少注意到这一点 -
您需要使用HTTPS(即安装自我证书)
这不是通过互联网使用的优先安全方法 - 理想情况下,您应该使用Message安全性。
我使用客户用户名和密码验证程序来验证客户请求
以下ASP代码可以很好地调用此服务:
soapServer = "YourSOAPAddress"
soapMessage = "Put Your SOAP Message in here use Charlies / Fiddler to determine the message"
Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.3.0")
xmlhttp.setOption(2) = 13056
xmlhttp.open "POST", soapServer, False
xmlhttp.setRequestHeader "SOAPAction", "urn:Alpha.Services.API.DeviceService/IDeviceService/GetDevices"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.send(soapMessage)
Response.Write "<br>Finished calling Web Service."
Response.Write "<br>Status = " & xmlhttp.statusText
Response.Write "<br>ResponseText = " & xmlhttp.responseText
对于使用不支持WS-Security的语言(例如ASP)的客户端系统,这是一种可能的解决方案。
答案 2 :(得分:-1)
使用WS-Security Enabled Web Services时,经典ASP应该没有问题。这比你想象的要困难一些。至于等式的HTTPS部分?这对您的服务应该是透明的。通过HTTPS连接到某些东西与HTTP一样。
如果所有其他方法都失败了,您可以手动制作SOAP信封并手动放入所有安全细节。
幸运的是,没有必要这样做。 Microsoft发布了Microsoft SOAP Toolkit以便更轻松地使用Web服务。您应该能够使用它轻松处理您的情况。