e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
149 lines
7.1 KiB
C#
149 lines
7.1 KiB
C#
//------------------------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.ServiceModel.Configuration
|
|
{
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Configuration;
|
|
using System.IdentityModel.Selectors;
|
|
using System.Runtime;
|
|
using System.ServiceModel;
|
|
using System.ServiceModel.Activation;
|
|
using System.ServiceModel.Security;
|
|
|
|
public sealed partial class UserNameServiceElement : ConfigurationElement
|
|
{
|
|
public UserNameServiceElement()
|
|
{
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.UserNamePasswordValidationMode, DefaultValue = UserNamePasswordServiceCredential.DefaultUserNamePasswordValidationMode)]
|
|
[ServiceModelEnumValidator(typeof(UserNamePasswordValidationModeHelper))]
|
|
public UserNamePasswordValidationMode UserNamePasswordValidationMode
|
|
{
|
|
get { return (UserNamePasswordValidationMode)base[ConfigurationStrings.UserNamePasswordValidationMode]; }
|
|
set { base[ConfigurationStrings.UserNamePasswordValidationMode] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.IncludeWindowsGroups, DefaultValue = SspiSecurityTokenProvider.DefaultExtractWindowsGroupClaims)]
|
|
public bool IncludeWindowsGroups
|
|
{
|
|
get { return (bool)base[ConfigurationStrings.IncludeWindowsGroups]; }
|
|
set { base[ConfigurationStrings.IncludeWindowsGroups] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MembershipProviderName, DefaultValue = "")]
|
|
[StringValidator(MinLength = 0)]
|
|
public string MembershipProviderName
|
|
{
|
|
get { return (string)base[ConfigurationStrings.MembershipProviderName]; }
|
|
set
|
|
{
|
|
if (String.IsNullOrEmpty(value))
|
|
{
|
|
value = String.Empty;
|
|
}
|
|
base[ConfigurationStrings.MembershipProviderName] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.CustomUserNamePasswordValidatorType, DefaultValue = "")]
|
|
[StringValidator(MinLength = 0)]
|
|
public string CustomUserNamePasswordValidatorType
|
|
{
|
|
get { return (string)base[ConfigurationStrings.CustomUserNamePasswordValidatorType]; }
|
|
set
|
|
{
|
|
if (String.IsNullOrEmpty(value))
|
|
{
|
|
value = String.Empty;
|
|
}
|
|
base[ConfigurationStrings.CustomUserNamePasswordValidatorType] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.CacheLogonTokens, DefaultValue = UserNamePasswordServiceCredential.DefaultCacheLogonTokens)]
|
|
public bool CacheLogonTokens
|
|
{
|
|
get { return (bool)base[ConfigurationStrings.CacheLogonTokens]; }
|
|
set { base[ConfigurationStrings.CacheLogonTokens] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MaxCachedLogonTokens, DefaultValue = UserNamePasswordServiceCredential.DefaultMaxCachedLogonTokens)]
|
|
[IntegerValidator(MinValue = 1)]
|
|
public int MaxCachedLogonTokens
|
|
{
|
|
get { return (int)base[ConfigurationStrings.MaxCachedLogonTokens]; }
|
|
set { base[ConfigurationStrings.MaxCachedLogonTokens] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.CachedLogonTokenLifetime, DefaultValue = UserNamePasswordServiceCredential.DefaultCachedLogonTokenLifetimeString)]
|
|
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
|
|
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanOneTick)]
|
|
public TimeSpan CachedLogonTokenLifetime
|
|
{
|
|
get { return (TimeSpan)base[ConfigurationStrings.CachedLogonTokenLifetime]; }
|
|
set { base[ConfigurationStrings.CachedLogonTokenLifetime] = value; }
|
|
}
|
|
|
|
public void Copy(UserNameServiceElement from)
|
|
{
|
|
if (this.IsReadOnly())
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigReadOnly)));
|
|
}
|
|
if (null == from)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("from");
|
|
}
|
|
this.UserNamePasswordValidationMode = from.UserNamePasswordValidationMode;
|
|
this.IncludeWindowsGroups = from.IncludeWindowsGroups;
|
|
this.MembershipProviderName = from.MembershipProviderName;
|
|
this.CustomUserNamePasswordValidatorType = from.CustomUserNamePasswordValidatorType;
|
|
this.CacheLogonTokens = from.CacheLogonTokens;
|
|
this.MaxCachedLogonTokens = from.MaxCachedLogonTokens;
|
|
this.CachedLogonTokenLifetime = from.CachedLogonTokenLifetime;
|
|
}
|
|
|
|
internal void ApplyConfiguration(UserNamePasswordServiceCredential userName)
|
|
{
|
|
if (userName == null)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("userName");
|
|
}
|
|
|
|
userName.UserNamePasswordValidationMode = this.UserNamePasswordValidationMode;
|
|
userName.IncludeWindowsGroups = this.IncludeWindowsGroups;
|
|
userName.CacheLogonTokens = this.CacheLogonTokens;
|
|
userName.MaxCachedLogonTokens = this.MaxCachedLogonTokens;
|
|
userName.CachedLogonTokenLifetime = this.CachedLogonTokenLifetime;
|
|
PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
|
|
if (propertyInfo[ConfigurationStrings.MembershipProviderName].ValueOrigin != PropertyValueOrigin.Default)
|
|
{
|
|
userName.MembershipProvider = SystemWebHelper.GetMembershipProvider(this.MembershipProviderName);
|
|
if (userName.MembershipProvider == null)
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.InvalidMembershipProviderSpecifiedInConfig, this.MembershipProviderName)));
|
|
}
|
|
else if (userName.UserNamePasswordValidationMode == UserNamePasswordValidationMode.MembershipProvider)
|
|
{
|
|
userName.MembershipProvider = SystemWebHelper.GetMembershipProvider();
|
|
}
|
|
if (!string.IsNullOrEmpty(this.CustomUserNamePasswordValidatorType))
|
|
{
|
|
Type validatorType = System.Type.GetType(this.CustomUserNamePasswordValidatorType, true);
|
|
if (!typeof(UserNamePasswordValidator).IsAssignableFrom(validatorType))
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(
|
|
SR.GetString(SR.ConfigInvalidUserNamePasswordValidatorType, this.CustomUserNamePasswordValidatorType, typeof(UserNamePasswordValidator).ToString())));
|
|
}
|
|
userName.CustomUserNamePasswordValidator = (UserNamePasswordValidator)Activator.CreateInstance(validatorType);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|