配置 ASP.NET 身份验证日志





4.00/5 (1投票)
如何配置 ASP.NET 身份验证日志
引言
一些时间以前,我写过一篇关于 ASP.NET 健康监视 的文章 – 这是 .NET 框架提供的一种日志记录基础设施,可以通过 web.config 轻松配置。 在那篇文章中,我展示了心跳和错误事件。 今天,我想向您展示如何收集 ASP.NET 身份验证审计日志。 为了这个目的,全局 web.config 中注册了特殊的事件组
<healthMonitoring>
...
<eventMappings>
...
<add name="All Audits"
type="System.Web.Management.WebAuditEvent,
System.Web,Version=4.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0" endEventCode="2147483647" />
<add name="Failure Audits"
type="System.Web.Management.WebFailureAuditEvent,
System.Web,Version=4.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0" endEventCode="2147483647" />
<add name="Success Audits"
type="System.Web.Management.WebSuccessAuditEvent,
System.Web,Version=4.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0" endEventCode="2147483647" />
</eventMappings>
</healthMonitoring>
然而,使用 所有审计 集合会导致您的应用程序为每个服务请求生成一个审计事件。 如果我们随后将这些事件存储在 SQL Server 数据库中,可能会给服务器带来沉重的负载。 在这篇文章中,我将向您展示如何将审计事件的数量减少到登录尝试,然后安全地将其存储在数据库中。
配置
首先,让我们创建必要的表
aspnet_regsql -A w -d Logowanie -S db-master.srv.trader.pl
-sqlexportonly c:\temp\forms-audit-schema.sql
然后,我们需要在我们的 web.config 中添加 healthMonitoring
部分 并 启用它。 我们还将为成功和错误身份验证事件创建事件映射
<healthMonitoring enabled="true">
...
<eventMappings>
<add name="AuthenticationSuccess"
type="System.Web.Management.WebAuthenticationSuccessAuditEvent,System.Web,
Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" />
<add name="AuthenticationFailure"
type="System.Web.Management.WebAuthenticationFailureAuditEvent,System.Web,
Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" />
</eventMappings>
...
</healthMonitoring>
下一步是为我们的日志数据库创建一个连接字符串(或使用现有的连接字符串),并为我们的日志事件添加一个提供程序
<healthMonitoring enabled="true">
<providers>
<add connectionStringName="DB_Logowanie" buffer="false"
name="MsSqlAuditWebEventProvider" type="System.Web.Management.SqlWebEventProvider,
System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
...
</healthMonitoring>
在上面的配置中,我故意禁用了缓冲,以确保所有事件都将存储在数据库中。 对于真正的高负载,您可以 启用缓冲 并将 bufferMode
设置为 关键通知。
最后,我们需要将事件与我们的提供程序绑定
<healthMonitoring enabled="true">
...
<rules>
<add name="MsSql Auth Success Critical" eventName="AuthenticationSuccess"
provider="MsSqlAuditWebEventProvider" profile="Critical" />
<add name="MsSql Auth Failure Critical" eventName="AuthenticationFailure"
provider="MsSqlAuditWebEventProvider" profile="Critical" />
</rules>
...
</healthMonitoring>
检查身份验证日志内容
在将上述设置应用于您的应用程序后,审计事件应该开始出现在 aspnet_WebEvent_Events
表中。 看看它们揭示了哪些信息
示例成功身份验证事件
Event code: 4002
Event message: Membership credential verification succeeded.
Event time: 11/20/2013 2:13:55 PM
Event time (UTC): 11/20/2013 1:13:55 PM
Event ID: c7096dc16a26445cba2b6f67919c0a1a
Event sequence: 2300
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1693641394/ROOT/logowanie-4-130294218493519428
Trust level: Full
Application Virtual Path: /logowanie
Application Path: \\ASP.Net\TestApp\logowanie\
Machine name: WEB-02
Process information:
Process ID: 6920
Process name: w3wp.exe
Account name:TEST\iis_zrodla
Request information:
Request URL: https:///logowanie/logon
Request path: /logowanie/logon
User host address: 172.20.11.150
User:
Is authenticated: False
Authentication Type:
Thread account name: TEST\iis_zrodla
Name to authenticate: peter.null@test.pl
示例身份验证失败事件
Event code: 4006
Event message: Membership credential verification failed.
Event time: 11/20/2013 2:20:23 PM
Event time (UTC): 11/20/2013 1:20:23 PM
Event ID: 8e1a137591ad43feb596f00a23bf5ec7
Event sequence: 4706
Event occurrence: 12
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1693641394/ROOT/logowanie-3-130294169828149952
Trust level: Full
Application Virtual Path: /logowanie
Application Path: \\ASP.Net\TestApp\logowanie\
Machine name: WEB-17
Process information:
Process ID: 3584
Process name: w3wp.exe
Account name: TEST\iis_zrodla
Request information:
Request URL: https:///logowanie/logon
Request path: /logowanie/logon
User host address: 172.20.11.150
User:
Is authenticated: False
Authentication Type:
Thread account name: TEST\iis_zrodla
Name to authenticate: peter.notnull@test.pl
历史
- 2013 年 11 月 21 日:初始版本