如何在c#2.0中保护Web服务,并使任何平台都能轻松使用

时间:2011-07-19 13:08:38

标签: c# web-services security authentication soapheader

如何保护Web服务并使任何平台都能轻松使用。

设置:Asp.NET 2.0,Dot Net 2.0,c#2.0,Visual Studio 2005.Web服务器是IIS并使用https(SSL)

  1. 我想避免安装像WSE 3.0这样的东西。我更喜欢一种纯粹的c#方法,我可以将它带到未来版本的Visual Studio和IIS。
  2. 每个人都应该能够访问Web服务URL和描述,并且无需身份验证即可查看WSDL。
  3. 保护将有助于阻止人们向我们的网络服务方法发送垃圾。
  4. 易于实施:我不想为客户管理证书或安装任何东西。
  5. 客户端只发送用户名和密码。
  6. 这是否意味着SOAP头认证是唯一的方法呢?我发现这些链接但不知道它们是否适用于非.NET客户端?
    http://aspalliance.com/805http://www.codeproject.com/KB/webservices/SOAPHeaderAuthentication.aspx

    我也看到this article但不知道是否以及如何实现它(不是一个很好的例子)。

    请告知或给我一个很好的链接(请不要播放视频)。 谢谢!

3 个答案:

答案 0 :(得分:2)

您最好的选择是升级到WCF,因为内置选项要好得多。如果您陷入2.0 / SOAP领域,那么自定义SOAP标头将在大多数平台上运行 - 我之前已经成功地使用过.NET,COM +和PHP。您可以使用典型的ASP.NET授权位(包括sql数据库)来支持用户/传递。也就是说,如果安全点是减少垃圾邮件并且你没有那么多的服务方法来“安全”那么你可能只想在你的方法中添加一个“UserKey”参数然后验证(或者至少限制速度。

答案 1 :(得分:1)

  1. 您应该将解决方案升级到WCF。如果可以,您可以轻松为您的客户选择Credential Type。另请参阅Securing WCF Service article
  2. SOAP头将适用于非.NET客户端,如果他们可以为请求构建所需的xml。
  3. 使用this article作为SOAP Header的简单示例。

答案 2 :(得分:0)

IIS中的基本身份验证不够用吗?服务使用者很容易通过请求传递基本身份验证参数。