WCF Web服务是否适用于非Microsoft的SOAP客户端?

时间:2012-02-23 03:25:33

标签: wcf security soap wcf-security wcf-client

我需要创建一个Web服务来从客户的应用程序中收集数据。

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

我已经有一个可以公开的WCF服务,但因为它仅为内部目的而构建,所以我从来没有必要保护它。

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

以下是我现在的选择。

1)为每个WCF功能添加用户名/密码参数,并在每次呼叫时执行凭证检查。 (我确实有SSL证书......是否足以将此选项视为安全?)

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

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

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

5)别的......

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

2 个答案:

答案 0 :(得分:2)

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

我们使用 basicHttpBinding 创建了WCF Web服务,并将IIS设置为使用基本http身份验证

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

目前,PHP,Java和.NET客户端正在使用它。是的,.NET客户端仍然可以将其作为服务引用导入,这样可以更容易地捕获FaultExceptions。

没有一个解决方案对每个人来说都是完美的,但却能满足我们的需求。

答案 1 :(得分:1)

是的,但某些配置有利于某些供应商。请参阅CodePlex上的WCF Express Interop Bindings项目:

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

他们提供互操作设置:

  • Oracle WebLogic
  • Oracle Metro
  • IBM WebSphere
  • Apache Axis2

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