如何以编程方式限制对Web服务的访问?

时间:2009-03-23 07:53:31

标签: c# web-services security iis

我正在编写一个传统的ASMX Web服务,使用C#和.Net 2.0在IIS上进行部署。 Web服务将部署在共享托管环境中,其中每个客户端都有自己的应用程序副本,位于单独的虚拟目录中(我知道,我知道 - 这是一个遗留应用程序)。每个虚拟目录中都会有一个Webservice的单独副本。

由于Web服务可能会做一些有力的事情,我希望可选择限制对某些IP地址的访问。在防火墙中执行此操作并不是一个非常好的选择,因为它只是应该受到限制的Web服务而不是网站的其他部分 - 并且它位于每个虚拟目录级别。

我可以通过编程方式读取请求者的IP地址并将其与列表进行比较,以便我可以拒绝来自其他地址的呼叫吗?这有什么重大缺陷吗?

由于

2 个答案:

答案 0 :(得分:4)

是的,你可以轻松地做到。

[WebMethod]
public bool IsAlive()
{
     string callingAddress = HttpContext.Current.Request.UserHostAddress;
     return (callingAddress == allowedAddress);
}

唯一的缺陷是维护IP地址列表。

还值得注意的是,您可以在IIS中基于每个Web应用程序配置IP地址访问控制。我在不同的时间使用了这两种方法,它实际上只取决于您希望如何维护授权IP地址列表。

答案 1 :(得分:0)

唯一的陷阱是维护IP地址列表。

还值得注意的是,您可以在IIS中针对每个Web应用程序配置IP地址访问控制。我在不同时间都使用了这两种方法,实际上只是取决于您要如何维护授权IP地址列表。