我正在构建一个在 IIS 7.5 上以集成模式运行的 .NET 4.0、ASP.NET MVC 3 Intranet 应用程序。Windows 身份验证用于管理对网站的访问。Windows 身份验证模块已启用,所有其他身份验证模块均已禁用。
目前,当用户提供不正确的凭据时,Windows 身份验证模块会正确拒绝凭据并重新显示登录提示。它这样做了 3 次,之后显示一个标准的 .NET 401 Unauthorized Access 页面。这是预期的和可取的。
我的目标:我希望能够将失败的身份验证尝试的详细信息记录到我自己的自定义事件日志中。特别是,捕获在登录尝试中使用的用户名。(出于安全原因,我承认不可能捕获密码。)
我的目标可能吗?
我已经构建了一个有效的 IHttpModule 模块并将其作为事件处理程序添加到WindowsAuthenticationModule,如下所示:
myWindowsAuthenticationModule.Authenticate += WindowsAuthentication_Authenticate;
但是如果登录尝试失败,我的代码不会被调用,大概是因为 WindowsAuthenticationModule 已经确定登录失败,所以调用我的模块没有意义。我的模块在尝试成功登录后会被调用,因此我确信我的事件处理程序设置正确。
据我所知,WindowsAuthenticationModule 不会公开身份验证失败时触发的事件,因此该选项已失效。
有任何想法吗?还是我在吠叫一棵没有解决方案的树?