本地和外部访问的不同身份验证,并避免浏览器用户名/密码提示

时间:2015-07-03 04:17:18

标签: asp.net security iis

我正在尝试创建一个身份验证系统,该系统在本地网络内外的组织网络基础设施的限制范围内工作。

在本地网络内部,我希望人们能够访问此ASP.NET Web窗体应用程序,而无需使用Windows登录名登录。

外部我希望人们必须通过自定义登录表单登录。

原因是由于本地基础架构,Windows身份验证在本地网络之外无效。

因此,我通过仅针对该文件夹禁用匿名身份验证来创建受密码保护的文件夹,然后在每个页面请求中检查用户是否被标记为已登录(有关我如何执行此操作的详细信息并不重要)以及是否我没有重定向到对位于受密码保护的文件夹内的Web服务发出AJAX请求的页面,以查看它们是否已登录到本地网络。如果他们不是,那么它会重定向到自定义登录表单页面。

现在这一切听起来都是个好主意,但在实践中它做了一些不受欢迎的事情......当外部用户试图访问并发出AJAX请求时,我得到一个浏览器用户名和密码提示,必须是取消继续。

我很欣赏这种类型的身份验证是HTTP的一部分,即使使用AJAX也可能无法绕过,但是任何想法如何在没有用户名/密码提示的情况下工作,或者检查是否有其他方式本地网络还是外部访问?

我知道我可以检查IP地址,但我知道这可能是伪造的(虽然这只会给尝试这样做的用户造成问题)。

我也知道我可以为内部或外部提供不同的入口点,但我想避免这种情况。

1 个答案:

答案 0 :(得分:0)

我无法找到我想要做的解决方案,因此我选择通过检查其IP地址来检查用户是否在本地网络上。

虽然这是通过HTTP标头发送的,但可以伪造,但只会通过Windows身份验证提示用户输入用户名和密码。