2011-09-30 34 views
0

第一次海报非ASMX SOAP 1.1 Web服务,所以请把它有点容易对我,如果我违反任何发帖规则 - 我看过他们,我想我是正确的。消费在C#与头安全

我一直在寻找了一段时间,然后再发布,似乎无法找到什么我试图这样做,我想我会在这里发布的指导。

我需要写一个C#.NET 3.5程序消耗用Java开发的Web服务。我从事使用Web引用的.NET实践中使用ASMX Web服务的经验,写我的经验写Dynamics CRM插件和软件,但这让我难住。我的第一个尝试是使用Web引用(是的,我知道 - 不是WCF),但是Web服务需要在SOAP头中包含PasswordDigest(带有随机数和创建的SHA-1),一个用户名令牌和时间戳记令牌,我找不到使用Web引用将这些添加到SOAP标头的方法。我的第二次尝试是使用服务引用(我相信,但我可能是错误的哈哈,这个是WCF),但我没有太多的练习,我在网上找到的任何教程并不多帮帮我。

,当我尝试使用WS每一次,我从服务器拒绝对暂时无法验证。

我的问题是我怎么消耗与C#.NET 3.5这些要求的Web服务?

谢谢。

+0

要创建代理,请打开“添加服务引用”对话框,并在其中放置服务URL,最后添加“?wsdl”。 –

+0

使用“添加Web引用”对话框或wsdl.exe创建代理后,您可以重写GetWebRequest和GetWebResponse方法,以使用发送到服务器的标题进行播放。 –

回答

2

IIRC,微软WSE(2.0或3.0)有一些东西叫做UsernameToken,你需要在外发SOAP消息的某个地方插入东西,然后你就完成了设置。当然,这个答案令人不满意了很多,所以我会在你扔几个链接,并希望您熟读:

http://www.codeproject.com/KB/webservices/WS-Security.aspx

http://www.reliablesoftware.com/articles/WSESecurity.html

http://www.devx.com/security/Article/15634

(和这一切再次显示了SOAP和WSDL实际上存在的缺陷)。

+1

所以我最终放弃了我的.NET版本回到2.0,安装WSE 3.0,并按照第三个链接中的说明来使这个工作。非常感谢你! 作为一种好奇心的衡量标准,是由微软或SOAP/WSDL协议引起的整个问题,为什么?看起来奇怪的是,我无法用普通的.NET库处理这个问题,而是不得不恢复到过时的库... – jacobappleton

+0

AFAIK,WSDL并没有包含关于如何确保Web服务安全的足够信息。从来没有我的经验,我有一个或多或少的现实世界的Web服务(阅读:创造。由一些dork谁认为如果WS- *标准存在,他们都必须以很奇怪的方式使用),这将只是在添加时工作对 –

+0

的引用哈哈是啊,似乎有太多那些只是因为可以使用这些东西的dorks。再次感谢你的帮助! – jacobappleton