安全的网络服务

时间:2009-12-02 13:33:46

标签: c# .net vb.net web-services security

我将创建一个将通过网络传递机密信息的Web服务。

保护网络服务的最佳方法是什么? 我怎么知道请求信息的应用程序是否是它所说的那个,并且不是另一个应用程序正在使用另一个用户名和密码?

4 个答案:

答案 0 :(得分:3)

将WCF用于您的网络服务!它具有大量的安全功能:

你可以

  • 通过证书保护您的客户 - 只有拥有相应证书的人才可以处理他们的电话

  • 通过在您的内部Active Directory域中查找来保护您的客户 - 只有那些拥有AD帐户的人才能处理他们的请求

  • 使用自定义用户名/密码保护您的客户,您可以根据自己的需要查看这些用户名/密码(这是最灵活,但也是最复杂的选项,如果出错则提供最大的失败可能性)

另外,使用WCF,您还有许多选项可以保护客户端和服务之间的传输,或加密和签名来回传递的消息。

WCF Developer Center视为WCF所有事情的一个很好的起点。

如果您认真安全地编写WCF服务,请抓住Juval Lowy的Programming WCF Services书的副本 - 这是WCF的圣经。

alt text

答案 1 :(得分:1)

我过去曾经做过一两次这样的事情:

  • 使用SSL
  • 编写Web服务以要求从Web服务上的方法检索的令牌。
  • 从需要登录名和密码的方法返回令牌。
  • 在一定数量的网络服务请求或随机间隔后,更改所需的令牌,从而强制重新进行身份验证。

  • 如果您愿意,可以使用双方都理解的加密方法加密ssl流中的数据。 (如果你是偏执狂。)

答案 2 :(得分:1)

您没有编写您打算使用的实现技术,因此我首先建议您使用 Windows Communication Foundation (WCF)而不是asmx Web服务。

使用WCF,您可以在许多不同的绑定之间进行选择,其中许多绑定都提供数据保护。总体而言,Web服务有两种不同类型的数据保护:

  • 传输保护,其中传输机制本身以加密形式提供保护。最着名的版本是HTTPS / SSL。但请注意,除非您使用客户端证书,否则该服务无法保证客户端符合其所说的目的。
  • 邮件保护,邮件本身已加密并签名。此类消息可以通过其他未受保护的网络传输,但仍然受到保护。

WsHttpBinding 根据开放标准提供邮件保护。这就是我要开始的地方。

答案 3 :(得分:0)

看看WIF(又名日内瓦框架)。其目的是解决您描述的确切问题。 http://msdn.microsoft.com/en-us/security/aa570351.aspx