我需要创建一个Web服务来从客户的应用程序中收集数据。
这些应用程序使用不同的技术编程,它们都有一个共同点:它们可以使用普通的SOAP Web服务。
我已经有一个可以公开的WCF服务,但因为它仅为内部目的而构建,所以我从来没有必要保护它。
我确实阅读了很多关于如何保护WCF服务以及如何从Microsoft客户端应用程序使用它的文章。但是,我真的很担心客户的非Microsoft应用程序实现标准WCF服务安全性的能力。我必须记住,其中一些可能是无状态的,无法保持会话或安全WCF服务可能需要的任何内容。
以下是我现在的选择。
1)为每个WCF功能添加用户名/密码参数,并在每次呼叫时执行凭证检查。 (我确实有SSL证书......是否足以将此选项视为安全?)
2)删除我的WCF服务并使用选项#1中提到的用户名/密码参数创建一个普通的SOAP Web服务,以更接近我客户的应用程序功能。
3)实施标准WCF安全性,让客户找到自己处理它的方法。 (这里真正的问题是:WCF安全性是否足够简单,可以由任何SOAP客户端实现?)
4)更改我的名字,并在发现我是Web服务安全菜鸟之前,用我的客户的资金转移到牙买加。
5)别的......
那么我最好的选择是什么?
答案 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
他们提供互操作设置:
就WS-* / Oasis标准而言,Oracle Metro(以前称为SUN WSIT)堆栈是迄今为止最先进的。