我有一个ASP MVC 4应用程序,它使用第三方HTTP模块来提高安全性。使用Windows身份验证时,它会尝试自动登录,如果失败,则会将您重定向到自定义登录页面。
以前的ASP Webforms和MVC 2-4应用程序一直运行良好,但是对于这个特定的应用程序,它无法自动登录用户。
应用程序的虚拟目录禁用所有身份验证模式(匿名等),但启用了Windows身份验证。我还检查了提供商 Negotiate 和 NTLM 。
web.config是一个非常标准的从MVC模板获得的,我尝试了对system.web
和system.webServer
的各种web.config更改(以及更改应用程序池的管道模式)如:
<system.web>
<authentication mode="Windows"/>
并添加
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
但在每种情况下,安全模块都无法获取用户名。该模块尝试通过HttpContext.Current.Request.ServerVariables["REMOTE_USER"]
获取用户名,但我也修改了它以使用HttpContext.Current.User.Identity.Name
,在这两种情况下它都是空白的。
由于此模块已经运行多年并仍可用于同一服务器上的其他应用程序,因此我认为它是IIS或Web.config配置问题。我尝试过创建一个新的虚拟目录,它也有同样的错误。
是否需要任何其他配置或其他原因不适用于此特定应用程序?
答案 0 :(得分:0)
解决方案是将以下内容添加到我的web.config
中的appSetting
部分
<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
</appSettings>
这是我第一次需要添加这样的东西,所以我不确定为什么有必要,但确实有效。