我有一个客户向我们提出了一个不寻常的要求,他们想限制用户通过 IP 地址访问,以便用户 1 只能从 IP 地址 A、B、C 访问系统,而用户 2 可以从地址 AD 和 F 访问。
我不知道是否可以通过 IP 地址和用户名的组合来限制身份验证
答案1
没有内置机制来实现这一点。至少不是以您要求的方式直接实现的。
然而,你也可以非常接近。
首先,您如何定义“用户”?他们是 Active Directory 用户,并且 Web 服务器是同一域名的成员吗?如果是这样,那么您可以在网站中禁用匿名身份验证并切换到集成 Windows 身份验证。然后,您可以通过在 NTFS 中设置客户安全权限来实现访问控制 - 您创建一个将用于控制对网站的访问的 AD 组,授予其对 Web 根文件夹的读取/执行权限,然后将所有 AD 用户添加到该组。当他们连接到网站时,他们将自动通过 AD 的身份验证并被允许查看网站。
然后,您使用 IIS 中的内置域和 IP 限制 - 将 IP 限制的默认规则设置为全部拒绝,然后添加每个授权 IP 地址。
您无法实现的部分是,任何用户都可以从列表中的任何 IP 进行连接,您无法进一步限制它。如果您想做得更好,您需要自己编写行为代码,直接将其写入 asp.net 应用程序的代码隐藏(Web 表单)、模型(MVC)或 global.asax(如 Greg 所述)。