【问题标题】: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 地址列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        相关资源
        最近更新 更多