【问题标题】:How can I programatically limit access to a Webservice?如何以编程方式限制对 Web 服务的访问?
【发布时间】:2019-07-12 15:49:51
【问题描述】:
我正在使用带有 .Net 2.0 的 C# 编写传统的 ASMX Web 服务,以便在 IIS 上进行部署。
Web 服务将部署在共享托管环境中,每个客户端都有自己的应用程序副本,位于单独的虚拟目录中(我知道,我知道 - 这是一个遗留应用程序)。每个虚拟目录中都会有一个单独的 Web 服务副本。
由于 Web 服务可能会做一些强大的事情,我想选择性地限制对某些 IP 地址的访问。在防火墙中执行此操作不是一个很好的选择,因为它只是应该限制的 web 服务,而不是网站的其余部分 - 它位于每个虚拟目录级别。
我能否以编程方式读取请求者的 IP 地址并将其与列表进行比较,以便拒绝来自其他地址的呼叫?这样做有什么重大缺陷吗?
谢谢
【问题讨论】:
标签:
c#
web-services
security
iis
【解决方案1】:
是的,您可以轻松做到。
[WebMethod]
public bool IsAlive()
{
string callingAddress = HttpContext.Current.Request.UserHostAddress;
return (callingAddress == allowedAddress);
}
唯一的缺陷是维护 IP 地址列表。
还值得注意的是,您可以在 IIS 中为每个 Web 应用程序配置 IP 地址访问控制。我在不同的时间使用了这两种方法,这实际上归结为您希望如何维护授权 IP 地址列表。
【解决方案2】:
唯一的缺陷是维护 IP 地址列表。
还值得注意的是,您可以在 IIS 中为每个 Web 应用程序配置 IP 地址访问控制。我在不同的时间使用了这两种方法,这实际上归结为您希望如何维护授权 IP 地址列表。