我正在开发一个项目,我需要从.NET平台到非.NET Web服务进行调用。我正在使用一些方法进行Web服务调用,我可以生成SOAP请求来访问Web服务。我使用code-projet网站中提供的代码进行了此通信。http://www.codeproject.com/Articles/376168/Csharp-Dynamic-Web-Service-Invoker。我能够正确沟通,但我想让这种沟通更加安全。使Web服务动态的唯一原因是它可能位于不同的位置。
我的方法是在新创建的头中添加安全令牌(某些字符串),并在传出的SOAP请求中添加该头。在接收端(非.net平台),我将从头中提取该值并验证某些算法,如果情况正常,那么只有它才能启动剩余的进程。
在研究了几个站点之后,我发现所有答案都是为了添加自定义SOAP标头指向我们使用WCF或静态Web服务的方向。但事实并非如此。我刚刚编写了简单的插件(Class)来进行这种通信。我从远程位置读取WSDL文件后生成程序集引用后调用Web服务。
我研究了大约20-30个不同的论坛来回答这个问题,但没有人有答案。有人可以为此提供帮助吗?
答案 0 :(得分:2)
让Web服务动态的唯一理由是因为它可能位于不同的位置。
您可以在运行时设置WCF客户端的端点。当服务实现相同的合同时,这将适用于本机.NET,而不是来自Web的一些(非编译或至少不完整)代码,这很好,因为你不太可能找到对后者的支持。 / p>
让我们来看看你的实际问题:
我想让这种沟通更加安全
然后从服务端开始。写入的服务是什么框架,它是否以任何方式支持安全性?这实际上取决于你想如何验证调用者,但“添加安全令牌(某些字符串)[...]并验证某些算法”听起来有点像重新发明轮子。< / p>
WCF几乎可以处理任何类型的SOAP和HTTP安全性,因此请配置您的服务,使用常规的可配置WCF客户端,并在运行时将端点设置为正确的地址。