限制对IIS7/ASP.NET上运行的特定URL的访问

限制对IIS7/ASP.NET上运行的特定URL的访问,asp.net,security,authentication,iis-7,Asp.net,Security,Authentication,Iis 7,我正在IIS7 web场上部署一个公共ASP.NET网站 该应用程序在3台web服务器上运行,位于防火墙后面 我们想在网站上创建一个只有内部用户才能访问的页面。它主要用于诊断、触发器缓存过期等 /admin/somepage.aspx 控制访问此页面的最佳方式是什么?我们需要: 阻止所有外部(公共)用户访问URL 允许特定的内部用户仅从特定IP或网络访问该页面 是否应该在(a)网络级别、(b)应用程序级别等进行访问控制?以下是如何保护特定用户的特定页面,并且只保护他们 <configura

我正在IIS7 web场上部署一个公共ASP.NET网站

该应用程序在3台web服务器上运行,位于防火墙后面

我们想在网站上创建一个只有内部用户才能访问的页面。它主要用于诊断、触发器缓存过期等

/admin/somepage.aspx

控制访问此页面的最佳方式是什么?我们需要:

  • 阻止所有外部(公共)用户访问URL
  • 允许特定的内部用户仅从特定IP或网络访问该页面

  • 是否应该在(a)网络级别、(b)应用程序级别等进行访问控制?

    以下是如何保护特定用户的特定页面,并且只保护他们

    <configuration>
        <location path="admin/somepage.aspx">
            <system.web>
                <authorization>
                    <allow users="User1,User2" />
                    <deny users="*" />
                </authorization>
            </system.web>
        </location>
    </configuration>
    
    
    
    要设置允许的IP,您需要在IIS中通过
    IPv4地址和域限制
    配置网站,其中添加通配符
    拒绝条目
    并指定
    允许条目


    您还可以通过编程方式设置所有这些内容。

    一个简单的实现是将IIS中该文件的文件安全设置为仅集成Windows身份验证

    然后在该文件的代码隐藏中,检查用户的ID。如果他们经过身份验证,他们将拥有一个ID,并允许他们访问该页面

    if(!HttpContext.Current.User.Identity.IsAuthenticated)
    {
       //Direct user to other page or  display message.
    }
    

    当用户进入该页面时,它会要求他们进行网络登录

    我发现最好的解决方案是在我们的F5负载平衡器上安装一个irule

    我们创建了一个规则,负载平衡器将删除特定目录的所有外部请求。在内部,我们仍然可以通过直接连接到服务器场中的服务器来访问页面