| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- //-----------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //-----------------------------------------------------------------------------
- namespace System.ServiceModel.Channels
- {
- using System;
- using System.Runtime;
- using System.ServiceModel;
- using System.ServiceModel.Security;
- public sealed class LocalClientSecuritySettings
- {
- bool detectReplays;
- int replayCacheSize;
- TimeSpan replayWindow;
- TimeSpan maxClockSkew;
- bool cacheCookies;
- TimeSpan maxCookieCachingTime;
- TimeSpan sessionKeyRenewalInterval;
- TimeSpan sessionKeyRolloverInterval;
- bool reconnectTransportOnFailure;
- TimeSpan timestampValidityDuration;
- IdentityVerifier identityVerifier;
- int cookieRenewalThresholdPercentage;
- NonceCache nonceCache = null;
- LocalClientSecuritySettings(LocalClientSecuritySettings other)
- {
- this.detectReplays = other.detectReplays;
- this.replayCacheSize = other.replayCacheSize;
- this.replayWindow = other.replayWindow;
- this.maxClockSkew = other.maxClockSkew;
- this.cacheCookies = other.cacheCookies;
- this.maxCookieCachingTime = other.maxCookieCachingTime;
- this.sessionKeyRenewalInterval = other.sessionKeyRenewalInterval;
- this.sessionKeyRolloverInterval = other.sessionKeyRolloverInterval;
- this.reconnectTransportOnFailure = other.reconnectTransportOnFailure;
- this.timestampValidityDuration = other.timestampValidityDuration;
- this.identityVerifier = other.identityVerifier;
- this.cookieRenewalThresholdPercentage = other.cookieRenewalThresholdPercentage;
- this.nonceCache = other.nonceCache;
- }
- public bool DetectReplays
- {
- get
- {
- return this.detectReplays;
- }
- set
- {
- this.detectReplays = value;
- }
- }
- public int ReplayCacheSize
- {
- get
- {
- return this.replayCacheSize;
- }
- set
- {
- if (value < 0)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.ValueMustBeNonNegative)));
- }
- this.replayCacheSize = value;
- }
- }
- public TimeSpan ReplayWindow
- {
- get
- {
- return this.replayWindow;
- }
- set
- {
- if (value < TimeSpan.Zero)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRange0)));
- }
- if (TimeoutHelper.IsTooLarge(value))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
- }
- this.replayWindow = value;
- }
- }
- public TimeSpan MaxClockSkew
- {
- get
- {
- return this.maxClockSkew;
- }
- set
- {
- if (value < TimeSpan.Zero)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRange0)));
- }
- if (TimeoutHelper.IsTooLarge(value))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
- }
- this.maxClockSkew = value;
- }
- }
- public NonceCache NonceCache
- {
- get
- {
- return this.nonceCache;
- }
- set
- {
- this.nonceCache = value;
- }
- }
- public TimeSpan TimestampValidityDuration
- {
- get
- {
- return this.timestampValidityDuration;
- }
- set
- {
- if (value < TimeSpan.Zero)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRange0)));
- }
- if (TimeoutHelper.IsTooLarge(value))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
- }
- this.timestampValidityDuration = value;
- }
- }
- public bool CacheCookies
- {
- get
- {
- return this.cacheCookies;
- }
- set
- {
- this.cacheCookies = value;
- }
- }
- public TimeSpan MaxCookieCachingTime
- {
- get
- {
- return this.maxCookieCachingTime;
- }
- set
- {
- if (value < TimeSpan.Zero)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRange0)));
- }
- if (TimeoutHelper.IsTooLarge(value))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
- }
- this.maxCookieCachingTime = value;
- }
- }
- public int CookieRenewalThresholdPercentage
- {
- get
- {
- return this.cookieRenewalThresholdPercentage;
- }
- set
- {
- if (value < 0 || value > 100)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.ValueMustBeInRange, 0, 100)));
- }
- this.cookieRenewalThresholdPercentage = value;
- }
- }
- public TimeSpan SessionKeyRenewalInterval
- {
- get
- {
- return this.sessionKeyRenewalInterval;
- }
- set
- {
- if (value < TimeSpan.Zero)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRange0)));
- }
- if (TimeoutHelper.IsTooLarge(value))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
- }
- this.sessionKeyRenewalInterval = value;
- }
- }
- public TimeSpan SessionKeyRolloverInterval
- {
- get
- {
- return this.sessionKeyRolloverInterval;
- }
- set
- {
- if (value < TimeSpan.Zero)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRange0)));
- }
- if (TimeoutHelper.IsTooLarge(value))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
- SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
- }
- this.sessionKeyRolloverInterval = value;
- }
- }
- public bool ReconnectTransportOnFailure
- {
- get
- {
- return this.reconnectTransportOnFailure;
- }
- set
- {
- this.reconnectTransportOnFailure = value;
- }
- }
- public IdentityVerifier IdentityVerifier
- {
- get
- {
- return this.identityVerifier;
- }
- set
- {
- this.identityVerifier = value;
- }
- }
- public LocalClientSecuritySettings()
- {
- this.DetectReplays = SecurityProtocolFactory.defaultDetectReplays;
- this.ReplayCacheSize = SecurityProtocolFactory.defaultMaxCachedNonces;
- this.ReplayWindow = SecurityProtocolFactory.defaultReplayWindow;
- this.MaxClockSkew = SecurityProtocolFactory.defaultMaxClockSkew;
- this.TimestampValidityDuration = SecurityProtocolFactory.defaultTimestampValidityDuration;
- this.CacheCookies = IssuanceTokenProviderBase<IssuanceTokenProviderState>.defaultClientCacheTokens;
- this.MaxCookieCachingTime = IssuanceTokenProviderBase<IssuanceTokenProviderState>.DefaultClientMaxTokenCachingTime;
- this.SessionKeyRenewalInterval = SecuritySessionClientSettings.defaultKeyRenewalInterval;
- this.SessionKeyRolloverInterval = SecuritySessionClientSettings.defaultKeyRolloverInterval;
- this.ReconnectTransportOnFailure = SecuritySessionClientSettings.defaultTolerateTransportFailures;
- this.CookieRenewalThresholdPercentage = SpnegoTokenProvider.defaultServiceTokenValidityThresholdPercentage;
- this.IdentityVerifier = IdentityVerifier.CreateDefault();
- this.nonceCache = null;
- }
- public LocalClientSecuritySettings Clone()
- {
- return new LocalClientSecuritySettings(this);
- }
- }
- }
|