有关为第三方集成商提供wcf服务的问题
问题描述:
有些公司有兴趣将我们的软件与其软件集成。我们正在开始着手提供一个Web服务,让他们通过互联网消费。我们将使用WCF构建Web服务。我们不能保证每个集成商都会使用WCF或.NET,因此互操作性非常重要。有关为第三方集成商提供wcf服务的问题
我们希望在使用用户名和密码呼叫我们的服务操作时验证每个第三方集成商。另外,我读过使用证书可以实现客户端身份验证,但看起来很复杂。
我们计划在IIS中托管服务。
WCF中可用的选项是压倒性的。基于上述情况,将推荐什么配置(绑定/安全)?
是否有可能将IIS用于主机,basicHttpBinding,成员资格提供程序进行身份验证以及SSL进行加密?这些东西会在音乐会上奏效吗?
答
绝对要跟BasicHttpBinding
和HTTPS一起去。 BasiHttpBinding
提供最简单的SOAP互操作服务,而HTTPS将确保客户端与您的服务之间的传输安全。
要验证用户,您可以使用TransportWithMessageCredential
安全模式BasicHttpBinding
。此安全性配置需要消息中的标准化SOAP头(用户名令牌配置文件)。标题(在WCF的情况下)包含纯文本中的用户名和密码。在这种情况下纯文本不是问题,因为整个传输通过SSL(HTTPS)进行保护。即使你的客户端不是WCF,也没有任何特殊的SOAP栈,添加这个头文件应该很容易。同样直接使用此验证类型,您可以使用成员资格提供程序验证用户名或编写自定义密码验证程序。
谢谢。我在使用WCF客户端代理时得到了这个工作。但是,为了测试“互操作性”,我创建了一个asmx Web引用代理,它在调用服务方法时出现此错误:System.Web.Services.Protocols.SoapHeaderException未处理 Message =验证消息的安全性时发生错误。 – 2011-06-15 21:09:59
你是否配置了一个Soap标头? – 2011-06-15 21:12:00
不,我以这种方式设置凭据:proxy.Credentials = new NetworkCredential(username,password); – 2011-06-16 12:17:23