LocalClientSecuritySettingsElement.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. //------------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System.ComponentModel;
  7. using System.Configuration;
  8. using System.Runtime;
  9. using System.ServiceModel.Channels;
  10. using System.ServiceModel.Security;
  11. public sealed partial class LocalClientSecuritySettingsElement : ServiceModelConfigurationElement
  12. {
  13. public LocalClientSecuritySettingsElement()
  14. {
  15. }
  16. [ConfigurationProperty(ConfigurationStrings.CacheCookies, DefaultValue = SpnegoTokenProvider.defaultClientCacheTokens)]
  17. public bool CacheCookies
  18. {
  19. get { return (bool)base[ConfigurationStrings.CacheCookies]; }
  20. set { base[ConfigurationStrings.CacheCookies] = value; }
  21. }
  22. [ConfigurationProperty(ConfigurationStrings.DetectReplays, DefaultValue = SecurityProtocolFactory.defaultDetectReplays)]
  23. public bool DetectReplays
  24. {
  25. get { return (bool)base[ConfigurationStrings.DetectReplays]; }
  26. set { base[ConfigurationStrings.DetectReplays] = value; }
  27. }
  28. [ConfigurationProperty(ConfigurationStrings.ReplayCacheSize, DefaultValue = SecurityProtocolFactory.defaultMaxCachedNonces)]
  29. [IntegerValidator(MinValue = 1)]
  30. public int ReplayCacheSize
  31. {
  32. get { return (int)base[ConfigurationStrings.ReplayCacheSize]; }
  33. set { base[ConfigurationStrings.ReplayCacheSize] = value; }
  34. }
  35. [ConfigurationProperty(ConfigurationStrings.MaxClockSkew, DefaultValue = SecurityProtocolFactory.defaultMaxClockSkewString)]
  36. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  37. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  38. public TimeSpan MaxClockSkew
  39. {
  40. get { return (TimeSpan)base[ConfigurationStrings.MaxClockSkew]; }
  41. set { base[ConfigurationStrings.MaxClockSkew] = value; }
  42. }
  43. [ConfigurationProperty(ConfigurationStrings.MaxCookieCachingTime, DefaultValue = SpnegoTokenProvider.defaultClientMaxTokenCachingTimeString)]
  44. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  45. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  46. public TimeSpan MaxCookieCachingTime
  47. {
  48. get { return (TimeSpan)base[ConfigurationStrings.MaxCookieCachingTime]; }
  49. set { base[ConfigurationStrings.MaxCookieCachingTime] = value; }
  50. }
  51. [ConfigurationProperty(ConfigurationStrings.ReplayWindow, DefaultValue = SecurityProtocolFactory.defaultReplayWindowString)]
  52. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  53. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  54. public TimeSpan ReplayWindow
  55. {
  56. get { return (TimeSpan)base[ConfigurationStrings.ReplayWindow]; }
  57. set { base[ConfigurationStrings.ReplayWindow] = value; }
  58. }
  59. [ConfigurationProperty(ConfigurationStrings.SessionKeyRenewalInterval, DefaultValue = SecuritySessionClientSettings.defaultKeyRenewalIntervalString)]
  60. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  61. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  62. public TimeSpan SessionKeyRenewalInterval
  63. {
  64. get { return (TimeSpan)base[ConfigurationStrings.SessionKeyRenewalInterval]; }
  65. set { base[ConfigurationStrings.SessionKeyRenewalInterval] = value; }
  66. }
  67. [ConfigurationProperty(ConfigurationStrings.SessionKeyRolloverInterval, DefaultValue = SecuritySessionClientSettings.defaultKeyRolloverIntervalString)]
  68. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  69. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  70. public TimeSpan SessionKeyRolloverInterval
  71. {
  72. get { return (TimeSpan)base[ConfigurationStrings.SessionKeyRolloverInterval]; }
  73. set { base[ConfigurationStrings.SessionKeyRolloverInterval] = value; }
  74. }
  75. [ConfigurationProperty(ConfigurationStrings.ReconnectTransportOnFailure, DefaultValue = System.ServiceModel.Security.SecuritySessionClientSettings.defaultTolerateTransportFailures)]
  76. public bool ReconnectTransportOnFailure
  77. {
  78. get { return (bool)base[ConfigurationStrings.ReconnectTransportOnFailure]; }
  79. set { base[ConfigurationStrings.ReconnectTransportOnFailure] = value; }
  80. }
  81. [ConfigurationProperty(ConfigurationStrings.TimestampValidityDuration, DefaultValue = SecurityProtocolFactory.defaultTimestampValidityDurationString)]
  82. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  83. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  84. public TimeSpan TimestampValidityDuration
  85. {
  86. get { return (TimeSpan)base[ConfigurationStrings.TimestampValidityDuration]; }
  87. set { base[ConfigurationStrings.TimestampValidityDuration] = value; }
  88. }
  89. [ConfigurationProperty(ConfigurationStrings.CookieRenewalThresholdPercentage, DefaultValue = SpnegoTokenProvider.defaultServiceTokenValidityThresholdPercentage)]
  90. [IntegerValidator(MinValue = 0, MaxValue = 100)]
  91. public int CookieRenewalThresholdPercentage
  92. {
  93. get { return (int)base[ConfigurationStrings.CookieRenewalThresholdPercentage]; }
  94. set { base[ConfigurationStrings.CookieRenewalThresholdPercentage] = value; }
  95. }
  96. internal void ApplyConfiguration(LocalClientSecuritySettings settings)
  97. {
  98. if (settings == null)
  99. {
  100. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
  101. }
  102. settings.CacheCookies = this.CacheCookies;
  103. if (PropertyValueOrigin.Default != this.ElementInformation.Properties[ConfigurationStrings.DetectReplays].ValueOrigin)
  104. settings.DetectReplays = this.DetectReplays;
  105. settings.MaxClockSkew = this.MaxClockSkew;
  106. settings.MaxCookieCachingTime = this.MaxCookieCachingTime;
  107. settings.ReconnectTransportOnFailure = this.ReconnectTransportOnFailure;
  108. settings.ReplayCacheSize = this.ReplayCacheSize;
  109. settings.ReplayWindow = this.ReplayWindow;
  110. settings.SessionKeyRenewalInterval = this.SessionKeyRenewalInterval;
  111. settings.SessionKeyRolloverInterval = this.SessionKeyRolloverInterval;
  112. settings.TimestampValidityDuration = this.TimestampValidityDuration;
  113. settings.CookieRenewalThresholdPercentage = this.CookieRenewalThresholdPercentage;
  114. }
  115. internal void InitializeFrom(LocalClientSecuritySettings settings)
  116. {
  117. if (settings == null)
  118. {
  119. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
  120. }
  121. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CacheCookies, settings.CacheCookies);
  122. this.DetectReplays = settings.DetectReplays; // can't use default value optimization here because ApplyConfiguration looks at ValueOrigin
  123. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxClockSkew, settings.MaxClockSkew);
  124. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxCookieCachingTime, settings.MaxCookieCachingTime);
  125. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReconnectTransportOnFailure, settings.ReconnectTransportOnFailure);
  126. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReplayCacheSize, settings.ReplayCacheSize);
  127. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReplayWindow, settings.ReplayWindow);
  128. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SessionKeyRenewalInterval, settings.SessionKeyRenewalInterval);
  129. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SessionKeyRolloverInterval, settings.SessionKeyRolloverInterval);
  130. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TimestampValidityDuration, settings.TimestampValidityDuration);
  131. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CookieRenewalThresholdPercentage, settings.CookieRenewalThresholdPercentage);
  132. }
  133. internal void CopyFrom(LocalClientSecuritySettingsElement source)
  134. {
  135. if (source == null)
  136. {
  137. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
  138. }
  139. this.CacheCookies = source.CacheCookies;
  140. if (PropertyValueOrigin.Default != source.ElementInformation.Properties[ConfigurationStrings.DetectReplays].ValueOrigin)
  141. this.DetectReplays = source.DetectReplays;
  142. this.MaxClockSkew = source.MaxClockSkew;
  143. this.MaxCookieCachingTime = source.MaxCookieCachingTime;
  144. this.ReconnectTransportOnFailure = source.ReconnectTransportOnFailure;
  145. this.ReplayCacheSize = source.ReplayCacheSize;
  146. this.ReplayWindow = source.ReplayWindow;
  147. this.SessionKeyRenewalInterval = source.SessionKeyRenewalInterval;
  148. this.SessionKeyRolloverInterval = source.SessionKeyRolloverInterval;
  149. this.TimestampValidityDuration = source.TimestampValidityDuration;
  150. this.CookieRenewalThresholdPercentage = source.CookieRenewalThresholdPercentage;
  151. }
  152. }
  153. }