2012-02-23 96 views
2

我需要创建一个Web服务来收集客户应用程序中的数据。WCF Web服务适用于非微软SOAP客户端吗?

这些应用程序使用不同的技术进行编程,它们都有一个共同点:它们可以使用普通的SOAP Web服务。

我已经有一个WCF服务可以被暴露,但因为它只是为了内部目的而构建的,所以我从来不必去保护它。

我读了很多关于如何保护WCF服务以及如何从Microsoft客户端应用程序中使用它的文章。但是,我非常关心客户的非微软应用程序实现标准WCF服务安全性的能力。我必须记住,其中一些可能是无状态的,无法保持会话或安全的WCF服务可能需要的任何内容。

所以这里是我现在的选择。

1)将用户名/密码参数添加到每个WCF功能并对每个呼叫执行凭证检查。 (我有一个SSL证书......是否足以认为这个选项是安全的?)

2)删除我的WCF服务并创建一个带有用户名/密码参数的普通SOAP Web服务,如选项#1中所述更接近我的客户的应用程序功能。

3)实现标准的WCF安全性,让客户找到自己处理的方法。 (这里真正的问题是:WCF的安全性是否足够简单,足以由任何SOAP客户端实现?)

4)更改我的名字,并在发现我是Web服务安全noob之前,用我的客户的钱转移到牙买加。

5)别的东西...

那么我最好的选择是什么?

回答

2

是的,我可以提供我们使用的选项。这听起来像你想basicHttpBinding

我们使用basicHttpBinding的和一个WCF Web服务设置IIS以使用基本HTTP认证

因此,非.NET客户端可以轻松使用它(basicHttpBinding),我们可以为它们提供一个Active Directory域帐户,允许它们通过IIS进行访问。没有用户名/密码可以不断地通过网络服务来回发送,并且通过HTTPS运行以确保安全。

它目前正在被PHP,Java和.NET客户端使用。是的,.NET客户端仍然可以将其作为服务引用导入,从而使事件更容易陷入FaultException。

没有解决方案对每个人都是完美的,但对我们的需求非常好。

1

是的,但某些配置有利于某些供应商。见CodePlex上,基于WCF快递互操作绑定项目:

http://wcf.codeplex.com/wikipage?title=WCF%20Express%20Interop%20Bindings

他们提供与互操作的设置:

  • 的Oracle WebLogic
  • 甲骨文地铁
  • IBM的WebSphere
  • 的Apache Axis2的

Oracle Metro(以前称为SUN WSIT)堆栈在WS - */Oasis标准方面是迄今为止最先进的。