| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- //-----------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //-----------------------------------------------------------------------------
- namespace System.ServiceModel.Description
- {
- using System;
- using System.Collections.ObjectModel;
- using System.ServiceModel;
- using System.ServiceModel.Channels;
- using System.ServiceModel.Dispatcher;
- public sealed class ServiceSecurityAuditBehavior : IServiceBehavior
- {
- internal const AuditLogLocation defaultAuditLogLocation = AuditLogLocation.Default;
- internal const bool defaultSuppressAuditFailure = true;
- internal const AuditLevel defaultServiceAuthorizationAuditLevel = AuditLevel.None;
- internal const AuditLevel defaultMessageAuthenticationAuditLevel = AuditLevel.None;
- AuditLogLocation auditLogLocation;
- bool suppressAuditFailure;
- AuditLevel serviceAuthorizationAuditLevel;
- AuditLevel messageAuthenticationAuditLevel;
- public ServiceSecurityAuditBehavior()
- {
- this.auditLogLocation = ServiceSecurityAuditBehavior.defaultAuditLogLocation;
- this.suppressAuditFailure = ServiceSecurityAuditBehavior.defaultSuppressAuditFailure;
- this.serviceAuthorizationAuditLevel = ServiceSecurityAuditBehavior.defaultServiceAuthorizationAuditLevel;
- this.messageAuthenticationAuditLevel = ServiceSecurityAuditBehavior.defaultMessageAuthenticationAuditLevel;
- }
- ServiceSecurityAuditBehavior(ServiceSecurityAuditBehavior behavior)
- {
- this.auditLogLocation = behavior.auditLogLocation;
- this.suppressAuditFailure = behavior.suppressAuditFailure;
- this.serviceAuthorizationAuditLevel = behavior.serviceAuthorizationAuditLevel;
- this.messageAuthenticationAuditLevel = behavior.messageAuthenticationAuditLevel;
- }
- public AuditLogLocation AuditLogLocation
- {
- get
- {
- return this.auditLogLocation;
- }
- set
- {
- if (!AuditLogLocationHelper.IsDefined(value))
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
- this.auditLogLocation = value;
- }
- }
- public bool SuppressAuditFailure
- {
- get
- {
- return this.suppressAuditFailure;
- }
- set
- {
- this.suppressAuditFailure = value;
- }
- }
- public AuditLevel ServiceAuthorizationAuditLevel
- {
- get
- {
- return this.serviceAuthorizationAuditLevel;
- }
- set
- {
- if (!AuditLevelHelper.IsDefined(value))
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
- this.serviceAuthorizationAuditLevel = value;
- }
- }
- public AuditLevel MessageAuthenticationAuditLevel
- {
- get
- {
- return this.messageAuthenticationAuditLevel;
- }
- set
- {
- if (!AuditLevelHelper.IsDefined(value))
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
- this.messageAuthenticationAuditLevel = value;
- }
- }
- internal ServiceSecurityAuditBehavior Clone()
- {
- return new ServiceSecurityAuditBehavior(this);
- }
- void IServiceBehavior.Validate(ServiceDescription description, ServiceHostBase serviceHostBase)
- {
- }
- void IServiceBehavior.AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection parameters)
- {
- if (parameters == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("parameters"));
- parameters.Add(this);
- }
- void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase)
- {
- if (description == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("description"));
- if (serviceHostBase == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("serviceHostBase"));
- for (int i = 0; i < serviceHostBase.ChannelDispatchers.Count; i++)
- {
- ChannelDispatcher channelDispatcher = serviceHostBase.ChannelDispatchers[i] as ChannelDispatcher;
- if (channelDispatcher != null)
- {
- foreach (EndpointDispatcher endpointDispatcher in channelDispatcher.Endpoints)
- {
- if (!endpointDispatcher.IsSystemEndpoint)
- {
- DispatchRuntime behavior = endpointDispatcher.DispatchRuntime;
- behavior.SecurityAuditLogLocation = this.auditLogLocation;
- behavior.SuppressAuditFailure = this.suppressAuditFailure;
- behavior.ServiceAuthorizationAuditLevel = this.serviceAuthorizationAuditLevel;
- behavior.MessageAuthenticationAuditLevel = this.messageAuthenticationAuditLevel;
- }
- }
- }
- }
- }
- }
- }
|