|
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
namespace System.ServiceModel.Configuration
{
using System.ComponentModel;
using System.Configuration;
using System.Runtime;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
public sealed partial class LocalClientSecuritySettingsElement : ServiceModelConfigurationElement
{
public LocalClientSecuritySettingsElement()
{
}
[ConfigurationProperty(ConfigurationStrings.CacheCookies, DefaultValue = SpnegoTokenProvider.defaultClientCacheTokens)]
public bool CacheCookies
{
get { return (bool)base[ConfigurationStrings.CacheCookies]; }
set { base[ConfigurationStrings.CacheCookies] = value; }
}
[ConfigurationProperty(ConfigurationStrings.DetectReplays, DefaultValue = SecurityProtocolFactory.defaultDetectReplays)]
public bool DetectReplays
{
get { return (bool)base[ConfigurationStrings.DetectReplays]; }
set { base[ConfigurationStrings.DetectReplays] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ReplayCacheSize, DefaultValue = SecurityProtocolFactory.defaultMaxCachedNonces)]
[IntegerValidator(MinValue = 1)]
public int ReplayCacheSize
{
get { return (int)base[ConfigurationStrings.ReplayCacheSize]; }
set { base[ConfigurationStrings.ReplayCacheSize] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxClockSkew, DefaultValue = SecurityProtocolFactory.defaultMaxClockSkewString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan MaxClockSkew
{
get { return (TimeSpan)base[ConfigurationStrings.MaxClockSkew]; }
set { base[ConfigurationStrings.MaxClockSkew] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxCookieCachingTime, DefaultValue = SpnegoTokenProvider.defaultClientMaxTokenCachingTimeString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan MaxCookieCachingTime
{
get { return (TimeSpan)base[ConfigurationStrings.MaxCookieCachingTime]; }
set { base[ConfigurationStrings.MaxCookieCachingTime] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ReplayWindow, DefaultValue = SecurityProtocolFactory.defaultReplayWindowString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan ReplayWindow
{
get { return (TimeSpan)base[ConfigurationStrings.ReplayWindow]; }
set { base[ConfigurationStrings.ReplayWindow] = value; }
}
[ConfigurationProperty(ConfigurationStrings.SessionKeyRenewalInterval, DefaultValue = SecuritySessionClientSettings.defaultKeyRenewalIntervalString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan SessionKeyRenewalInterval
{
get { return (TimeSpan)base[ConfigurationStrings.SessionKeyRenewalInterval]; }
set { base[ConfigurationStrings.SessionKeyRenewalInterval] = value; }
}
[ConfigurationProperty(ConfigurationStrings.SessionKeyRolloverInterval, DefaultValue = SecuritySessionClientSettings.defaultKeyRolloverIntervalString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan SessionKeyRolloverInterval
{
get { return (TimeSpan)base[ConfigurationStrings.SessionKeyRolloverInterval]; }
set { base[ConfigurationStrings.SessionKeyRolloverInterval] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ReconnectTransportOnFailure, DefaultValue = System.ServiceModel.Security.SecuritySessionClientSettings.defaultTolerateTransportFailures)]
public bool ReconnectTransportOnFailure
{
get { return (bool)base[ConfigurationStrings.ReconnectTransportOnFailure]; }
set { base[ConfigurationStrings.ReconnectTransportOnFailure] = value; }
}
[ConfigurationProperty(ConfigurationStrings.TimestampValidityDuration, DefaultValue = SecurityProtocolFactory.defaultTimestampValidityDurationString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan TimestampValidityDuration
{
get { return (TimeSpan)base[ConfigurationStrings.TimestampValidityDuration]; }
set { base[ConfigurationStrings.TimestampValidityDuration] = value; }
}
[ConfigurationProperty(ConfigurationStrings.CookieRenewalThresholdPercentage, DefaultValue = SpnegoTokenProvider.defaultServiceTokenValidityThresholdPercentage)]
[IntegerValidator(MinValue = 0, MaxValue = 100)]
public int CookieRenewalThresholdPercentage
{
get { return (int)base[ConfigurationStrings.CookieRenewalThresholdPercentage]; }
set { base[ConfigurationStrings.CookieRenewalThresholdPercentage] = value; }
}
internal void ApplyConfiguration(LocalClientSecuritySettings settings)
{
if (settings == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
}
settings.CacheCookies = this.CacheCookies;
if (PropertyValueOrigin.Default != this.ElementInformation.Properties[ConfigurationStrings.DetectReplays].ValueOrigin)
settings.DetectReplays = this.DetectReplays;
settings.MaxClockSkew = this.MaxClockSkew;
settings.MaxCookieCachingTime = this.MaxCookieCachingTime;
settings.ReconnectTransportOnFailure = this.ReconnectTransportOnFailure;
settings.ReplayCacheSize = this.ReplayCacheSize;
settings.ReplayWindow = this.ReplayWindow;
settings.SessionKeyRenewalInterval = this.SessionKeyRenewalInterval;
settings.SessionKeyRolloverInterval = this.SessionKeyRolloverInterval;
settings.TimestampValidityDuration = this.TimestampValidityDuration;
settings.CookieRenewalThresholdPercentage = this.CookieRenewalThresholdPercentage;
}
internal void InitializeFrom(LocalClientSecuritySettings settings)
{
if (settings == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
}
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CacheCookies, settings.CacheCookies);
this.DetectReplays = settings.DetectReplays; // can't use default value optimization here because ApplyConfiguration looks at ValueOrigin
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxClockSkew, settings.MaxClockSkew);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxCookieCachingTime, settings.MaxCookieCachingTime);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReconnectTransportOnFailure, settings.ReconnectTransportOnFailure);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReplayCacheSize, settings.ReplayCacheSize);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReplayWindow, settings.ReplayWindow);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SessionKeyRenewalInterval, settings.SessionKeyRenewalInterval);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SessionKeyRolloverInterval, settings.SessionKeyRolloverInterval);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TimestampValidityDuration, settings.TimestampValidityDuration);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CookieRenewalThresholdPercentage, settings.CookieRenewalThresholdPercentage);
}
internal void CopyFrom(LocalClientSecuritySettingsElement source)
{
if (source == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
}
this.CacheCookies = source.CacheCookies;
if (PropertyValueOrigin.Default != source.ElementInformation.Properties[ConfigurationStrings.DetectReplays].ValueOrigin)
this.DetectReplays = source.DetectReplays;
this.MaxClockSkew = source.MaxClockSkew;
this.MaxCookieCachingTime = source.MaxCookieCachingTime;
this.ReconnectTransportOnFailure = source.ReconnectTransportOnFailure;
this.ReplayCacheSize = source.ReplayCacheSize;
this.ReplayWindow = source.ReplayWindow;
this.SessionKeyRenewalInterval = source.SessionKeyRenewalInterval;
this.SessionKeyRolloverInterval = source.SessionKeyRolloverInterval;
this.TimestampValidityDuration = source.TimestampValidityDuration;
this.CookieRenewalThresholdPercentage = source.CookieRenewalThresholdPercentage;
}
}
}
|