e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
173 lines
9.5 KiB
C#
173 lines
9.5 KiB
C#
//------------------------------------------------------------------------------
|
|
// 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;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|