WCF的安全审核

上传人:博****1 文档编号:448474043 上传时间:2023-04-13 格式:DOCX 页数:9 大小:60.86KB
返回 下载 相关 举报
WCF的安全审核_第1页
第1页 / 共9页
WCF的安全审核_第2页
第2页 / 共9页
WCF的安全审核_第3页
第3页 / 共9页
WCF的安全审核_第4页
第4页 / 共9页
WCF的安全审核_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《WCF的安全审核》由会员分享,可在线阅读,更多相关《WCF的安全审核(9页珍藏版)》请在金锄头文库上搜索。

1、WCF的安全审核记录谁在敲打你的门 WCF所谓的安全审核就是针对认证和授权所做的针对EventLog的日志记录。我们不但可以设置进行审核的事件(认证成功/失败,授权成功或失败),还可以选择记录信息被写入的EventLog类型,即应用程序日志(Application)还是安全日志(Security)。WCF的安全审核是通过ServiceSecurityAuditBehavior服务行为实现的。一、ServiceSecurityAuditBehavior服务行为针对WCF安全审核的编程只涉及ServiceSecurityAuditBehavior服务行为。下面给出了定义在ServiceSecuri

2、tyAuditBehavior中具体审核行为进行控制的三个可读写的属性。 1: public sealed class ServiceSecurityAuditBehavior : IServiceBehavior 2: 3: /其他成员 4: public AuditLogLocation AuditLogLocation get; set; 5: public AuditLevel MessageAuthenticationAuditLevel get; set; 6: public AuditLevel ServiceAuthorizationAuditLevel get; set; 7

3、: public bool SuppressAuditFailure get; set; 8: 属性AuditLogLocation代表的是日志信息被写入的EventLog类型,该属性的类型是一个具有如下定义的AuditLogLocation枚举。其中Application和Security分别代表应用程序日志和安全日志。如果选择Default,则最终日志被写入的位置决定于当前的操作系统。如果支持写入安全日志,则选择安全日志类型,否则选择应用程序日志类型。Default是默认选项。 1: public enum AuditLogLocation 2: 3: Default, 4: Applic

4、ation, 5: Security 6: MessageAuthenticationAuditLevel和ServiceAuthorizationAuditLevel两个属性分别代表针对认证和授权审核的级别。所谓审核的级别在这里指的应该在审核事件(认证和授权)在成功或者失败的情况下进行日志记录。审核级别通过具有如下定义的AuditLevel枚举表示。Success和Failure代表分别针对认证/授权成功和失败进行审核日志。SuccessOrFailure则意味着不管认证/授权是成功还是失败,都会进行审核日志。None为默认值,表示不进行审核日记记录。 1: public enum Audi

5、tLevel 2: 3: None, 4: Success, 5: Failure, 6: SuccessOrFailure 7: 布尔类型的SuppressAuditFailure属性表示审核日志失败是否会影响应用本身。在默认的情况下该属性值为True,意味着为认证和授权进行审核日志的时候出现的异常不会对应用(服务)本身造成任何影响。既然是服务行为,我们就可以通过将创建的ServiceSecurityAuditBehavior添加到服务的行为列表的方式来进行安全审核的控制。当然我们还是推荐采用配置的方式来进行安全什么的相关设置。服务行为ServiceSecurityAuditBehavior

6、对应的配置节是。在下面的配置中,我定义了一个包含了ServiceSecurityAuditBehavior的服务行为,并对其四个属性进行了显式设置。 1: 2: 3: 4: 5: 6: 10: 11: 12: 13: 14: 二、安全审核的实现WCF最终进行安全审核的控制信息是从基于某个终结点的分发上下文中获取的。如下面的代码片段所示,对于定义在ServiceSecurityAuditBehavior中的四个属性,在DispatchRuntime中具有相应的定义。WCF在认证和授权成功或者失败的时候,会根据该运行时这四个属性进行相应安全审核日志。 1: public sealed class

7、DispatchRuntime 2: 3: /其他成员 4: public AuditLogLocation SecurityAuditLogLocation get; set; 5: public AuditLevel MessageAuthenticationAuditLevel get; set; 6: public AuditLevel ServiceAuthorizationAuditLevel get; set; 7: public bool SuppressAuditFailure get; set; 8: 而作为服务行为的ServiceSecurityAuditBehavior

8、,最终的目的就是将定义在自身的这四个属性赋值给分发上下文。而具体操作定义在ApplyDispatchBehavior方法上,整个逻辑大体上如下面的代码所示。 1: public sealed class ServiceSecurityAuditBehavior : IServiceBehavior 2: 3: /其他成员 4: public void ApplyDispatchBehavior(ServiceDescription serviceDescription, 5: ServiceHostBase serviceHostBase) 6: 7: foreach (ChannelDisp

9、atcher channelDispatcher in 8: serviceHostBase.ChannelDispatchers) 9: 10: foreach (EndpointDispatcher endpointDispatcher in channelDispatcher.Endpoints) 11: 12: DispatchRuntime dispatchRuntime = endpointDispatcher.DispatchRuntime; 13: dispatchRuntime.SecurityAuditLogLocation = this.AuditLogLocation;

10、 14: dispatchRuntime.MessageAuthenticationAuditLevel = this.MessageAuthenticationAuditLevel; 15: dispatchRuntime.ServiceAuthorizationAuditLevel = this.ServiceAuthorizationAuditLevel; 16: dispatchRuntime.SuppressAuditFailure = this.SuppressAuditFailure; 17: 18: 19: 20: 三、实例演示:如何实施安全审核接下来我们通过一个简单的实例来演

11、示如何进行针对认证和授权的安全审核,并且看看在认证或者授权成功或者失败的情况下,会有怎样的日志信息被记录下来。基于认证的安全审核先来演示针对认证的安全审核。我们还是直接使用一直在使用的计算服务的例子,服务契约和服务的定义我们已经很熟悉了,我们现在只来介绍采用的服务端的配置。从下面的配置可以看出,被寄宿的服务具有为一个基于WS2007HttpBinding的终结点,该绑定采用默认的Windows认证。通过服务行为,我们将安全审核的AuditLogLocation和MessageAuthenticationAuditLevel分别设置为Application和SuccessOrFailure。 1: 2: 3: 4: 6: 9: 10: 11: 12: 13: 14: serviceSecurityAudit audit

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号