限制对部分ASP.Net Web应用程序的访问(仅允许来自同一域的计算机)

时间:2016-05-25 18:43:56

标签: c# asp.net iis

我们有一个托管在IIS中的Web应用程序,任何在我们的活动目录中拥有帐户的人都可以访问它(我们使用AD对用户进行身份验证)。

有一种aspx表单不能从公共互联网访问。如果用户计算机已连接到我们的域,则该用户应该能够访问该特定表单。否则,将提示用户未经授权的访问页面。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

因此,为了确保我理解正确,您有一个网站,通过Windows安全性验证访问任何内容的唯一方式(在您的情况下为活动目录)。您没有使用明确定义的用户& web.config中的角色也不是数据库。所以我认为你可以安全地说出你的身份证明,它适用于所有页面。

现在,您有一个特定的.aspx页面,您希望限制对公司办公室内人员的访问。这些人已经拥有AD帐户,并且在现场工作并通过VPN连接时从公司发行的笔记本电脑到达您的站点,因此AD仍然可以做到这一点。但是你希望这些上述人员能够在这个特定的页面上办公。

如果以上情况属实,那么从.aspx中的代码隐藏文件(如果使用webforms),您可以通过以下方式读取IP地址:

Console.WriteLine(Request.UserHostAddress);

如果您将MVC与aspx样式渲染引擎一起使用,则同样适用。

如果您阅读了地址并且它遵循其中一种模式,则它是一个内部地址:

10.x.x.x
172.16.x.x
192.168.x.x

您可以找出合适的子网。

现在,让我们说您的问题是您碰巧使用Active Directory存储所有应用程序用户,无论他们是否真正由您的公司雇用。在那种情况下,我会想象你的用户可以获得一些信誉,你可以通过System.DirectoryServices(或任何你想要的)将这些信息提供给AD,但是你有一个特定的页面应该只适用于实际的员工而不是更大的用户群恰好在AD中共存。在这种情况下,您可以为登录用户启动DirectorySearcher并检查它们是否属于Employees安全组(您有一个,对吗?),或者您仍然可以使用基于IP的过滤器,如前面的方案

内部IP限制没有权利。通过将这一页分成IIS中的一个单独的网站,在内部只能路由的特定服务器上,你会更好吗?