就像你在这一章已经看到的那样,有很多选项来设置WCF服务和客户端应用的安全。假设这些设置都是可行的,那么对认证和授权的问题进行诊断也是非常重要的能力。额外的,创建审计追踪来记录对安全架构调用的能力对很多行业,比如银行业和健康护理行业以及那些想要保持与萨班斯-奥克斯利法案和其他监管规定一致的公司是非常重要的。
幸运的是,WCF支持一个对涉及服务安全相关活动的日志创建和审计跟踪的易于配置的结构。
安全审计可以像列表8.39中显示的那样使用ServiceSecurityAuditBehavior来通过配置文件开启。
列表8.39 通过ServiceSecurityAuditBehavior配置一个审计安全事件的服务
<serviceSecurityAudit auditLogLocation="Application"
suppressAuditFailure="false"
serviceAuthorizationAuditLevel="SuccessOrFailure"
messageAuthenticationAuditLevel="SuccessOrFailure"/>
auditLogLocation确定了应该用哪个事件日志来审计;可以是默认,应用或者安全。messageAuthenticationAuditLevel和serviceAuthoriationAuditLevel属性可以是None, Success, Failure或者SuccessOrFailure. 最后,suppressAuditFailure属性可以设置为true来阻止当系统失败并记录一条审计消息时抛出一个异常。
使用列表8.39中显示的ServiceSecurityAuditBehavior选项来运行一个服务将导致MessageAuthentication和ServiceAuthorization事件(失败和成功的认证/授权)被写到系统应用日志中。每个入口将包含诸如调用者身份,时间,目标服务URI和协议。任何消息失败都应该被写入事件日志中,然后抛出一个异常。
图片8.40 通过ServiceSecurityAuditBehavior显示的日志
通过将一个审计策略与第九章”诊断”中描述的消息日志和系统跟踪连接起来,你可以更加高效和可信赖的跟踪你的WCF应用的使用情况。